diff --git a/Cesar Omar/bashrc b/Cesar Omar/bashrc new file mode 100644 index 0000000..6fc7447 --- /dev/null +++ b/Cesar Omar/bashrc @@ -0,0 +1,35 @@ +b) A bashrc file ( we'll call it bashrc and not .bashrc just so it's easier to commit the file ) + + containing + 1. an alternative to rm ( either an alias or a function + Option below: + + mv filename /tmp + + "This will move the filename to a temp folder" + + + 2. aliases for 3 directories so it's easier to cd to them + + option 1: + alias myfold='cd ~/Files/Scripts/Main' + + option 2: + alias cdrun='( cd "$HOME/somedir" && ./script.sh )' + + option 3: + PATH="$PATH:$HOME/somedir" + + + 3. a function that does something + Option below: + + + + function myfunc() + { + myresult='some value' + } + + myfunc + echo $myresult diff --git a/Cesar Omar/explanation.txt b/Cesar Omar/explanation.txt new file mode 100644 index 0000000..42cffa3 --- /dev/null +++ b/Cesar Omar/explanation.txt @@ -0,0 +1,7 @@ +Greetings Professor, + +Ok, to the best of my knowledge and what i have read online and some other resource materials, "rm" Command is the fastet way to delete a folder."RM" which is short for "remove" is a basic command on Unix operating system. +This command can not also delete folders but the entire contents within the folder. However, the problem can be very critical as one typo may damage the entire system completely. + +Student" +Cesar Omar Sanchez diff --git a/Cesar Omar/prog1.sh b/Cesar Omar/prog1.sh new file mode 100644 index 0000000..e536623 --- /dev/null +++ b/Cesar Omar/prog1.sh @@ -0,0 +1,6 @@ + #!/bin/bash + COUNTER=0 + while [ $COUNTER -lt 10 ]; do + echo The counter is $COUNTER + let COUNTER=COUNTER+1 + done diff --git a/Cesar Omar/prog2.sh b/Cesar Omar/prog2.sh new file mode 100644 index 0000000..d29d32b --- /dev/null +++ b/Cesar Omar/prog2.sh @@ -0,0 +1,5 @@ +#!/bin/bash +for i in {1..5} +do + echo "Welcome $i times" +done diff --git a/Cesar Omar/prog3.sh b/Cesar Omar/prog3.sh new file mode 100644 index 0000000..10e432e --- /dev/null +++ b/Cesar Omar/prog3.sh @@ -0,0 +1 @@ +test 1 -lt 2 && echo "yes" || echo "no" diff --git a/Cesar Omar/prog4.sh b/Cesar Omar/prog4.sh new file mode 100644 index 0000000..f53f1d6 --- /dev/null +++ b/Cesar Omar/prog4.sh @@ -0,0 +1,4 @@ +#! /bin/sh - +printf >&2 'Enter a user name: ' +read user +printf '%s\n' "$user" diff --git a/ExtraCredit/EC_01/Readme.md b/ExtraCredit/EC_01/Readme.md new file mode 100644 index 0000000..d8a8274 --- /dev/null +++ b/ExtraCredit/EC_01/Readme.md @@ -0,0 +1,32 @@ +# Extra credit one + +This homework has three parts + +## Part One + +Create a patterns.txt file to work with the provided script.sh. +The output in the terminal should be: + +4 +3 +2 +1 +0 + +Each iteration of the while loop should delete one line from file.txt based on a regular expression you write into patterns.txt. + +## Part Two +Write 5 different bash one liners that use 3 pipes each. + +## Part Three +Run program.py in such a way that two files are created - stdout.txt and stderr.txt. The contents of stdout.txt should contain +the stdout output for program.py. The contents of stderr.txt should contain the stderr output from program.py. + +## How to submit. +Create a directory under EC_01 with your name. Inside the directory there should be three files: + +1. patterns.txt +2. bashOneliners.sh +3. redirect.sh + +Everyone should have a different #2. diff --git a/ExtraCredit/EC_01/SebastianTapia/backupfile.txt b/ExtraCredit/EC_01/SebastianTapia/backupfile.txt new file mode 100644 index 0000000..c1cc344 --- /dev/null +++ b/ExtraCredit/EC_01/SebastianTapia/backupfile.txt @@ -0,0 +1,5 @@ +22-999-999 +aba +abba +annna +a22-999-999 diff --git a/ExtraCredit/EC_01/SebastianTapia/bashOneliners.sh b/ExtraCredit/EC_01/SebastianTapia/bashOneliners.sh new file mode 100644 index 0000000..86c50ac --- /dev/null +++ b/ExtraCredit/EC_01/SebastianTapia/bashOneliners.sh @@ -0,0 +1,9 @@ +cat test.txt | grep -i a | head | wc + +find -type f -printf "%s\t%p/n" | sort -h -r | head -15 | xargs rm -rf + +find -type f | sort -h | tail -15 | cat + +cat test.txt | grep roxy | xargs mkdir + +cat test.txt | grep where | wc -l | tail -5 diff --git a/ExtraCredit/EC_01/SebastianTapia/file.txt b/ExtraCredit/EC_01/SebastianTapia/file.txt new file mode 100644 index 0000000..26ef616 --- /dev/null +++ b/ExtraCredit/EC_01/SebastianTapia/file.txt @@ -0,0 +1,3 @@ +aba +abba +annna diff --git a/ExtraCredit/EC_01/SebastianTapia/patterns.txt b/ExtraCredit/EC_01/SebastianTapia/patterns.txt new file mode 100644 index 0000000..96c1dd6 --- /dev/null +++ b/ExtraCredit/EC_01/SebastianTapia/patterns.txt @@ -0,0 +1,5 @@ +4 +3 +2 +1 +0 diff --git a/ExtraCredit/EC_01/SebastianTapia/program.py b/ExtraCredit/EC_01/SebastianTapia/program.py new file mode 100644 index 0000000..2ea9e47 --- /dev/null +++ b/ExtraCredit/EC_01/SebastianTapia/program.py @@ -0,0 +1,4 @@ +import sys +sys.stdout.write("Hello.\n") +sys.stderr.write("Where.\n") +sys.stdout.write("World.\n") diff --git a/ExtraCredit/EC_01/SebastianTapia/redirect.sh b/ExtraCredit/EC_01/SebastianTapia/redirect.sh new file mode 100644 index 0000000..f4b18e3 --- /dev/null +++ b/ExtraCredit/EC_01/SebastianTapia/redirect.sh @@ -0,0 +1,2 @@ +echo "The contents of stdout.txt are:" > stdout.txt +echo "The contents of stderr.txt 2 are:" 2> stderr.txt diff --git a/ExtraCredit/EC_01/SebastianTapia/script.sh b/ExtraCredit/EC_01/SebastianTapia/script.sh new file mode 100644 index 0000000..c053f0e --- /dev/null +++ b/ExtraCredit/EC_01/SebastianTapia/script.sh @@ -0,0 +1,11 @@ +#!/bin/bash +INPUT_FILE="file.txt" +TMP_FILE="output.txt" +PAT_FILE="patterns.txt" +while read line +do + noNewLine=$(echo $line | tr -d "\n" ) + grep -v "$noNewLine" $INPUT_FILE > $TMP_FILE + mv $TMP_FILE $INPUT_FILE + wc -l $INPUT_FILE +done < $PAT_FILE diff --git a/ExtraCredit/EC_01/file.txt b/ExtraCredit/EC_01/file.txt new file mode 100644 index 0000000..c1cc344 --- /dev/null +++ b/ExtraCredit/EC_01/file.txt @@ -0,0 +1,5 @@ +22-999-999 +aba +abba +annna +a22-999-999 diff --git a/ExtraCredit/EC_01/program.py b/ExtraCredit/EC_01/program.py new file mode 100644 index 0000000..acd3f99 --- /dev/null +++ b/ExtraCredit/EC_01/program.py @@ -0,0 +1,5 @@ +import sys + +sys.stdout.write("this should go to standard out.\n") +sys.stderr.write("this should go to stderr\n") +sys.stdout.write("this too will go to stdout. It will not be see by standard error.\n") diff --git a/ExtraCredit/EC_01/script.sh b/ExtraCredit/EC_01/script.sh new file mode 100644 index 0000000..d6e356c --- /dev/null +++ b/ExtraCredit/EC_01/script.sh @@ -0,0 +1,15 @@ +# For an example of how this script works, replace file.txt with sample_file.txt. +# then replace patterns.txt with sample_patterns.txt +# You will see the expected output. + +INPUT_FILE="file.txt" +TMP_FILE="output.txt" +PAT_FILE="patterns.txt" + +while read line +do + noNewLine=$( echo $line | tr -d "\n") + grep -v "$noNewLine" $INPUT_FILE > $TMP_FILE + mv $TMP_FILE $INPUT_FILE + wc -l $INPUT_FILE +done < $PAT_FILE diff --git a/ExtraCredit/EC_02/Readme.md b/ExtraCredit/EC_02/Readme.md new file mode 100644 index 0000000..2984324 --- /dev/null +++ b/ExtraCredit/EC_02/Readme.md @@ -0,0 +1,12 @@ +# Extra credit 2 + +Create a cron job to package your /home directory into a .tar once an hour. +The cron job should store the .tar in /backups, and it should be called HOME_MONTH_DAY_YEAR_HOUR +with MONTH, DAY, etc. being appropriately named. + +## Submission guidelines +Make a PR on this repo with your code under EC_02/YourName. +Your PR should contain +1. The cron configuration you have written in a file called mycrontab.txt. +2. Whatever supporting scripts you wrote to make this job happen. +3. An image of `ls -l /backups` after 3 hours. diff --git a/ExtraCredit/findBluetoothMACs.txt b/ExtraCredit/findBluetoothMACs.txt new file mode 100644 index 0000000..8b8cde0 --- /dev/null +++ b/ExtraCredit/findBluetoothMACs.txt @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MidtermExam.txt b/MidtermExam.txt new file mode 100644 index 0000000..ab7cdce --- /dev/null +++ b/MidtermExam.txt @@ -0,0 +1,33 @@ +############################################################## +################### MIDTERM EXAM ############################ +############################################################## + +Write the following programs on paper and turn in when complete. +Solutions should be simple, so there is no partial credit. +Code must run when typed into a bash script. You will have 15 minutes +to complete the exam. + +Problem 1 [50 pts.]: +Write a bash oneliner to delete the 15 largest files under the current directory. +This will use pipes. Explain each step of the command. +You might use the 'find' and 'du' commands. We haven't talked about 'find' yet, and we haven't talked about 'du' - disk-usage since week 1. You can probably google "how to delete the largest files in directory" or something like that to learn about how to do this. Make sure you are deleting FILES and not DIRECTORIES!!! + + +hint to get you started: +https://unix.stackexchange.com/questions/22432/getting-size-with-du-of-files-only + +Problem 2 [50 pts.]: +Write a bash script that outputs the following: + + user@machine$ ./myScript filename.txt + e #####################... ( 26 #s ) + f #####################... ( 25 #s ) + a #####################... ( 24 #s ) + . + . + . ( there should be 26 rows. The last row has a letter and a single # ) + +The program counts the letter frequencies in the input file and outputs 26 rows indicating which letter +is the most common all the way down to which letter is least common. + +No python/ruby/java/etc. You have to use bash and common Linux command line tools. diff --git a/README.md b/README.md index 22340ed..81fd9d1 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,10 @@ Link to register for google cloud: http://google.force.com/GCPEDU?cid=qWo7XK2Z0oaxYu1hqmQFprFpozpEI2OBfS5%2F5XMUZrQZ78fAkXpPb%2BNTtYPg7Tci/ +Another Link to register for another account on google cloud: + +http://google.force.com/GCPEDU?cid=b3%2FFDVCbYP4DKnr0CcCQIv3JcyYBzZ6iYUV9X4A7z7Irl54dRdexsEZRQ9hPlt5p/ + Recommended reading/viewing: In general there is an overabundance of reading material on the internet about Linux/Unix and, as we discussed, you sometimes don't even need to go anywhere to learn - right there in your terminal you have `--help` and `man COMMAND` to get answers about different linux tools. diff --git a/Week10/Readme.md b/Week10/Readme.md new file mode 100644 index 0000000..a099036 --- /dev/null +++ b/Week10/Readme.md @@ -0,0 +1 @@ +TBD diff --git a/Week10/SebastianTapia/Question1/Screen Shot 2019-04-11 at 5.35.25 PM.png b/Week10/SebastianTapia/Question1/Screen Shot 2019-04-11 at 5.35.25 PM.png new file mode 100644 index 0000000..339ea69 Binary files /dev/null and b/Week10/SebastianTapia/Question1/Screen Shot 2019-04-11 at 5.35.25 PM.png differ diff --git a/Week10/SebastianTapia/Question1/coordinates.txt b/Week10/SebastianTapia/Question1/coordinates.txt new file mode 100644 index 0000000..0b46232 --- /dev/null +++ b/Week10/SebastianTapia/Question1/coordinates.txt @@ -0,0 +1,10001 @@ +0 +0.001 +0.002 +0.003 +0.004 +0.005 +0.006 +0.007 +0.008 +0.009 +0.01 +0.011 +0.012 +0.013 +0.014 +0.015 +0.016 +0.017 +0.018 +0.019 +0.02 +0.021 +0.022 +0.023 +0.024 +0.025 +0.026 +0.027 +0.028 +0.029 +0.03 +0.031 +0.032 +0.033 +0.034 +0.035 +0.036 +0.037 +0.038 +0.039 +0.04 +0.041 +0.042 +0.043 +0.044 +0.045 +0.046 +0.047 +0.048 +0.049 +0.05 +0.051 +0.052 +0.053 +0.054 +0.055 +0.056 +0.057 +0.058 +0.059 +0.06 +0.061 +0.062 +0.063 +0.064 +0.065 +0.066 +0.067 +0.068 +0.069 +0.07 +0.071 +0.072 +0.073 +0.074 +0.075 +0.076 +0.077 +0.078 +0.079 +0.08 +0.081 +0.082 +0.083 +0.084 +0.085 +0.086 +0.087 +0.088 +0.089 +0.09 +0.091 +0.092 +0.093 +0.094 +0.095 +0.096 +0.097 +0.098 +0.099 +0.1 +0.101 +0.102 +0.103 +0.104 +0.105 +0.106 +0.107 +0.108 +0.109 +0.11 +0.111 +0.112 +0.113 +0.114 +0.115 +0.116 +0.117 +0.118 +0.119 +0.12 +0.121 +0.122 +0.123 +0.124 +0.125 +0.126 +0.127 +0.128 +0.129 +0.13 +0.131 +0.132 +0.133 +0.134 +0.135 +0.136 +0.137 +0.138 +0.139 +0.14 +0.141 +0.142 +0.143 +0.144 +0.145 +0.146 +0.147 +0.148 +0.149 +0.15 +0.151 +0.152 +0.153 +0.154 +0.155 +0.156 +0.157 +0.158 +0.159 +0.16 +0.161 +0.162 +0.163 +0.164 +0.165 +0.166 +0.167 +0.168 +0.169 +0.17 +0.171 +0.172 +0.173 +0.174 +0.175 +0.176 +0.177 +0.178 +0.179 +0.18 +0.181 +0.182 +0.183 +0.184 +0.185 +0.186 +0.187 +0.188 +0.189 +0.19 +0.191 +0.192 +0.193 +0.194 +0.195 +0.196 +0.197 +0.198 +0.199 +0.2 +0.201 +0.202 +0.203 +0.204 +0.205 +0.206 +0.207 +0.208 +0.209 +0.21 +0.211 +0.212 +0.213 +0.214 +0.215 +0.216 +0.217 +0.218 +0.219 +0.22 +0.221 +0.222 +0.223 +0.224 +0.225 +0.226 +0.227 +0.228 +0.229 +0.23 +0.231 +0.232 +0.233 +0.234 +0.235 +0.236 +0.237 +0.238 +0.239 +0.24 +0.241 +0.242 +0.243 +0.244 +0.245 +0.246 +0.247 +0.248 +0.249 +0.25 +0.251 +0.252 +0.253 +0.254 +0.255 +0.256 +0.257 +0.258 +0.259 +0.26 +0.261 +0.262 +0.263 +0.264 +0.265 +0.266 +0.267 +0.268 +0.269 +0.27 +0.271 +0.272 +0.273 +0.274 +0.275 +0.276 +0.277 +0.278 +0.279 +0.28 +0.281 +0.282 +0.283 +0.284 +0.285 +0.286 +0.287 +0.288 +0.289 +0.29 +0.291 +0.292 +0.293 +0.294 +0.295 +0.296 +0.297 +0.298 +0.299 +0.3 +0.301 +0.302 +0.303 +0.304 +0.305 +0.306 +0.307 +0.308 +0.309 +0.31 +0.311 +0.312 +0.313 +0.314 +0.315 +0.316 +0.317 +0.318 +0.319 +0.32 +0.321 +0.322 +0.323 +0.324 +0.325 +0.326 +0.327 +0.328 +0.329 +0.33 +0.331 +0.332 +0.333 +0.334 +0.335 +0.336 +0.337 +0.338 +0.339 +0.34 +0.341 +0.342 +0.343 +0.344 +0.345 +0.346 +0.347 +0.348 +0.349 +0.35 +0.351 +0.352 +0.353 +0.354 +0.355 +0.356 +0.357 +0.358 +0.359 +0.36 +0.361 +0.362 +0.363 +0.364 +0.365 +0.366 +0.367 +0.368 +0.369 +0.37 +0.371 +0.372 +0.373 +0.374 +0.375 +0.376 +0.377 +0.378 +0.379 +0.38 +0.381 +0.382 +0.383 +0.384 +0.385 +0.386 +0.387 +0.388 +0.389 +0.39 +0.391 +0.392 +0.393 +0.394 +0.395 +0.396 +0.397 +0.398 +0.399 +0.4 +0.401 +0.402 +0.403 +0.404 +0.405 +0.406 +0.407 +0.408 +0.409 +0.41 +0.411 +0.412 +0.413 +0.414 +0.415 +0.416 +0.417 +0.418 +0.419 +0.42 +0.421 +0.422 +0.423 +0.424 +0.425 +0.426 +0.427 +0.428 +0.429 +0.43 +0.431 +0.432 +0.433 +0.434 +0.435 +0.436 +0.437 +0.438 +0.439 +0.44 +0.441 +0.442 +0.443 +0.444 +0.445 +0.446 +0.447 +0.448 +0.449 +0.45 +0.451 +0.452 +0.453 +0.454 +0.455 +0.456 +0.457 +0.458 +0.459 +0.46 +0.461 +0.462 +0.463 +0.464 +0.465 +0.466 +0.467 +0.468 +0.469 +0.47 +0.471 +0.472 +0.473 +0.474 +0.475 +0.476 +0.477 +0.478 +0.479 +0.48 +0.481 +0.482 +0.483 +0.484 +0.485 +0.486 +0.487 +0.488 +0.489 +0.49 +0.491 +0.492 +0.493 +0.494 +0.495 +0.496 +0.497 +0.498 +0.499 +0.5 +0.501 +0.502 +0.503 +0.504 +0.505 +0.506 +0.507 +0.508 +0.509 +0.51 +0.511 +0.512 +0.513 +0.514 +0.515 +0.516 +0.517 +0.518 +0.519 +0.52 +0.521 +0.522 +0.523 +0.524 +0.525 +0.526 +0.527 +0.528 +0.529 +0.53 +0.531 +0.532 +0.533 +0.534 +0.535 +0.536 +0.537 +0.538 +0.539 +0.54 +0.541 +0.542 +0.543 +0.544 +0.545 +0.546 +0.547 +0.548 +0.549 +0.55 +0.551 +0.552 +0.553 +0.554 +0.555 +0.556 +0.557 +0.558 +0.559 +0.56 +0.561 +0.562 +0.563 +0.564 +0.565 +0.566 +0.567 +0.568 +0.569 +0.57 +0.571 +0.572 +0.573 +0.574 +0.575 +0.576 +0.577 +0.578 +0.579 +0.58 +0.581 +0.582 +0.583 +0.584 +0.585 +0.586 +0.587 +0.588 +0.589 +0.59 +0.591 +0.592 +0.593 +0.594 +0.595 +0.596 +0.597 +0.598 +0.599 +0.6 +0.601 +0.602 +0.603 +0.604 +0.605 +0.606 +0.607 +0.608 +0.609 +0.61 +0.611 +0.612 +0.613 +0.614 +0.615 +0.616 +0.617 +0.618 +0.619 +0.62 +0.621 +0.622 +0.623 +0.624 +0.625 +0.626 +0.627 +0.628 +0.629 +0.63 +0.631 +0.632 +0.633 +0.634 +0.635 +0.636 +0.637 +0.638 +0.639 +0.64 +0.641 +0.642 +0.643 +0.644 +0.645 +0.646 +0.647 +0.648 +0.649 +0.65 +0.651 +0.652 +0.653 +0.654 +0.655 +0.656 +0.657 +0.658 +0.659 +0.66 +0.661 +0.662 +0.663 +0.664 +0.665 +0.666 +0.667 +0.668 +0.669 +0.67 +0.671 +0.672 +0.673 +0.674 +0.675 +0.676 +0.677 +0.678 +0.679 +0.68 +0.681 +0.682 +0.683 +0.684 +0.685 +0.686 +0.687 +0.688 +0.689 +0.69 +0.691 +0.692 +0.693 +0.694 +0.695 +0.696 +0.697 +0.698 +0.699 +0.7 +0.701 +0.702 +0.703 +0.704 +0.705 +0.706 +0.707 +0.708 +0.709 +0.71 +0.711 +0.712 +0.713 +0.714 +0.715 +0.716 +0.717 +0.718 +0.719 +0.72 +0.721 +0.722 +0.723 +0.724 +0.725 +0.726 +0.727 +0.728 +0.729 +0.73 +0.731 +0.732 +0.733 +0.734 +0.735 +0.736 +0.737 +0.738 +0.739 +0.74 +0.741 +0.742 +0.743 +0.744 +0.745 +0.746 +0.747 +0.748 +0.749 +0.75 +0.751 +0.752 +0.753 +0.754 +0.755 +0.756 +0.757 +0.758 +0.759 +0.76 +0.761 +0.762 +0.763 +0.764 +0.765 +0.766 +0.767 +0.768 +0.769 +0.77 +0.771 +0.772 +0.773 +0.774 +0.775 +0.776 +0.777 +0.778 +0.779 +0.78 +0.781 +0.782 +0.783 +0.784 +0.785 +0.786 +0.787 +0.788 +0.789 +0.79 +0.791 +0.792 +0.793 +0.794 +0.795 +0.796 +0.797 +0.798 +0.799 +0.8 +0.801 +0.802 +0.803 +0.804 +0.805 +0.806 +0.807 +0.808 +0.809 +0.81 +0.811 +0.812 +0.813 +0.814 +0.815 +0.816 +0.817 +0.818 +0.819 +0.82 +0.821 +0.822 +0.823 +0.824 +0.825 +0.826 +0.827 +0.828 +0.829 +0.83 +0.831 +0.832 +0.833 +0.834 +0.835 +0.836 +0.837 +0.838 +0.839 +0.84 +0.841 +0.842 +0.843 +0.844 +0.845 +0.846 +0.847 +0.848 +0.849 +0.85 +0.851 +0.852 +0.853 +0.854 +0.855 +0.856 +0.857 +0.858 +0.859 +0.86 +0.861 +0.862 +0.863 +0.864 +0.865 +0.866 +0.867 +0.868 +0.869 +0.87 +0.871 +0.872 +0.873 +0.874 +0.875 +0.876 +0.877 +0.878 +0.879 +0.88 +0.881 +0.882 +0.883 +0.884 +0.885 +0.886 +0.887 +0.888 +0.889 +0.89 +0.891 +0.892 +0.893 +0.894 +0.895 +0.896 +0.897 +0.898 +0.899 +0.9 +0.901 +0.902 +0.903 +0.904 +0.905 +0.906 +0.907 +0.908 +0.909 +0.91 +0.911 +0.912 +0.913 +0.914 +0.915 +0.916 +0.917 +0.918 +0.919 +0.92 +0.921 +0.922 +0.923 +0.924 +0.925 +0.926 +0.927 +0.928 +0.929 +0.93 +0.931 +0.932 +0.933 +0.934 +0.935 +0.936 +0.937 +0.938 +0.939 +0.94 +0.941 +0.942 +0.943 +0.944 +0.945 +0.946 +0.947 +0.948 +0.949 +0.95 +0.951 +0.952 +0.953 +0.954 +0.955 +0.956 +0.957 +0.958 +0.959 +0.96 +0.961 +0.962 +0.963 +0.964 +0.965 +0.966 +0.967 +0.968 +0.969 +0.97 +0.971 +0.972 +0.973 +0.974 +0.975 +0.976 +0.977 +0.978 +0.979 +0.98 +0.981 +0.982 +0.983 +0.984 +0.985 +0.986 +0.987 +0.988 +0.989 +0.99 +0.991 +0.992 +0.993 +0.994 +0.995 +0.996 +0.997 +0.998 +0.999 +1 +1.001 +1.002 +1.003 +1.004 +1.005 +1.006 +1.007 +1.008 +1.009 +1.01 +1.011 +1.012 +1.013 +1.014 +1.015 +1.016 +1.017 +1.018 +1.019 +1.02 +1.021 +1.022 +1.023 +1.024 +1.025 +1.026 +1.027 +1.028 +1.029 +1.03 +1.031 +1.032 +1.033 +1.034 +1.035 +1.036 +1.037 +1.038 +1.039 +1.04 +1.041 +1.042 +1.043 +1.044 +1.045 +1.046 +1.047 +1.048 +1.049 +1.05 +1.051 +1.052 +1.053 +1.054 +1.055 +1.056 +1.057 +1.058 +1.059 +1.06 +1.061 +1.062 +1.063 +1.064 +1.065 +1.066 +1.067 +1.068 +1.069 +1.07 +1.071 +1.072 +1.073 +1.074 +1.075 +1.076 +1.077 +1.078 +1.079 +1.08 +1.081 +1.082 +1.083 +1.084 +1.085 +1.086 +1.087 +1.088 +1.089 +1.09 +1.091 +1.092 +1.093 +1.094 +1.095 +1.096 +1.097 +1.098 +1.099 +1.1 +1.101 +1.102 +1.103 +1.104 +1.105 +1.106 +1.107 +1.108 +1.109 +1.11 +1.111 +1.112 +1.113 +1.114 +1.115 +1.116 +1.117 +1.118 +1.119 +1.12 +1.121 +1.122 +1.123 +1.124 +1.125 +1.126 +1.127 +1.128 +1.129 +1.13 +1.131 +1.132 +1.133 +1.134 +1.135 +1.136 +1.137 +1.138 +1.139 +1.14 +1.141 +1.142 +1.143 +1.144 +1.145 +1.146 +1.147 +1.148 +1.149 +1.15 +1.151 +1.152 +1.153 +1.154 +1.155 +1.156 +1.157 +1.158 +1.159 +1.16 +1.161 +1.162 +1.163 +1.164 +1.165 +1.166 +1.167 +1.168 +1.169 +1.17 +1.171 +1.172 +1.173 +1.174 +1.175 +1.176 +1.177 +1.178 +1.179 +1.18 +1.181 +1.182 +1.183 +1.184 +1.185 +1.186 +1.187 +1.188 +1.189 +1.19 +1.191 +1.192 +1.193 +1.194 +1.195 +1.196 +1.197 +1.198 +1.199 +1.2 +1.201 +1.202 +1.203 +1.204 +1.205 +1.206 +1.207 +1.208 +1.209 +1.21 +1.211 +1.212 +1.213 +1.214 +1.215 +1.216 +1.217 +1.218 +1.219 +1.22 +1.221 +1.222 +1.223 +1.224 +1.225 +1.226 +1.227 +1.228 +1.229 +1.23 +1.231 +1.232 +1.233 +1.234 +1.235 +1.236 +1.237 +1.238 +1.239 +1.24 +1.241 +1.242 +1.243 +1.244 +1.245 +1.246 +1.247 +1.248 +1.249 +1.25 +1.251 +1.252 +1.253 +1.254 +1.255 +1.256 +1.257 +1.258 +1.259 +1.26 +1.261 +1.262 +1.263 +1.264 +1.265 +1.266 +1.267 +1.268 +1.269 +1.27 +1.271 +1.272 +1.273 +1.274 +1.275 +1.276 +1.277 +1.278 +1.279 +1.28 +1.281 +1.282 +1.283 +1.284 +1.285 +1.286 +1.287 +1.288 +1.289 +1.29 +1.291 +1.292 +1.293 +1.294 +1.295 +1.296 +1.297 +1.298 +1.299 +1.3 +1.301 +1.302 +1.303 +1.304 +1.305 +1.306 +1.307 +1.308 +1.309 +1.31 +1.311 +1.312 +1.313 +1.314 +1.315 +1.316 +1.317 +1.318 +1.319 +1.32 +1.321 +1.322 +1.323 +1.324 +1.325 +1.326 +1.327 +1.328 +1.329 +1.33 +1.331 +1.332 +1.333 +1.334 +1.335 +1.336 +1.337 +1.338 +1.339 +1.34 +1.341 +1.342 +1.343 +1.344 +1.345 +1.346 +1.347 +1.348 +1.349 +1.35 +1.351 +1.352 +1.353 +1.354 +1.355 +1.356 +1.357 +1.358 +1.359 +1.36 +1.361 +1.362 +1.363 +1.364 +1.365 +1.366 +1.367 +1.368 +1.369 +1.37 +1.371 +1.372 +1.373 +1.374 +1.375 +1.376 +1.377 +1.378 +1.379 +1.38 +1.381 +1.382 +1.383 +1.384 +1.385 +1.386 +1.387 +1.388 +1.389 +1.39 +1.391 +1.392 +1.393 +1.394 +1.395 +1.396 +1.397 +1.398 +1.399 +1.4 +1.401 +1.402 +1.403 +1.404 +1.405 +1.406 +1.407 +1.408 +1.409 +1.41 +1.411 +1.412 +1.413 +1.414 +1.415 +1.416 +1.417 +1.418 +1.419 +1.42 +1.421 +1.422 +1.423 +1.424 +1.425 +1.426 +1.427 +1.428 +1.429 +1.43 +1.431 +1.432 +1.433 +1.434 +1.435 +1.436 +1.437 +1.438 +1.439 +1.44 +1.441 +1.442 +1.443 +1.444 +1.445 +1.446 +1.447 +1.448 +1.449 +1.45 +1.451 +1.452 +1.453 +1.454 +1.455 +1.456 +1.457 +1.458 +1.459 +1.46 +1.461 +1.462 +1.463 +1.464 +1.465 +1.466 +1.467 +1.468 +1.469 +1.47 +1.471 +1.472 +1.473 +1.474 +1.475 +1.476 +1.477 +1.478 +1.479 +1.48 +1.481 +1.482 +1.483 +1.484 +1.485 +1.486 +1.487 +1.488 +1.489 +1.49 +1.491 +1.492 +1.493 +1.494 +1.495 +1.496 +1.497 +1.498 +1.499 +1.5 +1.501 +1.502 +1.503 +1.504 +1.505 +1.506 +1.507 +1.508 +1.509 +1.51 +1.511 +1.512 +1.513 +1.514 +1.515 +1.516 +1.517 +1.518 +1.519 +1.52 +1.521 +1.522 +1.523 +1.524 +1.525 +1.526 +1.527 +1.528 +1.529 +1.53 +1.531 +1.532 +1.533 +1.534 +1.535 +1.536 +1.537 +1.538 +1.539 +1.54 +1.541 +1.542 +1.543 +1.544 +1.545 +1.546 +1.547 +1.548 +1.549 +1.55 +1.551 +1.552 +1.553 +1.554 +1.555 +1.556 +1.557 +1.558 +1.559 +1.56 +1.561 +1.562 +1.563 +1.564 +1.565 +1.566 +1.567 +1.568 +1.569 +1.57 +1.571 +1.572 +1.573 +1.574 +1.575 +1.576 +1.577 +1.578 +1.579 +1.58 +1.581 +1.582 +1.583 +1.584 +1.585 +1.586 +1.587 +1.588 +1.589 +1.59 +1.591 +1.592 +1.593 +1.594 +1.595 +1.596 +1.597 +1.598 +1.599 +1.6 +1.601 +1.602 +1.603 +1.604 +1.605 +1.606 +1.607 +1.608 +1.609 +1.61 +1.611 +1.612 +1.613 +1.614 +1.615 +1.616 +1.617 +1.618 +1.619 +1.62 +1.621 +1.622 +1.623 +1.624 +1.625 +1.626 +1.627 +1.628 +1.629 +1.63 +1.631 +1.632 +1.633 +1.634 +1.635 +1.636 +1.637 +1.638 +1.639 +1.64 +1.641 +1.642 +1.643 +1.644 +1.645 +1.646 +1.647 +1.648 +1.649 +1.65 +1.651 +1.652 +1.653 +1.654 +1.655 +1.656 +1.657 +1.658 +1.659 +1.66 +1.661 +1.662 +1.663 +1.664 +1.665 +1.666 +1.667 +1.668 +1.669 +1.67 +1.671 +1.672 +1.673 +1.674 +1.675 +1.676 +1.677 +1.678 +1.679 +1.68 +1.681 +1.682 +1.683 +1.684 +1.685 +1.686 +1.687 +1.688 +1.689 +1.69 +1.691 +1.692 +1.693 +1.694 +1.695 +1.696 +1.697 +1.698 +1.699 +1.7 +1.701 +1.702 +1.703 +1.704 +1.705 +1.706 +1.707 +1.708 +1.709 +1.71 +1.711 +1.712 +1.713 +1.714 +1.715 +1.716 +1.717 +1.718 +1.719 +1.72 +1.721 +1.722 +1.723 +1.724 +1.725 +1.726 +1.727 +1.728 +1.729 +1.73 +1.731 +1.732 +1.733 +1.734 +1.735 +1.736 +1.737 +1.738 +1.739 +1.74 +1.741 +1.742 +1.743 +1.744 +1.745 +1.746 +1.747 +1.748 +1.749 +1.75 +1.751 +1.752 +1.753 +1.754 +1.755 +1.756 +1.757 +1.758 +1.759 +1.76 +1.761 +1.762 +1.763 +1.764 +1.765 +1.766 +1.767 +1.768 +1.769 +1.77 +1.771 +1.772 +1.773 +1.774 +1.775 +1.776 +1.777 +1.778 +1.779 +1.78 +1.781 +1.782 +1.783 +1.784 +1.785 +1.786 +1.787 +1.788 +1.789 +1.79 +1.791 +1.792 +1.793 +1.794 +1.795 +1.796 +1.797 +1.798 +1.799 +1.8 +1.801 +1.802 +1.803 +1.804 +1.805 +1.806 +1.807 +1.808 +1.809 +1.81 +1.811 +1.812 +1.813 +1.814 +1.815 +1.816 +1.817 +1.818 +1.819 +1.82 +1.821 +1.822 +1.823 +1.824 +1.825 +1.826 +1.827 +1.828 +1.829 +1.83 +1.831 +1.832 +1.833 +1.834 +1.835 +1.836 +1.837 +1.838 +1.839 +1.84 +1.841 +1.842 +1.843 +1.844 +1.845 +1.846 +1.847 +1.848 +1.849 +1.85 +1.851 +1.852 +1.853 +1.854 +1.855 +1.856 +1.857 +1.858 +1.859 +1.86 +1.861 +1.862 +1.863 +1.864 +1.865 +1.866 +1.867 +1.868 +1.869 +1.87 +1.871 +1.872 +1.873 +1.874 +1.875 +1.876 +1.877 +1.878 +1.879 +1.88 +1.881 +1.882 +1.883 +1.884 +1.885 +1.886 +1.887 +1.888 +1.889 +1.89 +1.891 +1.892 +1.893 +1.894 +1.895 +1.896 +1.897 +1.898 +1.899 +1.9 +1.901 +1.902 +1.903 +1.904 +1.905 +1.906 +1.907 +1.908 +1.909 +1.91 +1.911 +1.912 +1.913 +1.914 +1.915 +1.916 +1.917 +1.918 +1.919 +1.92 +1.921 +1.922 +1.923 +1.924 +1.925 +1.926 +1.927 +1.928 +1.929 +1.93 +1.931 +1.932 +1.933 +1.934 +1.935 +1.936 +1.937 +1.938 +1.939 +1.94 +1.941 +1.942 +1.943 +1.944 +1.945 +1.946 +1.947 +1.948 +1.949 +1.95 +1.951 +1.952 +1.953 +1.954 +1.955 +1.956 +1.957 +1.958 +1.959 +1.96 +1.961 +1.962 +1.963 +1.964 +1.965 +1.966 +1.967 +1.968 +1.969 +1.97 +1.971 +1.972 +1.973 +1.974 +1.975 +1.976 +1.977 +1.978 +1.979 +1.98 +1.981 +1.982 +1.983 +1.984 +1.985 +1.986 +1.987 +1.988 +1.989 +1.99 +1.991 +1.992 +1.993 +1.994 +1.995 +1.996 +1.997 +1.998 +1.999 +2 +2.001 +2.002 +2.003 +2.004 +2.005 +2.006 +2.007 +2.008 +2.009 +2.01 +2.011 +2.012 +2.013 +2.014 +2.015 +2.016 +2.017 +2.018 +2.019 +2.02 +2.021 +2.022 +2.023 +2.024 +2.025 +2.026 +2.027 +2.028 +2.029 +2.03 +2.031 +2.032 +2.033 +2.034 +2.035 +2.036 +2.037 +2.038 +2.039 +2.04 +2.041 +2.042 +2.043 +2.044 +2.045 +2.046 +2.047 +2.048 +2.049 +2.05 +2.051 +2.052 +2.053 +2.054 +2.055 +2.056 +2.057 +2.058 +2.059 +2.06 +2.061 +2.062 +2.063 +2.064 +2.065 +2.066 +2.067 +2.068 +2.069 +2.07 +2.071 +2.072 +2.073 +2.074 +2.075 +2.076 +2.077 +2.078 +2.079 +2.08 +2.081 +2.082 +2.083 +2.084 +2.085 +2.086 +2.087 +2.088 +2.089 +2.09 +2.091 +2.092 +2.093 +2.094 +2.095 +2.096 +2.097 +2.098 +2.099 +2.1 +2.101 +2.102 +2.103 +2.104 +2.105 +2.106 +2.107 +2.108 +2.109 +2.11 +2.111 +2.112 +2.113 +2.114 +2.115 +2.116 +2.117 +2.118 +2.119 +2.12 +2.121 +2.122 +2.123 +2.124 +2.125 +2.126 +2.127 +2.128 +2.129 +2.13 +2.131 +2.132 +2.133 +2.134 +2.135 +2.136 +2.137 +2.138 +2.139 +2.14 +2.141 +2.142 +2.143 +2.144 +2.145 +2.146 +2.147 +2.148 +2.149 +2.15 +2.151 +2.152 +2.153 +2.154 +2.155 +2.156 +2.157 +2.158 +2.159 +2.16 +2.161 +2.162 +2.163 +2.164 +2.165 +2.166 +2.167 +2.168 +2.169 +2.17 +2.171 +2.172 +2.173 +2.174 +2.175 +2.176 +2.177 +2.178 +2.179 +2.18 +2.181 +2.182 +2.183 +2.184 +2.185 +2.186 +2.187 +2.188 +2.189 +2.19 +2.191 +2.192 +2.193 +2.194 +2.195 +2.196 +2.197 +2.198 +2.199 +2.2 +2.201 +2.202 +2.203 +2.204 +2.205 +2.206 +2.207 +2.208 +2.209 +2.21 +2.211 +2.212 +2.213 +2.214 +2.215 +2.216 +2.217 +2.218 +2.219 +2.22 +2.221 +2.222 +2.223 +2.224 +2.225 +2.226 +2.227 +2.228 +2.229 +2.23 +2.231 +2.232 +2.233 +2.234 +2.235 +2.236 +2.237 +2.238 +2.239 +2.24 +2.241 +2.242 +2.243 +2.244 +2.245 +2.246 +2.247 +2.248 +2.249 +2.25 +2.251 +2.252 +2.253 +2.254 +2.255 +2.256 +2.257 +2.258 +2.259 +2.26 +2.261 +2.262 +2.263 +2.264 +2.265 +2.266 +2.267 +2.268 +2.269 +2.27 +2.271 +2.272 +2.273 +2.274 +2.275 +2.276 +2.277 +2.278 +2.279 +2.28 +2.281 +2.282 +2.283 +2.284 +2.285 +2.286 +2.287 +2.288 +2.289 +2.29 +2.291 +2.292 +2.293 +2.294 +2.295 +2.296 +2.297 +2.298 +2.299 +2.3 +2.301 +2.302 +2.303 +2.304 +2.305 +2.306 +2.307 +2.308 +2.309 +2.31 +2.311 +2.312 +2.313 +2.314 +2.315 +2.316 +2.317 +2.318 +2.319 +2.32 +2.321 +2.322 +2.323 +2.324 +2.325 +2.326 +2.327 +2.328 +2.329 +2.33 +2.331 +2.332 +2.333 +2.334 +2.335 +2.336 +2.337 +2.338 +2.339 +2.34 +2.341 +2.342 +2.343 +2.344 +2.345 +2.346 +2.347 +2.348 +2.349 +2.35 +2.351 +2.352 +2.353 +2.354 +2.355 +2.356 +2.357 +2.358 +2.359 +2.36 +2.361 +2.362 +2.363 +2.364 +2.365 +2.366 +2.367 +2.368 +2.369 +2.37 +2.371 +2.372 +2.373 +2.374 +2.375 +2.376 +2.377 +2.378 +2.379 +2.38 +2.381 +2.382 +2.383 +2.384 +2.385 +2.386 +2.387 +2.388 +2.389 +2.39 +2.391 +2.392 +2.393 +2.394 +2.395 +2.396 +2.397 +2.398 +2.399 +2.4 +2.401 +2.402 +2.403 +2.404 +2.405 +2.406 +2.407 +2.408 +2.409 +2.41 +2.411 +2.412 +2.413 +2.414 +2.415 +2.416 +2.417 +2.418 +2.419 +2.42 +2.421 +2.422 +2.423 +2.424 +2.425 +2.426 +2.427 +2.428 +2.429 +2.43 +2.431 +2.432 +2.433 +2.434 +2.435 +2.436 +2.437 +2.438 +2.439 +2.44 +2.441 +2.442 +2.443 +2.444 +2.445 +2.446 +2.447 +2.448 +2.449 +2.45 +2.451 +2.452 +2.453 +2.454 +2.455 +2.456 +2.457 +2.458 +2.459 +2.46 +2.461 +2.462 +2.463 +2.464 +2.465 +2.466 +2.467 +2.468 +2.469 +2.47 +2.471 +2.472 +2.473 +2.474 +2.475 +2.476 +2.477 +2.478 +2.479 +2.48 +2.481 +2.482 +2.483 +2.484 +2.485 +2.486 +2.487 +2.488 +2.489 +2.49 +2.491 +2.492 +2.493 +2.494 +2.495 +2.496 +2.497 +2.498 +2.499 +2.5 +2.501 +2.502 +2.503 +2.504 +2.505 +2.506 +2.507 +2.508 +2.509 +2.51 +2.511 +2.512 +2.513 +2.514 +2.515 +2.516 +2.517 +2.518 +2.519 +2.52 +2.521 +2.522 +2.523 +2.524 +2.525 +2.526 +2.527 +2.528 +2.529 +2.53 +2.531 +2.532 +2.533 +2.534 +2.535 +2.536 +2.537 +2.538 +2.539 +2.54 +2.541 +2.542 +2.543 +2.544 +2.545 +2.546 +2.547 +2.548 +2.549 +2.55 +2.551 +2.552 +2.553 +2.554 +2.555 +2.556 +2.557 +2.558 +2.559 +2.56 +2.561 +2.562 +2.563 +2.564 +2.565 +2.566 +2.567 +2.568 +2.569 +2.57 +2.571 +2.572 +2.573 +2.574 +2.575 +2.576 +2.577 +2.578 +2.579 +2.58 +2.581 +2.582 +2.583 +2.584 +2.585 +2.586 +2.587 +2.588 +2.589 +2.59 +2.591 +2.592 +2.593 +2.594 +2.595 +2.596 +2.597 +2.598 +2.599 +2.6 +2.601 +2.602 +2.603 +2.604 +2.605 +2.606 +2.607 +2.608 +2.609 +2.61 +2.611 +2.612 +2.613 +2.614 +2.615 +2.616 +2.617 +2.618 +2.619 +2.62 +2.621 +2.622 +2.623 +2.624 +2.625 +2.626 +2.627 +2.628 +2.629 +2.63 +2.631 +2.632 +2.633 +2.634 +2.635 +2.636 +2.637 +2.638 +2.639 +2.64 +2.641 +2.642 +2.643 +2.644 +2.645 +2.646 +2.647 +2.648 +2.649 +2.65 +2.651 +2.652 +2.653 +2.654 +2.655 +2.656 +2.657 +2.658 +2.659 +2.66 +2.661 +2.662 +2.663 +2.664 +2.665 +2.666 +2.667 +2.668 +2.669 +2.67 +2.671 +2.672 +2.673 +2.674 +2.675 +2.676 +2.677 +2.678 +2.679 +2.68 +2.681 +2.682 +2.683 +2.684 +2.685 +2.686 +2.687 +2.688 +2.689 +2.69 +2.691 +2.692 +2.693 +2.694 +2.695 +2.696 +2.697 +2.698 +2.699 +2.7 +2.701 +2.702 +2.703 +2.704 +2.705 +2.706 +2.707 +2.708 +2.709 +2.71 +2.711 +2.712 +2.713 +2.714 +2.715 +2.716 +2.717 +2.718 +2.719 +2.72 +2.721 +2.722 +2.723 +2.724 +2.725 +2.726 +2.727 +2.728 +2.729 +2.73 +2.731 +2.732 +2.733 +2.734 +2.735 +2.736 +2.737 +2.738 +2.739 +2.74 +2.741 +2.742 +2.743 +2.744 +2.745 +2.746 +2.747 +2.748 +2.749 +2.75 +2.751 +2.752 +2.753 +2.754 +2.755 +2.756 +2.757 +2.758 +2.759 +2.76 +2.761 +2.762 +2.763 +2.764 +2.765 +2.766 +2.767 +2.768 +2.769 +2.77 +2.771 +2.772 +2.773 +2.774 +2.775 +2.776 +2.777 +2.778 +2.779 +2.78 +2.781 +2.782 +2.783 +2.784 +2.785 +2.786 +2.787 +2.788 +2.789 +2.79 +2.791 +2.792 +2.793 +2.794 +2.795 +2.796 +2.797 +2.798 +2.799 +2.8 +2.801 +2.802 +2.803 +2.804 +2.805 +2.806 +2.807 +2.808 +2.809 +2.81 +2.811 +2.812 +2.813 +2.814 +2.815 +2.816 +2.817 +2.818 +2.819 +2.82 +2.821 +2.822 +2.823 +2.824 +2.825 +2.826 +2.827 +2.828 +2.829 +2.83 +2.831 +2.832 +2.833 +2.834 +2.835 +2.836 +2.837 +2.838 +2.839 +2.84 +2.841 +2.842 +2.843 +2.844 +2.845 +2.846 +2.847 +2.848 +2.849 +2.85 +2.851 +2.852 +2.853 +2.854 +2.855 +2.856 +2.857 +2.858 +2.859 +2.86 +2.861 +2.862 +2.863 +2.864 +2.865 +2.866 +2.867 +2.868 +2.869 +2.87 +2.871 +2.872 +2.873 +2.874 +2.875 +2.876 +2.877 +2.878 +2.879 +2.88 +2.881 +2.882 +2.883 +2.884 +2.885 +2.886 +2.887 +2.888 +2.889 +2.89 +2.891 +2.892 +2.893 +2.894 +2.895 +2.896 +2.897 +2.898 +2.899 +2.9 +2.901 +2.902 +2.903 +2.904 +2.905 +2.906 +2.907 +2.908 +2.909 +2.91 +2.911 +2.912 +2.913 +2.914 +2.915 +2.916 +2.917 +2.918 +2.919 +2.92 +2.921 +2.922 +2.923 +2.924 +2.925 +2.926 +2.927 +2.928 +2.929 +2.93 +2.931 +2.932 +2.933 +2.934 +2.935 +2.936 +2.937 +2.938 +2.939 +2.94 +2.941 +2.942 +2.943 +2.944 +2.945 +2.946 +2.947 +2.948 +2.949 +2.95 +2.951 +2.952 +2.953 +2.954 +2.955 +2.956 +2.957 +2.958 +2.959 +2.96 +2.961 +2.962 +2.963 +2.964 +2.965 +2.966 +2.967 +2.968 +2.969 +2.97 +2.971 +2.972 +2.973 +2.974 +2.975 +2.976 +2.977 +2.978 +2.979 +2.98 +2.981 +2.982 +2.983 +2.984 +2.985 +2.986 +2.987 +2.988 +2.989 +2.99 +2.991 +2.992 +2.993 +2.994 +2.995 +2.996 +2.997 +2.998 +2.999 +3 +3.001 +3.002 +3.003 +3.004 +3.005 +3.006 +3.007 +3.008 +3.009 +3.01 +3.011 +3.012 +3.013 +3.014 +3.015 +3.016 +3.017 +3.018 +3.019 +3.02 +3.021 +3.022 +3.023 +3.024 +3.025 +3.026 +3.027 +3.028 +3.029 +3.03 +3.031 +3.032 +3.033 +3.034 +3.035 +3.036 +3.037 +3.038 +3.039 +3.04 +3.041 +3.042 +3.043 +3.044 +3.045 +3.046 +3.047 +3.048 +3.049 +3.05 +3.051 +3.052 +3.053 +3.054 +3.055 +3.056 +3.057 +3.058 +3.059 +3.06 +3.061 +3.062 +3.063 +3.064 +3.065 +3.066 +3.067 +3.068 +3.069 +3.07 +3.071 +3.072 +3.073 +3.074 +3.075 +3.076 +3.077 +3.078 +3.079 +3.08 +3.081 +3.082 +3.083 +3.084 +3.085 +3.086 +3.087 +3.088 +3.089 +3.09 +3.091 +3.092 +3.093 +3.094 +3.095 +3.096 +3.097 +3.098 +3.099 +3.1 +3.101 +3.102 +3.103 +3.104 +3.105 +3.106 +3.107 +3.108 +3.109 +3.11 +3.111 +3.112 +3.113 +3.114 +3.115 +3.116 +3.117 +3.118 +3.119 +3.12 +3.121 +3.122 +3.123 +3.124 +3.125 +3.126 +3.127 +3.128 +3.129 +3.13 +3.131 +3.132 +3.133 +3.134 +3.135 +3.136 +3.137 +3.138 +3.139 +3.14 +3.141 +3.142 +3.143 +3.144 +3.145 +3.146 +3.147 +3.148 +3.149 +3.15 +3.151 +3.152 +3.153 +3.154 +3.155 +3.156 +3.157 +3.158 +3.159 +3.16 +3.161 +3.162 +3.163 +3.164 +3.165 +3.166 +3.167 +3.168 +3.169 +3.17 +3.171 +3.172 +3.173 +3.174 +3.175 +3.176 +3.177 +3.178 +3.179 +3.18 +3.181 +3.182 +3.183 +3.184 +3.185 +3.186 +3.187 +3.188 +3.189 +3.19 +3.191 +3.192 +3.193 +3.194 +3.195 +3.196 +3.197 +3.198 +3.199 +3.2 +3.201 +3.202 +3.203 +3.204 +3.205 +3.206 +3.207 +3.208 +3.209 +3.21 +3.211 +3.212 +3.213 +3.214 +3.215 +3.216 +3.217 +3.218 +3.219 +3.22 +3.221 +3.222 +3.223 +3.224 +3.225 +3.226 +3.227 +3.228 +3.229 +3.23 +3.231 +3.232 +3.233 +3.234 +3.235 +3.236 +3.237 +3.238 +3.239 +3.24 +3.241 +3.242 +3.243 +3.244 +3.245 +3.246 +3.247 +3.248 +3.249 +3.25 +3.251 +3.252 +3.253 +3.254 +3.255 +3.256 +3.257 +3.258 +3.259 +3.26 +3.261 +3.262 +3.263 +3.264 +3.265 +3.266 +3.267 +3.268 +3.269 +3.27 +3.271 +3.272 +3.273 +3.274 +3.275 +3.276 +3.277 +3.278 +3.279 +3.28 +3.281 +3.282 +3.283 +3.284 +3.285 +3.286 +3.287 +3.288 +3.289 +3.29 +3.291 +3.292 +3.293 +3.294 +3.295 +3.296 +3.297 +3.298 +3.299 +3.3 +3.301 +3.302 +3.303 +3.304 +3.305 +3.306 +3.307 +3.308 +3.309 +3.31 +3.311 +3.312 +3.313 +3.314 +3.315 +3.316 +3.317 +3.318 +3.319 +3.32 +3.321 +3.322 +3.323 +3.324 +3.325 +3.326 +3.327 +3.328 +3.329 +3.33 +3.331 +3.332 +3.333 +3.334 +3.335 +3.336 +3.337 +3.338 +3.339 +3.34 +3.341 +3.342 +3.343 +3.344 +3.345 +3.346 +3.347 +3.348 +3.349 +3.35 +3.351 +3.352 +3.353 +3.354 +3.355 +3.356 +3.357 +3.358 +3.359 +3.36 +3.361 +3.362 +3.363 +3.364 +3.365 +3.366 +3.367 +3.368 +3.369 +3.37 +3.371 +3.372 +3.373 +3.374 +3.375 +3.376 +3.377 +3.378 +3.379 +3.38 +3.381 +3.382 +3.383 +3.384 +3.385 +3.386 +3.387 +3.388 +3.389 +3.39 +3.391 +3.392 +3.393 +3.394 +3.395 +3.396 +3.397 +3.398 +3.399 +3.4 +3.401 +3.402 +3.403 +3.404 +3.405 +3.406 +3.407 +3.408 +3.409 +3.41 +3.411 +3.412 +3.413 +3.414 +3.415 +3.416 +3.417 +3.418 +3.419 +3.42 +3.421 +3.422 +3.423 +3.424 +3.425 +3.426 +3.427 +3.428 +3.429 +3.43 +3.431 +3.432 +3.433 +3.434 +3.435 +3.436 +3.437 +3.438 +3.439 +3.44 +3.441 +3.442 +3.443 +3.444 +3.445 +3.446 +3.447 +3.448 +3.449 +3.45 +3.451 +3.452 +3.453 +3.454 +3.455 +3.456 +3.457 +3.458 +3.459 +3.46 +3.461 +3.462 +3.463 +3.464 +3.465 +3.466 +3.467 +3.468 +3.469 +3.47 +3.471 +3.472 +3.473 +3.474 +3.475 +3.476 +3.477 +3.478 +3.479 +3.48 +3.481 +3.482 +3.483 +3.484 +3.485 +3.486 +3.487 +3.488 +3.489 +3.49 +3.491 +3.492 +3.493 +3.494 +3.495 +3.496 +3.497 +3.498 +3.499 +3.5 +3.501 +3.502 +3.503 +3.504 +3.505 +3.506 +3.507 +3.508 +3.509 +3.51 +3.511 +3.512 +3.513 +3.514 +3.515 +3.516 +3.517 +3.518 +3.519 +3.52 +3.521 +3.522 +3.523 +3.524 +3.525 +3.526 +3.527 +3.528 +3.529 +3.53 +3.531 +3.532 +3.533 +3.534 +3.535 +3.536 +3.537 +3.538 +3.539 +3.54 +3.541 +3.542 +3.543 +3.544 +3.545 +3.546 +3.547 +3.548 +3.549 +3.55 +3.551 +3.552 +3.553 +3.554 +3.555 +3.556 +3.557 +3.558 +3.559 +3.56 +3.561 +3.562 +3.563 +3.564 +3.565 +3.566 +3.567 +3.568 +3.569 +3.57 +3.571 +3.572 +3.573 +3.574 +3.575 +3.576 +3.577 +3.578 +3.579 +3.58 +3.581 +3.582 +3.583 +3.584 +3.585 +3.586 +3.587 +3.588 +3.589 +3.59 +3.591 +3.592 +3.593 +3.594 +3.595 +3.596 +3.597 +3.598 +3.599 +3.6 +3.601 +3.602 +3.603 +3.604 +3.605 +3.606 +3.607 +3.608 +3.609 +3.61 +3.611 +3.612 +3.613 +3.614 +3.615 +3.616 +3.617 +3.618 +3.619 +3.62 +3.621 +3.622 +3.623 +3.624 +3.625 +3.626 +3.627 +3.628 +3.629 +3.63 +3.631 +3.632 +3.633 +3.634 +3.635 +3.636 +3.637 +3.638 +3.639 +3.64 +3.641 +3.642 +3.643 +3.644 +3.645 +3.646 +3.647 +3.648 +3.649 +3.65 +3.651 +3.652 +3.653 +3.654 +3.655 +3.656 +3.657 +3.658 +3.659 +3.66 +3.661 +3.662 +3.663 +3.664 +3.665 +3.666 +3.667 +3.668 +3.669 +3.67 +3.671 +3.672 +3.673 +3.674 +3.675 +3.676 +3.677 +3.678 +3.679 +3.68 +3.681 +3.682 +3.683 +3.684 +3.685 +3.686 +3.687 +3.688 +3.689 +3.69 +3.691 +3.692 +3.693 +3.694 +3.695 +3.696 +3.697 +3.698 +3.699 +3.7 +3.701 +3.702 +3.703 +3.704 +3.705 +3.706 +3.707 +3.708 +3.709 +3.71 +3.711 +3.712 +3.713 +3.714 +3.715 +3.716 +3.717 +3.718 +3.719 +3.72 +3.721 +3.722 +3.723 +3.724 +3.725 +3.726 +3.727 +3.728 +3.729 +3.73 +3.731 +3.732 +3.733 +3.734 +3.735 +3.736 +3.737 +3.738 +3.739 +3.74 +3.741 +3.742 +3.743 +3.744 +3.745 +3.746 +3.747 +3.748 +3.749 +3.75 +3.751 +3.752 +3.753 +3.754 +3.755 +3.756 +3.757 +3.758 +3.759 +3.76 +3.761 +3.762 +3.763 +3.764 +3.765 +3.766 +3.767 +3.768 +3.769 +3.77 +3.771 +3.772 +3.773 +3.774 +3.775 +3.776 +3.777 +3.778 +3.779 +3.78 +3.781 +3.782 +3.783 +3.784 +3.785 +3.786 +3.787 +3.788 +3.789 +3.79 +3.791 +3.792 +3.793 +3.794 +3.795 +3.796 +3.797 +3.798 +3.799 +3.8 +3.801 +3.802 +3.803 +3.804 +3.805 +3.806 +3.807 +3.808 +3.809 +3.81 +3.811 +3.812 +3.813 +3.814 +3.815 +3.816 +3.817 +3.818 +3.819 +3.82 +3.821 +3.822 +3.823 +3.824 +3.825 +3.826 +3.827 +3.828 +3.829 +3.83 +3.831 +3.832 +3.833 +3.834 +3.835 +3.836 +3.837 +3.838 +3.839 +3.84 +3.841 +3.842 +3.843 +3.844 +3.845 +3.846 +3.847 +3.848 +3.849 +3.85 +3.851 +3.852 +3.853 +3.854 +3.855 +3.856 +3.857 +3.858 +3.859 +3.86 +3.861 +3.862 +3.863 +3.864 +3.865 +3.866 +3.867 +3.868 +3.869 +3.87 +3.871 +3.872 +3.873 +3.874 +3.875 +3.876 +3.877 +3.878 +3.879 +3.88 +3.881 +3.882 +3.883 +3.884 +3.885 +3.886 +3.887 +3.888 +3.889 +3.89 +3.891 +3.892 +3.893 +3.894 +3.895 +3.896 +3.897 +3.898 +3.899 +3.9 +3.901 +3.902 +3.903 +3.904 +3.905 +3.906 +3.907 +3.908 +3.909 +3.91 +3.911 +3.912 +3.913 +3.914 +3.915 +3.916 +3.917 +3.918 +3.919 +3.92 +3.921 +3.922 +3.923 +3.924 +3.925 +3.926 +3.927 +3.928 +3.929 +3.93 +3.931 +3.932 +3.933 +3.934 +3.935 +3.936 +3.937 +3.938 +3.939 +3.94 +3.941 +3.942 +3.943 +3.944 +3.945 +3.946 +3.947 +3.948 +3.949 +3.95 +3.951 +3.952 +3.953 +3.954 +3.955 +3.956 +3.957 +3.958 +3.959 +3.96 +3.961 +3.962 +3.963 +3.964 +3.965 +3.966 +3.967 +3.968 +3.969 +3.97 +3.971 +3.972 +3.973 +3.974 +3.975 +3.976 +3.977 +3.978 +3.979 +3.98 +3.981 +3.982 +3.983 +3.984 +3.985 +3.986 +3.987 +3.988 +3.989 +3.99 +3.991 +3.992 +3.993 +3.994 +3.995 +3.996 +3.997 +3.998 +3.999 +4 +4.001 +4.002 +4.003 +4.004 +4.005 +4.006 +4.007 +4.008 +4.009 +4.01 +4.011 +4.012 +4.013 +4.014 +4.015 +4.016 +4.017 +4.018 +4.019 +4.02 +4.021 +4.022 +4.023 +4.024 +4.025 +4.026 +4.027 +4.028 +4.029 +4.03 +4.031 +4.032 +4.033 +4.034 +4.035 +4.036 +4.037 +4.038 +4.039 +4.04 +4.041 +4.042 +4.043 +4.044 +4.045 +4.046 +4.047 +4.048 +4.049 +4.05 +4.051 +4.052 +4.053 +4.054 +4.055 +4.056 +4.057 +4.058 +4.059 +4.06 +4.061 +4.062 +4.063 +4.064 +4.065 +4.066 +4.067 +4.068 +4.069 +4.07 +4.071 +4.072 +4.073 +4.074 +4.075 +4.076 +4.077 +4.078 +4.079 +4.08 +4.081 +4.082 +4.083 +4.084 +4.085 +4.086 +4.087 +4.088 +4.089 +4.09 +4.091 +4.092 +4.093 +4.094 +4.095 +4.096 +4.097 +4.098 +4.099 +4.1 +4.101 +4.102 +4.103 +4.104 +4.105 +4.106 +4.107 +4.108 +4.109 +4.11 +4.111 +4.112 +4.113 +4.114 +4.115 +4.116 +4.117 +4.118 +4.119 +4.12 +4.121 +4.122 +4.123 +4.124 +4.125 +4.126 +4.127 +4.128 +4.129 +4.13 +4.131 +4.132 +4.133 +4.134 +4.135 +4.136 +4.137 +4.138 +4.139 +4.14 +4.141 +4.142 +4.143 +4.144 +4.145 +4.146 +4.147 +4.148 +4.149 +4.15 +4.151 +4.152 +4.153 +4.154 +4.155 +4.156 +4.157 +4.158 +4.159 +4.16 +4.161 +4.162 +4.163 +4.164 +4.165 +4.166 +4.167 +4.168 +4.169 +4.17 +4.171 +4.172 +4.173 +4.174 +4.175 +4.176 +4.177 +4.178 +4.179 +4.18 +4.181 +4.182 +4.183 +4.184 +4.185 +4.186 +4.187 +4.188 +4.189 +4.19 +4.191 +4.192 +4.193 +4.194 +4.195 +4.196 +4.197 +4.198 +4.199 +4.2 +4.201 +4.202 +4.203 +4.204 +4.205 +4.206 +4.207 +4.208 +4.209 +4.21 +4.211 +4.212 +4.213 +4.214 +4.215 +4.216 +4.217 +4.218 +4.219 +4.22 +4.221 +4.222 +4.223 +4.224 +4.225 +4.226 +4.227 +4.228 +4.229 +4.23 +4.231 +4.232 +4.233 +4.234 +4.235 +4.236 +4.237 +4.238 +4.239 +4.24 +4.241 +4.242 +4.243 +4.244 +4.245 +4.246 +4.247 +4.248 +4.249 +4.25 +4.251 +4.252 +4.253 +4.254 +4.255 +4.256 +4.257 +4.258 +4.259 +4.26 +4.261 +4.262 +4.263 +4.264 +4.265 +4.266 +4.267 +4.268 +4.269 +4.27 +4.271 +4.272 +4.273 +4.274 +4.275 +4.276 +4.277 +4.278 +4.279 +4.28 +4.281 +4.282 +4.283 +4.284 +4.285 +4.286 +4.287 +4.288 +4.289 +4.29 +4.291 +4.292 +4.293 +4.294 +4.295 +4.296 +4.297 +4.298 +4.299 +4.3 +4.301 +4.302 +4.303 +4.304 +4.305 +4.306 +4.307 +4.308 +4.309 +4.31 +4.311 +4.312 +4.313 +4.314 +4.315 +4.316 +4.317 +4.318 +4.319 +4.32 +4.321 +4.322 +4.323 +4.324 +4.325 +4.326 +4.327 +4.328 +4.329 +4.33 +4.331 +4.332 +4.333 +4.334 +4.335 +4.336 +4.337 +4.338 +4.339 +4.34 +4.341 +4.342 +4.343 +4.344 +4.345 +4.346 +4.347 +4.348 +4.349 +4.35 +4.351 +4.352 +4.353 +4.354 +4.355 +4.356 +4.357 +4.358 +4.359 +4.36 +4.361 +4.362 +4.363 +4.364 +4.365 +4.366 +4.367 +4.368 +4.369 +4.37 +4.371 +4.372 +4.373 +4.374 +4.375 +4.376 +4.377 +4.378 +4.379 +4.38 +4.381 +4.382 +4.383 +4.384 +4.385 +4.386 +4.387 +4.388 +4.389 +4.39 +4.391 +4.392 +4.393 +4.394 +4.395 +4.396 +4.397 +4.398 +4.399 +4.4 +4.401 +4.402 +4.403 +4.404 +4.405 +4.406 +4.407 +4.408 +4.409 +4.41 +4.411 +4.412 +4.413 +4.414 +4.415 +4.416 +4.417 +4.418 +4.419 +4.42 +4.421 +4.422 +4.423 +4.424 +4.425 +4.426 +4.427 +4.428 +4.429 +4.43 +4.431 +4.432 +4.433 +4.434 +4.435 +4.436 +4.437 +4.438 +4.439 +4.44 +4.441 +4.442 +4.443 +4.444 +4.445 +4.446 +4.447 +4.448 +4.449 +4.45 +4.451 +4.452 +4.453 +4.454 +4.455 +4.456 +4.457 +4.458 +4.459 +4.46 +4.461 +4.462 +4.463 +4.464 +4.465 +4.466 +4.467 +4.468 +4.469 +4.47 +4.471 +4.472 +4.473 +4.474 +4.475 +4.476 +4.477 +4.478 +4.479 +4.48 +4.481 +4.482 +4.483 +4.484 +4.485 +4.486 +4.487 +4.488 +4.489 +4.49 +4.491 +4.492 +4.493 +4.494 +4.495 +4.496 +4.497 +4.498 +4.499 +4.5 +4.501 +4.502 +4.503 +4.504 +4.505 +4.506 +4.507 +4.508 +4.509 +4.51 +4.511 +4.512 +4.513 +4.514 +4.515 +4.516 +4.517 +4.518 +4.519 +4.52 +4.521 +4.522 +4.523 +4.524 +4.525 +4.526 +4.527 +4.528 +4.529 +4.53 +4.531 +4.532 +4.533 +4.534 +4.535 +4.536 +4.537 +4.538 +4.539 +4.54 +4.541 +4.542 +4.543 +4.544 +4.545 +4.546 +4.547 +4.548 +4.549 +4.55 +4.551 +4.552 +4.553 +4.554 +4.555 +4.556 +4.557 +4.558 +4.559 +4.56 +4.561 +4.562 +4.563 +4.564 +4.565 +4.566 +4.567 +4.568 +4.569 +4.57 +4.571 +4.572 +4.573 +4.574 +4.575 +4.576 +4.577 +4.578 +4.579 +4.58 +4.581 +4.582 +4.583 +4.584 +4.585 +4.586 +4.587 +4.588 +4.589 +4.59 +4.591 +4.592 +4.593 +4.594 +4.595 +4.596 +4.597 +4.598 +4.599 +4.6 +4.601 +4.602 +4.603 +4.604 +4.605 +4.606 +4.607 +4.608 +4.609 +4.61 +4.611 +4.612 +4.613 +4.614 +4.615 +4.616 +4.617 +4.618 +4.619 +4.62 +4.621 +4.622 +4.623 +4.624 +4.625 +4.626 +4.627 +4.628 +4.629 +4.63 +4.631 +4.632 +4.633 +4.634 +4.635 +4.636 +4.637 +4.638 +4.639 +4.64 +4.641 +4.642 +4.643 +4.644 +4.645 +4.646 +4.647 +4.648 +4.649 +4.65 +4.651 +4.652 +4.653 +4.654 +4.655 +4.656 +4.657 +4.658 +4.659 +4.66 +4.661 +4.662 +4.663 +4.664 +4.665 +4.666 +4.667 +4.668 +4.669 +4.67 +4.671 +4.672 +4.673 +4.674 +4.675 +4.676 +4.677 +4.678 +4.679 +4.68 +4.681 +4.682 +4.683 +4.684 +4.685 +4.686 +4.687 +4.688 +4.689 +4.69 +4.691 +4.692 +4.693 +4.694 +4.695 +4.696 +4.697 +4.698 +4.699 +4.7 +4.701 +4.702 +4.703 +4.704 +4.705 +4.706 +4.707 +4.708 +4.709 +4.71 +4.711 +4.712 +4.713 +4.714 +4.715 +4.716 +4.717 +4.718 +4.719 +4.72 +4.721 +4.722 +4.723 +4.724 +4.725 +4.726 +4.727 +4.728 +4.729 +4.73 +4.731 +4.732 +4.733 +4.734 +4.735 +4.736 +4.737 +4.738 +4.739 +4.74 +4.741 +4.742 +4.743 +4.744 +4.745 +4.746 +4.747 +4.748 +4.749 +4.75 +4.751 +4.752 +4.753 +4.754 +4.755 +4.756 +4.757 +4.758 +4.759 +4.76 +4.761 +4.762 +4.763 +4.764 +4.765 +4.766 +4.767 +4.768 +4.769 +4.77 +4.771 +4.772 +4.773 +4.774 +4.775 +4.776 +4.777 +4.778 +4.779 +4.78 +4.781 +4.782 +4.783 +4.784 +4.785 +4.786 +4.787 +4.788 +4.789 +4.79 +4.791 +4.792 +4.793 +4.794 +4.795 +4.796 +4.797 +4.798 +4.799 +4.8 +4.801 +4.802 +4.803 +4.804 +4.805 +4.806 +4.807 +4.808 +4.809 +4.81 +4.811 +4.812 +4.813 +4.814 +4.815 +4.816 +4.817 +4.818 +4.819 +4.82 +4.821 +4.822 +4.823 +4.824 +4.825 +4.826 +4.827 +4.828 +4.829 +4.83 +4.831 +4.832 +4.833 +4.834 +4.835 +4.836 +4.837 +4.838 +4.839 +4.84 +4.841 +4.842 +4.843 +4.844 +4.845 +4.846 +4.847 +4.848 +4.849 +4.85 +4.851 +4.852 +4.853 +4.854 +4.855 +4.856 +4.857 +4.858 +4.859 +4.86 +4.861 +4.862 +4.863 +4.864 +4.865 +4.866 +4.867 +4.868 +4.869 +4.87 +4.871 +4.872 +4.873 +4.874 +4.875 +4.876 +4.877 +4.878 +4.879 +4.88 +4.881 +4.882 +4.883 +4.884 +4.885 +4.886 +4.887 +4.888 +4.889 +4.89 +4.891 +4.892 +4.893 +4.894 +4.895 +4.896 +4.897 +4.898 +4.899 +4.9 +4.901 +4.902 +4.903 +4.904 +4.905 +4.906 +4.907 +4.908 +4.909 +4.91 +4.911 +4.912 +4.913 +4.914 +4.915 +4.916 +4.917 +4.918 +4.919 +4.92 +4.921 +4.922 +4.923 +4.924 +4.925 +4.926 +4.927 +4.928 +4.929 +4.93 +4.931 +4.932 +4.933 +4.934 +4.935 +4.936 +4.937 +4.938 +4.939 +4.94 +4.941 +4.942 +4.943 +4.944 +4.945 +4.946 +4.947 +4.948 +4.949 +4.95 +4.951 +4.952 +4.953 +4.954 +4.955 +4.956 +4.957 +4.958 +4.959 +4.96 +4.961 +4.962 +4.963 +4.964 +4.965 +4.966 +4.967 +4.968 +4.969 +4.97 +4.971 +4.972 +4.973 +4.974 +4.975 +4.976 +4.977 +4.978 +4.979 +4.98 +4.981 +4.982 +4.983 +4.984 +4.985 +4.986 +4.987 +4.988 +4.989 +4.99 +4.991 +4.992 +4.993 +4.994 +4.995 +4.996 +4.997 +4.998 +4.999 +5 +5.001 +5.002 +5.003 +5.004 +5.005 +5.006 +5.007 +5.008 +5.009 +5.01 +5.011 +5.012 +5.013 +5.014 +5.015 +5.016 +5.017 +5.018 +5.019 +5.02 +5.021 +5.022 +5.023 +5.024 +5.025 +5.026 +5.027 +5.028 +5.029 +5.03 +5.031 +5.032 +5.033 +5.034 +5.035 +5.036 +5.037 +5.038 +5.039 +5.04 +5.041 +5.042 +5.043 +5.044 +5.045 +5.046 +5.047 +5.048 +5.049 +5.05 +5.051 +5.052 +5.053 +5.054 +5.055 +5.056 +5.057 +5.058 +5.059 +5.06 +5.061 +5.062 +5.063 +5.064 +5.065 +5.066 +5.067 +5.068 +5.069 +5.07 +5.071 +5.072 +5.073 +5.074 +5.075 +5.076 +5.077 +5.078 +5.079 +5.08 +5.081 +5.082 +5.083 +5.084 +5.085 +5.086 +5.087 +5.088 +5.089 +5.09 +5.091 +5.092 +5.093 +5.094 +5.095 +5.096 +5.097 +5.098 +5.099 +5.1 +5.101 +5.102 +5.103 +5.104 +5.105 +5.106 +5.107 +5.108 +5.109 +5.11 +5.111 +5.112 +5.113 +5.114 +5.115 +5.116 +5.117 +5.118 +5.119 +5.12 +5.121 +5.122 +5.123 +5.124 +5.125 +5.126 +5.127 +5.128 +5.129 +5.13 +5.131 +5.132 +5.133 +5.134 +5.135 +5.136 +5.137 +5.138 +5.139 +5.14 +5.141 +5.142 +5.143 +5.144 +5.145 +5.146 +5.147 +5.148 +5.149 +5.15 +5.151 +5.152 +5.153 +5.154 +5.155 +5.156 +5.157 +5.158 +5.159 +5.16 +5.161 +5.162 +5.163 +5.164 +5.165 +5.166 +5.167 +5.168 +5.169 +5.17 +5.171 +5.172 +5.173 +5.174 +5.175 +5.176 +5.177 +5.178 +5.179 +5.18 +5.181 +5.182 +5.183 +5.184 +5.185 +5.186 +5.187 +5.188 +5.189 +5.19 +5.191 +5.192 +5.193 +5.194 +5.195 +5.196 +5.197 +5.198 +5.199 +5.2 +5.201 +5.202 +5.203 +5.204 +5.205 +5.206 +5.207 +5.208 +5.209 +5.21 +5.211 +5.212 +5.213 +5.214 +5.215 +5.216 +5.217 +5.218 +5.219 +5.22 +5.221 +5.222 +5.223 +5.224 +5.225 +5.226 +5.227 +5.228 +5.229 +5.23 +5.231 +5.232 +5.233 +5.234 +5.235 +5.236 +5.237 +5.238 +5.239 +5.24 +5.241 +5.242 +5.243 +5.244 +5.245 +5.246 +5.247 +5.248 +5.249 +5.25 +5.251 +5.252 +5.253 +5.254 +5.255 +5.256 +5.257 +5.258 +5.259 +5.26 +5.261 +5.262 +5.263 +5.264 +5.265 +5.266 +5.267 +5.268 +5.269 +5.27 +5.271 +5.272 +5.273 +5.274 +5.275 +5.276 +5.277 +5.278 +5.279 +5.28 +5.281 +5.282 +5.283 +5.284 +5.285 +5.286 +5.287 +5.288 +5.289 +5.29 +5.291 +5.292 +5.293 +5.294 +5.295 +5.296 +5.297 +5.298 +5.299 +5.3 +5.301 +5.302 +5.303 +5.304 +5.305 +5.306 +5.307 +5.308 +5.309 +5.31 +5.311 +5.312 +5.313 +5.314 +5.315 +5.316 +5.317 +5.318 +5.319 +5.32 +5.321 +5.322 +5.323 +5.324 +5.325 +5.326 +5.327 +5.328 +5.329 +5.33 +5.331 +5.332 +5.333 +5.334 +5.335 +5.336 +5.337 +5.338 +5.339 +5.34 +5.341 +5.342 +5.343 +5.344 +5.345 +5.346 +5.347 +5.348 +5.349 +5.35 +5.351 +5.352 +5.353 +5.354 +5.355 +5.356 +5.357 +5.358 +5.359 +5.36 +5.361 +5.362 +5.363 +5.364 +5.365 +5.366 +5.367 +5.368 +5.369 +5.37 +5.371 +5.372 +5.373 +5.374 +5.375 +5.376 +5.377 +5.378 +5.379 +5.38 +5.381 +5.382 +5.383 +5.384 +5.385 +5.386 +5.387 +5.388 +5.389 +5.39 +5.391 +5.392 +5.393 +5.394 +5.395 +5.396 +5.397 +5.398 +5.399 +5.4 +5.401 +5.402 +5.403 +5.404 +5.405 +5.406 +5.407 +5.408 +5.409 +5.41 +5.411 +5.412 +5.413 +5.414 +5.415 +5.416 +5.417 +5.418 +5.419 +5.42 +5.421 +5.422 +5.423 +5.424 +5.425 +5.426 +5.427 +5.428 +5.429 +5.43 +5.431 +5.432 +5.433 +5.434 +5.435 +5.436 +5.437 +5.438 +5.439 +5.44 +5.441 +5.442 +5.443 +5.444 +5.445 +5.446 +5.447 +5.448 +5.449 +5.45 +5.451 +5.452 +5.453 +5.454 +5.455 +5.456 +5.457 +5.458 +5.459 +5.46 +5.461 +5.462 +5.463 +5.464 +5.465 +5.466 +5.467 +5.468 +5.469 +5.47 +5.471 +5.472 +5.473 +5.474 +5.475 +5.476 +5.477 +5.478 +5.479 +5.48 +5.481 +5.482 +5.483 +5.484 +5.485 +5.486 +5.487 +5.488 +5.489 +5.49 +5.491 +5.492 +5.493 +5.494 +5.495 +5.496 +5.497 +5.498 +5.499 +5.5 +5.501 +5.502 +5.503 +5.504 +5.505 +5.506 +5.507 +5.508 +5.509 +5.51 +5.511 +5.512 +5.513 +5.514 +5.515 +5.516 +5.517 +5.518 +5.519 +5.52 +5.521 +5.522 +5.523 +5.524 +5.525 +5.526 +5.527 +5.528 +5.529 +5.53 +5.531 +5.532 +5.533 +5.534 +5.535 +5.536 +5.537 +5.538 +5.539 +5.54 +5.541 +5.542 +5.543 +5.544 +5.545 +5.546 +5.547 +5.548 +5.549 +5.55 +5.551 +5.552 +5.553 +5.554 +5.555 +5.556 +5.557 +5.558 +5.559 +5.56 +5.561 +5.562 +5.563 +5.564 +5.565 +5.566 +5.567 +5.568 +5.569 +5.57 +5.571 +5.572 +5.573 +5.574 +5.575 +5.576 +5.577 +5.578 +5.579 +5.58 +5.581 +5.582 +5.583 +5.584 +5.585 +5.586 +5.587 +5.588 +5.589 +5.59 +5.591 +5.592 +5.593 +5.594 +5.595 +5.596 +5.597 +5.598 +5.599 +5.6 +5.601 +5.602 +5.603 +5.604 +5.605 +5.606 +5.607 +5.608 +5.609 +5.61 +5.611 +5.612 +5.613 +5.614 +5.615 +5.616 +5.617 +5.618 +5.619 +5.62 +5.621 +5.622 +5.623 +5.624 +5.625 +5.626 +5.627 +5.628 +5.629 +5.63 +5.631 +5.632 +5.633 +5.634 +5.635 +5.636 +5.637 +5.638 +5.639 +5.64 +5.641 +5.642 +5.643 +5.644 +5.645 +5.646 +5.647 +5.648 +5.649 +5.65 +5.651 +5.652 +5.653 +5.654 +5.655 +5.656 +5.657 +5.658 +5.659 +5.66 +5.661 +5.662 +5.663 +5.664 +5.665 +5.666 +5.667 +5.668 +5.669 +5.67 +5.671 +5.672 +5.673 +5.674 +5.675 +5.676 +5.677 +5.678 +5.679 +5.68 +5.681 +5.682 +5.683 +5.684 +5.685 +5.686 +5.687 +5.688 +5.689 +5.69 +5.691 +5.692 +5.693 +5.694 +5.695 +5.696 +5.697 +5.698 +5.699 +5.7 +5.701 +5.702 +5.703 +5.704 +5.705 +5.706 +5.707 +5.708 +5.709 +5.71 +5.711 +5.712 +5.713 +5.714 +5.715 +5.716 +5.717 +5.718 +5.719 +5.72 +5.721 +5.722 +5.723 +5.724 +5.725 +5.726 +5.727 +5.728 +5.729 +5.73 +5.731 +5.732 +5.733 +5.734 +5.735 +5.736 +5.737 +5.738 +5.739 +5.74 +5.741 +5.742 +5.743 +5.744 +5.745 +5.746 +5.747 +5.748 +5.749 +5.75 +5.751 +5.752 +5.753 +5.754 +5.755 +5.756 +5.757 +5.758 +5.759 +5.76 +5.761 +5.762 +5.763 +5.764 +5.765 +5.766 +5.767 +5.768 +5.769 +5.77 +5.771 +5.772 +5.773 +5.774 +5.775 +5.776 +5.777 +5.778 +5.779 +5.78 +5.781 +5.782 +5.783 +5.784 +5.785 +5.786 +5.787 +5.788 +5.789 +5.79 +5.791 +5.792 +5.793 +5.794 +5.795 +5.796 +5.797 +5.798 +5.799 +5.8 +5.801 +5.802 +5.803 +5.804 +5.805 +5.806 +5.807 +5.808 +5.809 +5.81 +5.811 +5.812 +5.813 +5.814 +5.815 +5.816 +5.817 +5.818 +5.819 +5.82 +5.821 +5.822 +5.823 +5.824 +5.825 +5.826 +5.827 +5.828 +5.829 +5.83 +5.831 +5.832 +5.833 +5.834 +5.835 +5.836 +5.837 +5.838 +5.839 +5.84 +5.841 +5.842 +5.843 +5.844 +5.845 +5.846 +5.847 +5.848 +5.849 +5.85 +5.851 +5.852 +5.853 +5.854 +5.855 +5.856 +5.857 +5.858 +5.859 +5.86 +5.861 +5.862 +5.863 +5.864 +5.865 +5.866 +5.867 +5.868 +5.869 +5.87 +5.871 +5.872 +5.873 +5.874 +5.875 +5.876 +5.877 +5.878 +5.879 +5.88 +5.881 +5.882 +5.883 +5.884 +5.885 +5.886 +5.887 +5.888 +5.889 +5.89 +5.891 +5.892 +5.893 +5.894 +5.895 +5.896 +5.897 +5.898 +5.899 +5.9 +5.901 +5.902 +5.903 +5.904 +5.905 +5.906 +5.907 +5.908 +5.909 +5.91 +5.911 +5.912 +5.913 +5.914 +5.915 +5.916 +5.917 +5.918 +5.919 +5.92 +5.921 +5.922 +5.923 +5.924 +5.925 +5.926 +5.927 +5.928 +5.929 +5.93 +5.931 +5.932 +5.933 +5.934 +5.935 +5.936 +5.937 +5.938 +5.939 +5.94 +5.941 +5.942 +5.943 +5.944 +5.945 +5.946 +5.947 +5.948 +5.949 +5.95 +5.951 +5.952 +5.953 +5.954 +5.955 +5.956 +5.957 +5.958 +5.959 +5.96 +5.961 +5.962 +5.963 +5.964 +5.965 +5.966 +5.967 +5.968 +5.969 +5.97 +5.971 +5.972 +5.973 +5.974 +5.975 +5.976 +5.977 +5.978 +5.979 +5.98 +5.981 +5.982 +5.983 +5.984 +5.985 +5.986 +5.987 +5.988 +5.989 +5.99 +5.991 +5.992 +5.993 +5.994 +5.995 +5.996 +5.997 +5.998 +5.999 +6 +6.001 +6.002 +6.003 +6.004 +6.005 +6.006 +6.007 +6.008 +6.009 +6.01 +6.011 +6.012 +6.013 +6.014 +6.015 +6.016 +6.017 +6.018 +6.019 +6.02 +6.021 +6.022 +6.023 +6.024 +6.025 +6.026 +6.027 +6.028 +6.029 +6.03 +6.031 +6.032 +6.033 +6.034 +6.035 +6.036 +6.037 +6.038 +6.039 +6.04 +6.041 +6.042 +6.043 +6.044 +6.045 +6.046 +6.047 +6.048 +6.049 +6.05 +6.051 +6.052 +6.053 +6.054 +6.055 +6.056 +6.057 +6.058 +6.059 +6.06 +6.061 +6.062 +6.063 +6.064 +6.065 +6.066 +6.067 +6.068 +6.069 +6.07 +6.071 +6.072 +6.073 +6.074 +6.075 +6.076 +6.077 +6.078 +6.079 +6.08 +6.081 +6.082 +6.083 +6.084 +6.085 +6.086 +6.087 +6.088 +6.089 +6.09 +6.091 +6.092 +6.093 +6.094 +6.095 +6.096 +6.097 +6.098 +6.099 +6.1 +6.101 +6.102 +6.103 +6.104 +6.105 +6.106 +6.107 +6.108 +6.109 +6.11 +6.111 +6.112 +6.113 +6.114 +6.115 +6.116 +6.117 +6.118 +6.119 +6.12 +6.121 +6.122 +6.123 +6.124 +6.125 +6.126 +6.127 +6.128 +6.129 +6.13 +6.131 +6.132 +6.133 +6.134 +6.135 +6.136 +6.137 +6.138 +6.139 +6.14 +6.141 +6.142 +6.143 +6.144 +6.145 +6.146 +6.147 +6.148 +6.149 +6.15 +6.151 +6.152 +6.153 +6.154 +6.155 +6.156 +6.157 +6.158 +6.159 +6.16 +6.161 +6.162 +6.163 +6.164 +6.165 +6.166 +6.167 +6.168 +6.169 +6.17 +6.171 +6.172 +6.173 +6.174 +6.175 +6.176 +6.177 +6.178 +6.179 +6.18 +6.181 +6.182 +6.183 +6.184 +6.185 +6.186 +6.187 +6.188 +6.189 +6.19 +6.191 +6.192 +6.193 +6.194 +6.195 +6.196 +6.197 +6.198 +6.199 +6.2 +6.201 +6.202 +6.203 +6.204 +6.205 +6.206 +6.207 +6.208 +6.209 +6.21 +6.211 +6.212 +6.213 +6.214 +6.215 +6.216 +6.217 +6.218 +6.219 +6.22 +6.221 +6.222 +6.223 +6.224 +6.225 +6.226 +6.227 +6.228 +6.229 +6.23 +6.231 +6.232 +6.233 +6.234 +6.235 +6.236 +6.237 +6.238 +6.239 +6.24 +6.241 +6.242 +6.243 +6.244 +6.245 +6.246 +6.247 +6.248 +6.249 +6.25 +6.251 +6.252 +6.253 +6.254 +6.255 +6.256 +6.257 +6.258 +6.259 +6.26 +6.261 +6.262 +6.263 +6.264 +6.265 +6.266 +6.267 +6.268 +6.269 +6.27 +6.271 +6.272 +6.273 +6.274 +6.275 +6.276 +6.277 +6.278 +6.279 +6.28 +6.281 +6.282 +6.283 +6.284 +6.285 +6.286 +6.287 +6.288 +6.289 +6.29 +6.291 +6.292 +6.293 +6.294 +6.295 +6.296 +6.297 +6.298 +6.299 +6.3 +6.301 +6.302 +6.303 +6.304 +6.305 +6.306 +6.307 +6.308 +6.309 +6.31 +6.311 +6.312 +6.313 +6.314 +6.315 +6.316 +6.317 +6.318 +6.319 +6.32 +6.321 +6.322 +6.323 +6.324 +6.325 +6.326 +6.327 +6.328 +6.329 +6.33 +6.331 +6.332 +6.333 +6.334 +6.335 +6.336 +6.337 +6.338 +6.339 +6.34 +6.341 +6.342 +6.343 +6.344 +6.345 +6.346 +6.347 +6.348 +6.349 +6.35 +6.351 +6.352 +6.353 +6.354 +6.355 +6.356 +6.357 +6.358 +6.359 +6.36 +6.361 +6.362 +6.363 +6.364 +6.365 +6.366 +6.367 +6.368 +6.369 +6.37 +6.371 +6.372 +6.373 +6.374 +6.375 +6.376 +6.377 +6.378 +6.379 +6.38 +6.381 +6.382 +6.383 +6.384 +6.385 +6.386 +6.387 +6.388 +6.389 +6.39 +6.391 +6.392 +6.393 +6.394 +6.395 +6.396 +6.397 +6.398 +6.399 +6.4 +6.401 +6.402 +6.403 +6.404 +6.405 +6.406 +6.407 +6.408 +6.409 +6.41 +6.411 +6.412 +6.413 +6.414 +6.415 +6.416 +6.417 +6.418 +6.419 +6.42 +6.421 +6.422 +6.423 +6.424 +6.425 +6.426 +6.427 +6.428 +6.429 +6.43 +6.431 +6.432 +6.433 +6.434 +6.435 +6.436 +6.437 +6.438 +6.439 +6.44 +6.441 +6.442 +6.443 +6.444 +6.445 +6.446 +6.447 +6.448 +6.449 +6.45 +6.451 +6.452 +6.453 +6.454 +6.455 +6.456 +6.457 +6.458 +6.459 +6.46 +6.461 +6.462 +6.463 +6.464 +6.465 +6.466 +6.467 +6.468 +6.469 +6.47 +6.471 +6.472 +6.473 +6.474 +6.475 +6.476 +6.477 +6.478 +6.479 +6.48 +6.481 +6.482 +6.483 +6.484 +6.485 +6.486 +6.487 +6.488 +6.489 +6.49 +6.491 +6.492 +6.493 +6.494 +6.495 +6.496 +6.497 +6.498 +6.499 +6.5 +6.501 +6.502 +6.503 +6.504 +6.505 +6.506 +6.507 +6.508 +6.509 +6.51 +6.511 +6.512 +6.513 +6.514 +6.515 +6.516 +6.517 +6.518 +6.519 +6.52 +6.521 +6.522 +6.523 +6.524 +6.525 +6.526 +6.527 +6.528 +6.529 +6.53 +6.531 +6.532 +6.533 +6.534 +6.535 +6.536 +6.537 +6.538 +6.539 +6.54 +6.541 +6.542 +6.543 +6.544 +6.545 +6.546 +6.547 +6.548 +6.549 +6.55 +6.551 +6.552 +6.553 +6.554 +6.555 +6.556 +6.557 +6.558 +6.559 +6.56 +6.561 +6.562 +6.563 +6.564 +6.565 +6.566 +6.567 +6.568 +6.569 +6.57 +6.571 +6.572 +6.573 +6.574 +6.575 +6.576 +6.577 +6.578 +6.579 +6.58 +6.581 +6.582 +6.583 +6.584 +6.585 +6.586 +6.587 +6.588 +6.589 +6.59 +6.591 +6.592 +6.593 +6.594 +6.595 +6.596 +6.597 +6.598 +6.599 +6.6 +6.601 +6.602 +6.603 +6.604 +6.605 +6.606 +6.607 +6.608 +6.609 +6.61 +6.611 +6.612 +6.613 +6.614 +6.615 +6.616 +6.617 +6.618 +6.619 +6.62 +6.621 +6.622 +6.623 +6.624 +6.625 +6.626 +6.627 +6.628 +6.629 +6.63 +6.631 +6.632 +6.633 +6.634 +6.635 +6.636 +6.637 +6.638 +6.639 +6.64 +6.641 +6.642 +6.643 +6.644 +6.645 +6.646 +6.647 +6.648 +6.649 +6.65 +6.651 +6.652 +6.653 +6.654 +6.655 +6.656 +6.657 +6.658 +6.659 +6.66 +6.661 +6.662 +6.663 +6.664 +6.665 +6.666 +6.667 +6.668 +6.669 +6.67 +6.671 +6.672 +6.673 +6.674 +6.675 +6.676 +6.677 +6.678 +6.679 +6.68 +6.681 +6.682 +6.683 +6.684 +6.685 +6.686 +6.687 +6.688 +6.689 +6.69 +6.691 +6.692 +6.693 +6.694 +6.695 +6.696 +6.697 +6.698 +6.699 +6.7 +6.701 +6.702 +6.703 +6.704 +6.705 +6.706 +6.707 +6.708 +6.709 +6.71 +6.711 +6.712 +6.713 +6.714 +6.715 +6.716 +6.717 +6.718 +6.719 +6.72 +6.721 +6.722 +6.723 +6.724 +6.725 +6.726 +6.727 +6.728 +6.729 +6.73 +6.731 +6.732 +6.733 +6.734 +6.735 +6.736 +6.737 +6.738 +6.739 +6.74 +6.741 +6.742 +6.743 +6.744 +6.745 +6.746 +6.747 +6.748 +6.749 +6.75 +6.751 +6.752 +6.753 +6.754 +6.755 +6.756 +6.757 +6.758 +6.759 +6.76 +6.761 +6.762 +6.763 +6.764 +6.765 +6.766 +6.767 +6.768 +6.769 +6.77 +6.771 +6.772 +6.773 +6.774 +6.775 +6.776 +6.777 +6.778 +6.779 +6.78 +6.781 +6.782 +6.783 +6.784 +6.785 +6.786 +6.787 +6.788 +6.789 +6.79 +6.791 +6.792 +6.793 +6.794 +6.795 +6.796 +6.797 +6.798 +6.799 +6.8 +6.801 +6.802 +6.803 +6.804 +6.805 +6.806 +6.807 +6.808 +6.809 +6.81 +6.811 +6.812 +6.813 +6.814 +6.815 +6.816 +6.817 +6.818 +6.819 +6.82 +6.821 +6.822 +6.823 +6.824 +6.825 +6.826 +6.827 +6.828 +6.829 +6.83 +6.831 +6.832 +6.833 +6.834 +6.835 +6.836 +6.837 +6.838 +6.839 +6.84 +6.841 +6.842 +6.843 +6.844 +6.845 +6.846 +6.847 +6.848 +6.849 +6.85 +6.851 +6.852 +6.853 +6.854 +6.855 +6.856 +6.857 +6.858 +6.859 +6.86 +6.861 +6.862 +6.863 +6.864 +6.865 +6.866 +6.867 +6.868 +6.869 +6.87 +6.871 +6.872 +6.873 +6.874 +6.875 +6.876 +6.877 +6.878 +6.879 +6.88 +6.881 +6.882 +6.883 +6.884 +6.885 +6.886 +6.887 +6.888 +6.889 +6.89 +6.891 +6.892 +6.893 +6.894 +6.895 +6.896 +6.897 +6.898 +6.899 +6.9 +6.901 +6.902 +6.903 +6.904 +6.905 +6.906 +6.907 +6.908 +6.909 +6.91 +6.911 +6.912 +6.913 +6.914 +6.915 +6.916 +6.917 +6.918 +6.919 +6.92 +6.921 +6.922 +6.923 +6.924 +6.925 +6.926 +6.927 +6.928 +6.929 +6.93 +6.931 +6.932 +6.933 +6.934 +6.935 +6.936 +6.937 +6.938 +6.939 +6.94 +6.941 +6.942 +6.943 +6.944 +6.945 +6.946 +6.947 +6.948 +6.949 +6.95 +6.951 +6.952 +6.953 +6.954 +6.955 +6.956 +6.957 +6.958 +6.959 +6.96 +6.961 +6.962 +6.963 +6.964 +6.965 +6.966 +6.967 +6.968 +6.969 +6.97 +6.971 +6.972 +6.973 +6.974 +6.975 +6.976 +6.977 +6.978 +6.979 +6.98 +6.981 +6.982 +6.983 +6.984 +6.985 +6.986 +6.987 +6.988 +6.989 +6.99 +6.991 +6.992 +6.993 +6.994 +6.995 +6.996 +6.997 +6.998 +6.999 +7 +7.001 +7.002 +7.003 +7.004 +7.005 +7.006 +7.007 +7.008 +7.009 +7.01 +7.011 +7.012 +7.013 +7.014 +7.015 +7.016 +7.017 +7.018 +7.019 +7.02 +7.021 +7.022 +7.023 +7.024 +7.025 +7.026 +7.027 +7.028 +7.029 +7.03 +7.031 +7.032 +7.033 +7.034 +7.035 +7.036 +7.037 +7.038 +7.039 +7.04 +7.041 +7.042 +7.043 +7.044 +7.045 +7.046 +7.047 +7.048 +7.049 +7.05 +7.051 +7.052 +7.053 +7.054 +7.055 +7.056 +7.057 +7.058 +7.059 +7.06 +7.061 +7.062 +7.063 +7.064 +7.065 +7.066 +7.067 +7.068 +7.069 +7.07 +7.071 +7.072 +7.073 +7.074 +7.075 +7.076 +7.077 +7.078 +7.079 +7.08 +7.081 +7.082 +7.083 +7.084 +7.085 +7.086 +7.087 +7.088 +7.089 +7.09 +7.091 +7.092 +7.093 +7.094 +7.095 +7.096 +7.097 +7.098 +7.099 +7.1 +7.101 +7.102 +7.103 +7.104 +7.105 +7.106 +7.107 +7.108 +7.109 +7.11 +7.111 +7.112 +7.113 +7.114 +7.115 +7.116 +7.117 +7.118 +7.119 +7.12 +7.121 +7.122 +7.123 +7.124 +7.125 +7.126 +7.127 +7.128 +7.129 +7.13 +7.131 +7.132 +7.133 +7.134 +7.135 +7.136 +7.137 +7.138 +7.139 +7.14 +7.141 +7.142 +7.143 +7.144 +7.145 +7.146 +7.147 +7.148 +7.149 +7.15 +7.151 +7.152 +7.153 +7.154 +7.155 +7.156 +7.157 +7.158 +7.159 +7.16 +7.161 +7.162 +7.163 +7.164 +7.165 +7.166 +7.167 +7.168 +7.169 +7.17 +7.171 +7.172 +7.173 +7.174 +7.175 +7.176 +7.177 +7.178 +7.179 +7.18 +7.181 +7.182 +7.183 +7.184 +7.185 +7.186 +7.187 +7.188 +7.189 +7.19 +7.191 +7.192 +7.193 +7.194 +7.195 +7.196 +7.197 +7.198 +7.199 +7.2 +7.201 +7.202 +7.203 +7.204 +7.205 +7.206 +7.207 +7.208 +7.209 +7.21 +7.211 +7.212 +7.213 +7.214 +7.215 +7.216 +7.217 +7.218 +7.219 +7.22 +7.221 +7.222 +7.223 +7.224 +7.225 +7.226 +7.227 +7.228 +7.229 +7.23 +7.231 +7.232 +7.233 +7.234 +7.235 +7.236 +7.237 +7.238 +7.239 +7.24 +7.241 +7.242 +7.243 +7.244 +7.245 +7.246 +7.247 +7.248 +7.249 +7.25 +7.251 +7.252 +7.253 +7.254 +7.255 +7.256 +7.257 +7.258 +7.259 +7.26 +7.261 +7.262 +7.263 +7.264 +7.265 +7.266 +7.267 +7.268 +7.269 +7.27 +7.271 +7.272 +7.273 +7.274 +7.275 +7.276 +7.277 +7.278 +7.279 +7.28 +7.281 +7.282 +7.283 +7.284 +7.285 +7.286 +7.287 +7.288 +7.289 +7.29 +7.291 +7.292 +7.293 +7.294 +7.295 +7.296 +7.297 +7.298 +7.299 +7.3 +7.301 +7.302 +7.303 +7.304 +7.305 +7.306 +7.307 +7.308 +7.309 +7.31 +7.311 +7.312 +7.313 +7.314 +7.315 +7.316 +7.317 +7.318 +7.319 +7.32 +7.321 +7.322 +7.323 +7.324 +7.325 +7.326 +7.327 +7.328 +7.329 +7.33 +7.331 +7.332 +7.333 +7.334 +7.335 +7.336 +7.337 +7.338 +7.339 +7.34 +7.341 +7.342 +7.343 +7.344 +7.345 +7.346 +7.347 +7.348 +7.349 +7.35 +7.351 +7.352 +7.353 +7.354 +7.355 +7.356 +7.357 +7.358 +7.359 +7.36 +7.361 +7.362 +7.363 +7.364 +7.365 +7.366 +7.367 +7.368 +7.369 +7.37 +7.371 +7.372 +7.373 +7.374 +7.375 +7.376 +7.377 +7.378 +7.379 +7.38 +7.381 +7.382 +7.383 +7.384 +7.385 +7.386 +7.387 +7.388 +7.389 +7.39 +7.391 +7.392 +7.393 +7.394 +7.395 +7.396 +7.397 +7.398 +7.399 +7.4 +7.401 +7.402 +7.403 +7.404 +7.405 +7.406 +7.407 +7.408 +7.409 +7.41 +7.411 +7.412 +7.413 +7.414 +7.415 +7.416 +7.417 +7.418 +7.419 +7.42 +7.421 +7.422 +7.423 +7.424 +7.425 +7.426 +7.427 +7.428 +7.429 +7.43 +7.431 +7.432 +7.433 +7.434 +7.435 +7.436 +7.437 +7.438 +7.439 +7.44 +7.441 +7.442 +7.443 +7.444 +7.445 +7.446 +7.447 +7.448 +7.449 +7.45 +7.451 +7.452 +7.453 +7.454 +7.455 +7.456 +7.457 +7.458 +7.459 +7.46 +7.461 +7.462 +7.463 +7.464 +7.465 +7.466 +7.467 +7.468 +7.469 +7.47 +7.471 +7.472 +7.473 +7.474 +7.475 +7.476 +7.477 +7.478 +7.479 +7.48 +7.481 +7.482 +7.483 +7.484 +7.485 +7.486 +7.487 +7.488 +7.489 +7.49 +7.491 +7.492 +7.493 +7.494 +7.495 +7.496 +7.497 +7.498 +7.499 +7.5 +7.501 +7.502 +7.503 +7.504 +7.505 +7.506 +7.507 +7.508 +7.509 +7.51 +7.511 +7.512 +7.513 +7.514 +7.515 +7.516 +7.517 +7.518 +7.519 +7.52 +7.521 +7.522 +7.523 +7.524 +7.525 +7.526 +7.527 +7.528 +7.529 +7.53 +7.531 +7.532 +7.533 +7.534 +7.535 +7.536 +7.537 +7.538 +7.539 +7.54 +7.541 +7.542 +7.543 +7.544 +7.545 +7.546 +7.547 +7.548 +7.549 +7.55 +7.551 +7.552 +7.553 +7.554 +7.555 +7.556 +7.557 +7.558 +7.559 +7.56 +7.561 +7.562 +7.563 +7.564 +7.565 +7.566 +7.567 +7.568 +7.569 +7.57 +7.571 +7.572 +7.573 +7.574 +7.575 +7.576 +7.577 +7.578 +7.579 +7.58 +7.581 +7.582 +7.583 +7.584 +7.585 +7.586 +7.587 +7.588 +7.589 +7.59 +7.591 +7.592 +7.593 +7.594 +7.595 +7.596 +7.597 +7.598 +7.599 +7.6 +7.601 +7.602 +7.603 +7.604 +7.605 +7.606 +7.607 +7.608 +7.609 +7.61 +7.611 +7.612 +7.613 +7.614 +7.615 +7.616 +7.617 +7.618 +7.619 +7.62 +7.621 +7.622 +7.623 +7.624 +7.625 +7.626 +7.627 +7.628 +7.629 +7.63 +7.631 +7.632 +7.633 +7.634 +7.635 +7.636 +7.637 +7.638 +7.639 +7.64 +7.641 +7.642 +7.643 +7.644 +7.645 +7.646 +7.647 +7.648 +7.649 +7.65 +7.651 +7.652 +7.653 +7.654 +7.655 +7.656 +7.657 +7.658 +7.659 +7.66 +7.661 +7.662 +7.663 +7.664 +7.665 +7.666 +7.667 +7.668 +7.669 +7.67 +7.671 +7.672 +7.673 +7.674 +7.675 +7.676 +7.677 +7.678 +7.679 +7.68 +7.681 +7.682 +7.683 +7.684 +7.685 +7.686 +7.687 +7.688 +7.689 +7.69 +7.691 +7.692 +7.693 +7.694 +7.695 +7.696 +7.697 +7.698 +7.699 +7.7 +7.701 +7.702 +7.703 +7.704 +7.705 +7.706 +7.707 +7.708 +7.709 +7.71 +7.711 +7.712 +7.713 +7.714 +7.715 +7.716 +7.717 +7.718 +7.719 +7.72 +7.721 +7.722 +7.723 +7.724 +7.725 +7.726 +7.727 +7.728 +7.729 +7.73 +7.731 +7.732 +7.733 +7.734 +7.735 +7.736 +7.737 +7.738 +7.739 +7.74 +7.741 +7.742 +7.743 +7.744 +7.745 +7.746 +7.747 +7.748 +7.749 +7.75 +7.751 +7.752 +7.753 +7.754 +7.755 +7.756 +7.757 +7.758 +7.759 +7.76 +7.761 +7.762 +7.763 +7.764 +7.765 +7.766 +7.767 +7.768 +7.769 +7.77 +7.771 +7.772 +7.773 +7.774 +7.775 +7.776 +7.777 +7.778 +7.779 +7.78 +7.781 +7.782 +7.783 +7.784 +7.785 +7.786 +7.787 +7.788 +7.789 +7.79 +7.791 +7.792 +7.793 +7.794 +7.795 +7.796 +7.797 +7.798 +7.799 +7.8 +7.801 +7.802 +7.803 +7.804 +7.805 +7.806 +7.807 +7.808 +7.809 +7.81 +7.811 +7.812 +7.813 +7.814 +7.815 +7.816 +7.817 +7.818 +7.819 +7.82 +7.821 +7.822 +7.823 +7.824 +7.825 +7.826 +7.827 +7.828 +7.829 +7.83 +7.831 +7.832 +7.833 +7.834 +7.835 +7.836 +7.837 +7.838 +7.839 +7.84 +7.841 +7.842 +7.843 +7.844 +7.845 +7.846 +7.847 +7.848 +7.849 +7.85 +7.851 +7.852 +7.853 +7.854 +7.855 +7.856 +7.857 +7.858 +7.859 +7.86 +7.861 +7.862 +7.863 +7.864 +7.865 +7.866 +7.867 +7.868 +7.869 +7.87 +7.871 +7.872 +7.873 +7.874 +7.875 +7.876 +7.877 +7.878 +7.879 +7.88 +7.881 +7.882 +7.883 +7.884 +7.885 +7.886 +7.887 +7.888 +7.889 +7.89 +7.891 +7.892 +7.893 +7.894 +7.895 +7.896 +7.897 +7.898 +7.899 +7.9 +7.901 +7.902 +7.903 +7.904 +7.905 +7.906 +7.907 +7.908 +7.909 +7.91 +7.911 +7.912 +7.913 +7.914 +7.915 +7.916 +7.917 +7.918 +7.919 +7.92 +7.921 +7.922 +7.923 +7.924 +7.925 +7.926 +7.927 +7.928 +7.929 +7.93 +7.931 +7.932 +7.933 +7.934 +7.935 +7.936 +7.937 +7.938 +7.939 +7.94 +7.941 +7.942 +7.943 +7.944 +7.945 +7.946 +7.947 +7.948 +7.949 +7.95 +7.951 +7.952 +7.953 +7.954 +7.955 +7.956 +7.957 +7.958 +7.959 +7.96 +7.961 +7.962 +7.963 +7.964 +7.965 +7.966 +7.967 +7.968 +7.969 +7.97 +7.971 +7.972 +7.973 +7.974 +7.975 +7.976 +7.977 +7.978 +7.979 +7.98 +7.981 +7.982 +7.983 +7.984 +7.985 +7.986 +7.987 +7.988 +7.989 +7.99 +7.991 +7.992 +7.993 +7.994 +7.995 +7.996 +7.997 +7.998 +7.999 +8 +8.001 +8.002 +8.003 +8.004 +8.005 +8.006 +8.007 +8.008 +8.009 +8.01 +8.011 +8.012 +8.013 +8.014 +8.015 +8.016 +8.017 +8.018 +8.019 +8.02 +8.021 +8.022 +8.023 +8.024 +8.025 +8.026 +8.027 +8.028 +8.029 +8.03 +8.031 +8.032 +8.033 +8.034 +8.035 +8.036 +8.037 +8.038 +8.039 +8.04 +8.041 +8.042 +8.043 +8.044 +8.045 +8.046 +8.047 +8.048 +8.049 +8.05 +8.051 +8.052 +8.053 +8.054 +8.055 +8.056 +8.057 +8.058 +8.059 +8.06 +8.061 +8.062 +8.063 +8.064 +8.065 +8.066 +8.067 +8.068 +8.069 +8.07 +8.071 +8.072 +8.073 +8.074 +8.075 +8.076 +8.077 +8.078 +8.079 +8.08 +8.081 +8.082 +8.083 +8.084 +8.085 +8.086 +8.087 +8.088 +8.089 +8.09 +8.091 +8.092 +8.093 +8.094 +8.095 +8.096 +8.097 +8.098 +8.099 +8.1 +8.101 +8.102 +8.103 +8.104 +8.105 +8.106 +8.107 +8.108 +8.109 +8.11 +8.111 +8.112 +8.113 +8.114 +8.115 +8.116 +8.117 +8.118 +8.119 +8.12 +8.121 +8.122 +8.123 +8.124 +8.125 +8.126 +8.127 +8.128 +8.129 +8.13 +8.131 +8.132 +8.133 +8.134 +8.135 +8.136 +8.137 +8.138 +8.139 +8.14 +8.141 +8.142 +8.143 +8.144 +8.145 +8.146 +8.147 +8.148 +8.149 +8.15 +8.151 +8.152 +8.153 +8.154 +8.155 +8.156 +8.157 +8.158 +8.159 +8.16 +8.161 +8.162 +8.163 +8.164 +8.165 +8.166 +8.167 +8.168 +8.169 +8.17 +8.171 +8.172 +8.173 +8.174 +8.175 +8.176 +8.177 +8.178 +8.179 +8.18 +8.181 +8.182 +8.183 +8.184 +8.185 +8.186 +8.187 +8.188 +8.189 +8.19 +8.191 +8.192 +8.193 +8.194 +8.195 +8.196 +8.197 +8.198 +8.199 +8.2 +8.201 +8.202 +8.203 +8.204 +8.205 +8.206 +8.207 +8.208 +8.209 +8.21 +8.211 +8.212 +8.213 +8.214 +8.215 +8.216 +8.217 +8.218 +8.219 +8.22 +8.221 +8.222 +8.223 +8.224 +8.225 +8.226 +8.227 +8.228 +8.229 +8.23 +8.231 +8.232 +8.233 +8.234 +8.235 +8.236 +8.237 +8.238 +8.239 +8.24 +8.241 +8.242 +8.243 +8.244 +8.245 +8.246 +8.247 +8.248 +8.249 +8.25 +8.251 +8.252 +8.253 +8.254 +8.255 +8.256 +8.257 +8.258 +8.259 +8.26 +8.261 +8.262 +8.263 +8.264 +8.265 +8.266 +8.267 +8.268 +8.269 +8.27 +8.271 +8.272 +8.273 +8.274 +8.275 +8.276 +8.277 +8.278 +8.279 +8.28 +8.281 +8.282 +8.283 +8.284 +8.285 +8.286 +8.287 +8.288 +8.289 +8.29 +8.291 +8.292 +8.293 +8.294 +8.295 +8.296 +8.297 +8.298 +8.299 +8.3 +8.301 +8.302 +8.303 +8.304 +8.305 +8.306 +8.307 +8.308 +8.309 +8.31 +8.311 +8.312 +8.313 +8.314 +8.315 +8.316 +8.317 +8.318 +8.319 +8.32 +8.321 +8.322 +8.323 +8.324 +8.325 +8.326 +8.327 +8.328 +8.329 +8.33 +8.331 +8.332 +8.333 +8.334 +8.335 +8.336 +8.337 +8.338 +8.339 +8.34 +8.341 +8.342 +8.343 +8.344 +8.345 +8.346 +8.347 +8.348 +8.349 +8.35 +8.351 +8.352 +8.353 +8.354 +8.355 +8.356 +8.357 +8.358 +8.359 +8.36 +8.361 +8.362 +8.363 +8.364 +8.365 +8.366 +8.367 +8.368 +8.369 +8.37 +8.371 +8.372 +8.373 +8.374 +8.375 +8.376 +8.377 +8.378 +8.379 +8.38 +8.381 +8.382 +8.383 +8.384 +8.385 +8.386 +8.387 +8.388 +8.389 +8.39 +8.391 +8.392 +8.393 +8.394 +8.395 +8.396 +8.397 +8.398 +8.399 +8.4 +8.401 +8.402 +8.403 +8.404 +8.405 +8.406 +8.407 +8.408 +8.409 +8.41 +8.411 +8.412 +8.413 +8.414 +8.415 +8.416 +8.417 +8.418 +8.419 +8.42 +8.421 +8.422 +8.423 +8.424 +8.425 +8.426 +8.427 +8.428 +8.429 +8.43 +8.431 +8.432 +8.433 +8.434 +8.435 +8.436 +8.437 +8.438 +8.439 +8.44 +8.441 +8.442 +8.443 +8.444 +8.445 +8.446 +8.447 +8.448 +8.449 +8.45 +8.451 +8.452 +8.453 +8.454 +8.455 +8.456 +8.457 +8.458 +8.459 +8.46 +8.461 +8.462 +8.463 +8.464 +8.465 +8.466 +8.467 +8.468 +8.469 +8.47 +8.471 +8.472 +8.473 +8.474 +8.475 +8.476 +8.477 +8.478 +8.479 +8.48 +8.481 +8.482 +8.483 +8.484 +8.485 +8.486 +8.487 +8.488 +8.489 +8.49 +8.491 +8.492 +8.493 +8.494 +8.495 +8.496 +8.497 +8.498 +8.499 +8.5 +8.501 +8.502 +8.503 +8.504 +8.505 +8.506 +8.507 +8.508 +8.509 +8.51 +8.511 +8.512 +8.513 +8.514 +8.515 +8.516 +8.517 +8.518 +8.519 +8.52 +8.521 +8.522 +8.523 +8.524 +8.525 +8.526 +8.527 +8.528 +8.529 +8.53 +8.531 +8.532 +8.533 +8.534 +8.535 +8.536 +8.537 +8.538 +8.539 +8.54 +8.541 +8.542 +8.543 +8.544 +8.545 +8.546 +8.547 +8.548 +8.549 +8.55 +8.551 +8.552 +8.553 +8.554 +8.555 +8.556 +8.557 +8.558 +8.559 +8.56 +8.561 +8.562 +8.563 +8.564 +8.565 +8.566 +8.567 +8.568 +8.569 +8.57 +8.571 +8.572 +8.573 +8.574 +8.575 +8.576 +8.577 +8.578 +8.579 +8.58 +8.581 +8.582 +8.583 +8.584 +8.585 +8.586 +8.587 +8.588 +8.589 +8.59 +8.591 +8.592 +8.593 +8.594 +8.595 +8.596 +8.597 +8.598 +8.599 +8.6 +8.601 +8.602 +8.603 +8.604 +8.605 +8.606 +8.607 +8.608 +8.609 +8.61 +8.611 +8.612 +8.613 +8.614 +8.615 +8.616 +8.617 +8.618 +8.619 +8.62 +8.621 +8.622 +8.623 +8.624 +8.625 +8.626 +8.627 +8.628 +8.629 +8.63 +8.631 +8.632 +8.633 +8.634 +8.635 +8.636 +8.637 +8.638 +8.639 +8.64 +8.641 +8.642 +8.643 +8.644 +8.645 +8.646 +8.647 +8.648 +8.649 +8.65 +8.651 +8.652 +8.653 +8.654 +8.655 +8.656 +8.657 +8.658 +8.659 +8.66 +8.661 +8.662 +8.663 +8.664 +8.665 +8.666 +8.667 +8.668 +8.669 +8.67 +8.671 +8.672 +8.673 +8.674 +8.675 +8.676 +8.677 +8.678 +8.679 +8.68 +8.681 +8.682 +8.683 +8.684 +8.685 +8.686 +8.687 +8.688 +8.689 +8.69 +8.691 +8.692 +8.693 +8.694 +8.695 +8.696 +8.697 +8.698 +8.699 +8.7 +8.701 +8.702 +8.703 +8.704 +8.705 +8.706 +8.707 +8.708 +8.709 +8.71 +8.711 +8.712 +8.713 +8.714 +8.715 +8.716 +8.717 +8.718 +8.719 +8.72 +8.721 +8.722 +8.723 +8.724 +8.725 +8.726 +8.727 +8.728 +8.729 +8.73 +8.731 +8.732 +8.733 +8.734 +8.735 +8.736 +8.737 +8.738 +8.739 +8.74 +8.741 +8.742 +8.743 +8.744 +8.745 +8.746 +8.747 +8.748 +8.749 +8.75 +8.751 +8.752 +8.753 +8.754 +8.755 +8.756 +8.757 +8.758 +8.759 +8.76 +8.761 +8.762 +8.763 +8.764 +8.765 +8.766 +8.767 +8.768 +8.769 +8.77 +8.771 +8.772 +8.773 +8.774 +8.775 +8.776 +8.777 +8.778 +8.779 +8.78 +8.781 +8.782 +8.783 +8.784 +8.785 +8.786 +8.787 +8.788 +8.789 +8.79 +8.791 +8.792 +8.793 +8.794 +8.795 +8.796 +8.797 +8.798 +8.799 +8.8 +8.801 +8.802 +8.803 +8.804 +8.805 +8.806 +8.807 +8.808 +8.809 +8.81 +8.811 +8.812 +8.813 +8.814 +8.815 +8.816 +8.817 +8.818 +8.819 +8.82 +8.821 +8.822 +8.823 +8.824 +8.825 +8.826 +8.827 +8.828 +8.829 +8.83 +8.831 +8.832 +8.833 +8.834 +8.835 +8.836 +8.837 +8.838 +8.839 +8.84 +8.841 +8.842 +8.843 +8.844 +8.845 +8.846 +8.847 +8.848 +8.849 +8.85 +8.851 +8.852 +8.853 +8.854 +8.855 +8.856 +8.857 +8.858 +8.859 +8.86 +8.861 +8.862 +8.863 +8.864 +8.865 +8.866 +8.867 +8.868 +8.869 +8.87 +8.871 +8.872 +8.873 +8.874 +8.875 +8.876 +8.877 +8.878 +8.879 +8.88 +8.881 +8.882 +8.883 +8.884 +8.885 +8.886 +8.887 +8.888 +8.889 +8.89 +8.891 +8.892 +8.893 +8.894 +8.895 +8.896 +8.897 +8.898 +8.899 +8.9 +8.901 +8.902 +8.903 +8.904 +8.905 +8.906 +8.907 +8.908 +8.909 +8.91 +8.911 +8.912 +8.913 +8.914 +8.915 +8.916 +8.917 +8.918 +8.919 +8.92 +8.921 +8.922 +8.923 +8.924 +8.925 +8.926 +8.927 +8.928 +8.929 +8.93 +8.931 +8.932 +8.933 +8.934 +8.935 +8.936 +8.937 +8.938 +8.939 +8.94 +8.941 +8.942 +8.943 +8.944 +8.945 +8.946 +8.947 +8.948 +8.949 +8.95 +8.951 +8.952 +8.953 +8.954 +8.955 +8.956 +8.957 +8.958 +8.959 +8.96 +8.961 +8.962 +8.963 +8.964 +8.965 +8.966 +8.967 +8.968 +8.969 +8.97 +8.971 +8.972 +8.973 +8.974 +8.975 +8.976 +8.977 +8.978 +8.979 +8.98 +8.981 +8.982 +8.983 +8.984 +8.985 +8.986 +8.987 +8.988 +8.989 +8.99 +8.991 +8.992 +8.993 +8.994 +8.995 +8.996 +8.997 +8.998 +8.999 +9 +9.001 +9.002 +9.003 +9.004 +9.005 +9.006 +9.007 +9.008 +9.009 +9.01 +9.011 +9.012 +9.013 +9.014 +9.015 +9.016 +9.017 +9.018 +9.019 +9.02 +9.021 +9.022 +9.023 +9.024 +9.025 +9.026 +9.027 +9.028 +9.029 +9.03 +9.031 +9.032 +9.033 +9.034 +9.035 +9.036 +9.037 +9.038 +9.039 +9.04 +9.041 +9.042 +9.043 +9.044 +9.045 +9.046 +9.047 +9.048 +9.049 +9.05 +9.051 +9.052 +9.053 +9.054 +9.055 +9.056 +9.057 +9.058 +9.059 +9.06 +9.061 +9.062 +9.063 +9.064 +9.065 +9.066 +9.067 +9.068 +9.069 +9.07 +9.071 +9.072 +9.073 +9.074 +9.075 +9.076 +9.077 +9.078 +9.079 +9.08 +9.081 +9.082 +9.083 +9.084 +9.085 +9.086 +9.087 +9.088 +9.089 +9.09 +9.091 +9.092 +9.093 +9.094 +9.095 +9.096 +9.097 +9.098 +9.099 +9.1 +9.101 +9.102 +9.103 +9.104 +9.105 +9.106 +9.107 +9.108 +9.109 +9.11 +9.111 +9.112 +9.113 +9.114 +9.115 +9.116 +9.117 +9.118 +9.119 +9.12 +9.121 +9.122 +9.123 +9.124 +9.125 +9.126 +9.127 +9.128 +9.129 +9.13 +9.131 +9.132 +9.133 +9.134 +9.135 +9.136 +9.137 +9.138 +9.139 +9.14 +9.141 +9.142 +9.143 +9.144 +9.145 +9.146 +9.147 +9.148 +9.149 +9.15 +9.151 +9.152 +9.153 +9.154 +9.155 +9.156 +9.157 +9.158 +9.159 +9.16 +9.161 +9.162 +9.163 +9.164 +9.165 +9.166 +9.167 +9.168 +9.169 +9.17 +9.171 +9.172 +9.173 +9.174 +9.175 +9.176 +9.177 +9.178 +9.179 +9.18 +9.181 +9.182 +9.183 +9.184 +9.185 +9.186 +9.187 +9.188 +9.189 +9.19 +9.191 +9.192 +9.193 +9.194 +9.195 +9.196 +9.197 +9.198 +9.199 +9.2 +9.201 +9.202 +9.203 +9.204 +9.205 +9.206 +9.207 +9.208 +9.209 +9.21 +9.211 +9.212 +9.213 +9.214 +9.215 +9.216 +9.217 +9.218 +9.219 +9.22 +9.221 +9.222 +9.223 +9.224 +9.225 +9.226 +9.227 +9.228 +9.229 +9.23 +9.231 +9.232 +9.233 +9.234 +9.235 +9.236 +9.237 +9.238 +9.239 +9.24 +9.241 +9.242 +9.243 +9.244 +9.245 +9.246 +9.247 +9.248 +9.249 +9.25 +9.251 +9.252 +9.253 +9.254 +9.255 +9.256 +9.257 +9.258 +9.259 +9.26 +9.261 +9.262 +9.263 +9.264 +9.265 +9.266 +9.267 +9.268 +9.269 +9.27 +9.271 +9.272 +9.273 +9.274 +9.275 +9.276 +9.277 +9.278 +9.279 +9.28 +9.281 +9.282 +9.283 +9.284 +9.285 +9.286 +9.287 +9.288 +9.289 +9.29 +9.291 +9.292 +9.293 +9.294 +9.295 +9.296 +9.297 +9.298 +9.299 +9.3 +9.301 +9.302 +9.303 +9.304 +9.305 +9.306 +9.307 +9.308 +9.309 +9.31 +9.311 +9.312 +9.313 +9.314 +9.315 +9.316 +9.317 +9.318 +9.319 +9.32 +9.321 +9.322 +9.323 +9.324 +9.325 +9.326 +9.327 +9.328 +9.329 +9.33 +9.331 +9.332 +9.333 +9.334 +9.335 +9.336 +9.337 +9.338 +9.339 +9.34 +9.341 +9.342 +9.343 +9.344 +9.345 +9.346 +9.347 +9.348 +9.349 +9.35 +9.351 +9.352 +9.353 +9.354 +9.355 +9.356 +9.357 +9.358 +9.359 +9.36 +9.361 +9.362 +9.363 +9.364 +9.365 +9.366 +9.367 +9.368 +9.369 +9.37 +9.371 +9.372 +9.373 +9.374 +9.375 +9.376 +9.377 +9.378 +9.379 +9.38 +9.381 +9.382 +9.383 +9.384 +9.385 +9.386 +9.387 +9.388 +9.389 +9.39 +9.391 +9.392 +9.393 +9.394 +9.395 +9.396 +9.397 +9.398 +9.399 +9.4 +9.401 +9.402 +9.403 +9.404 +9.405 +9.406 +9.407 +9.408 +9.409 +9.41 +9.411 +9.412 +9.413 +9.414 +9.415 +9.416 +9.417 +9.418 +9.419 +9.42 +9.421 +9.422 +9.423 +9.424 +9.425 +9.426 +9.427 +9.428 +9.429 +9.43 +9.431 +9.432 +9.433 +9.434 +9.435 +9.436 +9.437 +9.438 +9.439 +9.44 +9.441 +9.442 +9.443 +9.444 +9.445 +9.446 +9.447 +9.448 +9.449 +9.45 +9.451 +9.452 +9.453 +9.454 +9.455 +9.456 +9.457 +9.458 +9.459 +9.46 +9.461 +9.462 +9.463 +9.464 +9.465 +9.466 +9.467 +9.468 +9.469 +9.47 +9.471 +9.472 +9.473 +9.474 +9.475 +9.476 +9.477 +9.478 +9.479 +9.48 +9.481 +9.482 +9.483 +9.484 +9.485 +9.486 +9.487 +9.488 +9.489 +9.49 +9.491 +9.492 +9.493 +9.494 +9.495 +9.496 +9.497 +9.498 +9.499 +9.5 +9.501 +9.502 +9.503 +9.504 +9.505 +9.506 +9.507 +9.508 +9.509 +9.51 +9.511 +9.512 +9.513 +9.514 +9.515 +9.516 +9.517 +9.518 +9.519 +9.52 +9.521 +9.522 +9.523 +9.524 +9.525 +9.526 +9.527 +9.528 +9.529 +9.53 +9.531 +9.532 +9.533 +9.534 +9.535 +9.536 +9.537 +9.538 +9.539 +9.54 +9.541 +9.542 +9.543 +9.544 +9.545 +9.546 +9.547 +9.548 +9.549 +9.55 +9.551 +9.552 +9.553 +9.554 +9.555 +9.556 +9.557 +9.558 +9.559 +9.56 +9.561 +9.562 +9.563 +9.564 +9.565 +9.566 +9.567 +9.568 +9.569 +9.57 +9.571 +9.572 +9.573 +9.574 +9.575 +9.576 +9.577 +9.578 +9.579 +9.58 +9.581 +9.582 +9.583 +9.584 +9.585 +9.586 +9.587 +9.588 +9.589 +9.59 +9.591 +9.592 +9.593 +9.594 +9.595 +9.596 +9.597 +9.598 +9.599 +9.6 +9.601 +9.602 +9.603 +9.604 +9.605 +9.606 +9.607 +9.608 +9.609 +9.61 +9.611 +9.612 +9.613 +9.614 +9.615 +9.616 +9.617 +9.618 +9.619 +9.62 +9.621 +9.622 +9.623 +9.624 +9.625 +9.626 +9.627 +9.628 +9.629 +9.63 +9.631 +9.632 +9.633 +9.634 +9.635 +9.636 +9.637 +9.638 +9.639 +9.64 +9.641 +9.642 +9.643 +9.644 +9.645 +9.646 +9.647 +9.648 +9.649 +9.65 +9.651 +9.652 +9.653 +9.654 +9.655 +9.656 +9.657 +9.658 +9.659 +9.66 +9.661 +9.662 +9.663 +9.664 +9.665 +9.666 +9.667 +9.668 +9.669 +9.67 +9.671 +9.672 +9.673 +9.674 +9.675 +9.676 +9.677 +9.678 +9.679 +9.68 +9.681 +9.682 +9.683 +9.684 +9.685 +9.686 +9.687 +9.688 +9.689 +9.69 +9.691 +9.692 +9.693 +9.694 +9.695 +9.696 +9.697 +9.698 +9.699 +9.7 +9.701 +9.702 +9.703 +9.704 +9.705 +9.706 +9.707 +9.708 +9.709 +9.71 +9.711 +9.712 +9.713 +9.714 +9.715 +9.716 +9.717 +9.718 +9.719 +9.72 +9.721 +9.722 +9.723 +9.724 +9.725 +9.726 +9.727 +9.728 +9.729 +9.73 +9.731 +9.732 +9.733 +9.734 +9.735 +9.736 +9.737 +9.738 +9.739 +9.74 +9.741 +9.742 +9.743 +9.744 +9.745 +9.746 +9.747 +9.748 +9.749 +9.75 +9.751 +9.752 +9.753 +9.754 +9.755 +9.756 +9.757 +9.758 +9.759 +9.76 +9.761 +9.762 +9.763 +9.764 +9.765 +9.766 +9.767 +9.768 +9.769 +9.77 +9.771 +9.772 +9.773 +9.774 +9.775 +9.776 +9.777 +9.778 +9.779 +9.78 +9.781 +9.782 +9.783 +9.784 +9.785 +9.786 +9.787 +9.788 +9.789 +9.79 +9.791 +9.792 +9.793 +9.794 +9.795 +9.796 +9.797 +9.798 +9.799 +9.8 +9.801 +9.802 +9.803 +9.804 +9.805 +9.806 +9.807 +9.808 +9.809 +9.81 +9.811 +9.812 +9.813 +9.814 +9.815 +9.816 +9.817 +9.818 +9.819 +9.82 +9.821 +9.822 +9.823 +9.824 +9.825 +9.826 +9.827 +9.828 +9.829 +9.83 +9.831 +9.832 +9.833 +9.834 +9.835 +9.836 +9.837 +9.838 +9.839 +9.84 +9.841 +9.842 +9.843 +9.844 +9.845 +9.846 +9.847 +9.848 +9.849 +9.85 +9.851 +9.852 +9.853 +9.854 +9.855 +9.856 +9.857 +9.858 +9.859 +9.86 +9.861 +9.862 +9.863 +9.864 +9.865 +9.866 +9.867 +9.868 +9.869 +9.87 +9.871 +9.872 +9.873 +9.874 +9.875 +9.876 +9.877 +9.878 +9.879 +9.88 +9.881 +9.882 +9.883 +9.884 +9.885 +9.886 +9.887 +9.888 +9.889 +9.89 +9.891 +9.892 +9.893 +9.894 +9.895 +9.896 +9.897 +9.898 +9.899 +9.9 +9.901 +9.902 +9.903 +9.904 +9.905 +9.906 +9.907 +9.908 +9.909 +9.91 +9.911 +9.912 +9.913 +9.914 +9.915 +9.916 +9.917 +9.918 +9.919 +9.92 +9.921 +9.922 +9.923 +9.924 +9.925 +9.926 +9.927 +9.928 +9.929 +9.93 +9.931 +9.932 +9.933 +9.934 +9.935 +9.936 +9.937 +9.938 +9.939 +9.94 +9.941 +9.942 +9.943 +9.944 +9.945 +9.946 +9.947 +9.948 +9.949 +9.95 +9.951 +9.952 +9.953 +9.954 +9.955 +9.956 +9.957 +9.958 +9.959 +9.96 +9.961 +9.962 +9.963 +9.964 +9.965 +9.966 +9.967 +9.968 +9.969 +9.97 +9.971 +9.972 +9.973 +9.974 +9.975 +9.976 +9.977 +9.978 +9.979 +9.98 +9.981 +9.982 +9.983 +9.984 +9.985 +9.986 +9.987 +9.988 +9.989 +9.99 +9.991 +9.992 +9.993 +9.994 +9.995 +9.996 +9.997 +9.998 +9.999 +10 diff --git a/Week10/SebastianTapia/Question1/leftInt.awk b/Week10/SebastianTapia/Question1/leftInt.awk new file mode 100644 index 0000000..46d7c51 --- /dev/null +++ b/Week10/SebastianTapia/Question1/leftInt.awk @@ -0,0 +1,18 @@ +#Ran the example one you gave us in the github, worked good +BEGIN { AREA = 0 } +function curve( x ) +{ + return ( x*x*x ) + ( 2.6 * x ) - 11.7 +} +{ + if ( NR == 1 ){ + prev = $0 + } + else{ + delta = $1 - prev + y = curve( $1 - delta ) + AREA += delta * y + prev = $1 + } +} +END { print "The computed area on the left endpoint rule is:", AREA } diff --git a/Week10/SebastianTapia/Question2/Screen Shot 2019-04-11 at 5.39.36 PM.png b/Week10/SebastianTapia/Question2/Screen Shot 2019-04-11 at 5.39.36 PM.png new file mode 100644 index 0000000..88b92d4 Binary files /dev/null and b/Week10/SebastianTapia/Question2/Screen Shot 2019-04-11 at 5.39.36 PM.png differ diff --git a/Week10/SebastianTapia/Question2/asciiBash.sh b/Week10/SebastianTapia/Question2/asciiBash.sh new file mode 100644 index 0000000..e513f4b --- /dev/null +++ b/Week10/SebastianTapia/Question2/asciiBash.sh @@ -0,0 +1,8 @@ +#!/bin/bash +for any in $@ +do + grep $any asciiNumbers.txt >> del.txt + done + awk -f getAscii.awk del.txt + cat del.txt + rm del.txt diff --git a/Week10/SebastianTapia/Question2/asciiNumbers.txt b/Week10/SebastianTapia/Question2/asciiNumbers.txt new file mode 100644 index 0000000..1a2f81e --- /dev/null +++ b/Week10/SebastianTapia/Question2/asciiNumbers.txt @@ -0,0 +1,26 @@ +a 097 01100001 +b 098 01100010 +c 099 01100011 +d 100 01100100 +e 101 01100101 +f 102 01100110 +g 103 01100111 +h 104 01101000 +i 105 01101001 +j 106 01101010 +k 107 01101011 +l 108 01101100 +m 109 01101101 +n 110 01101110 +o 111 01101111 +p 112 01110000 +q 113 01110001 +r 114 01110010 +s 115 01110011 +t 116 01110100 +u 117 01110101 +v 118 01110110 +w 119 01110111 +x 120 01111000 +y 121 01111001 +z 122 01111010 diff --git a/Week10/SebastianTapia/Question2/getAscii.awk b/Week10/SebastianTapia/Question2/getAscii.awk new file mode 100644 index 0000000..3447b88 --- /dev/null +++ b/Week10/SebastianTapia/Question2/getAscii.awk @@ -0,0 +1,3 @@ +BEGIN { printf("\n%-6s %-10s %-8s %-6s %-10s\n", "INPUT", "BINARY", "DECIMAL", "HEX", "SUMMARY") }; +{ printf("%-6s %-10s %-8d %-6x The letter %s in ASCII encoding\n",$1, $3, $2, $2, $1) } +END { print("\n-=======-The ASCII Table-=======-\n") } diff --git a/Week10/SebastianTapia/README.md b/Week10/SebastianTapia/README.md new file mode 100644 index 0000000..e965047 --- /dev/null +++ b/Week10/SebastianTapia/README.md @@ -0,0 +1 @@ +Hello diff --git a/Week11/Readme.md b/Week11/Readme.md new file mode 100644 index 0000000..a099036 --- /dev/null +++ b/Week11/Readme.md @@ -0,0 +1 @@ +TBD diff --git a/Week11/SebastianTapia/AwkSed.sh b/Week11/SebastianTapia/AwkSed.sh new file mode 100644 index 0000000..f6f92bb --- /dev/null +++ b/Week11/SebastianTapia/AwkSed.sh @@ -0,0 +1,14 @@ + +#!/bin/bash + +echo "<<>>" +awk '/\320\244\321\221\320\264\320\276\321\200/ {print "Fyodor"}' words.txt +awk '/\x72\x65\x63\x6f\x72\x64\x61\xc3\xa7\xc3\xa3\x6f/ {print "memory"}' words.txt +awk '/\156\151\303\261\157/ {print "boy"}' words.txt +awk '/\xf0\x9f\x98\x82/ {print "found ROFL!"}' words.txt + +echo "<<>>" +sed -n 's/\o320\o244\o321\o221\o320\o276\o321\o200/Fyodor/p' words.txt +sed -n 's/^.*\x72\x65\x63\x6f\x72\x64\x61\xc3\xa7\xc3\xa3\x6f.*$/memory/p' < words.txt +sed -n 's/\o156\o151\o303\o261\o157/boy/p' words.txt +sed -n 's/^.*\xf0\x9f\x98\x82\.*$/found ROFL/p' < words.txt diff --git a/Week11/SebastianTapia/README.md b/Week11/SebastianTapia/README.md new file mode 100644 index 0000000..73709ba --- /dev/null +++ b/Week11/SebastianTapia/README.md @@ -0,0 +1 @@ +Testing diff --git a/Week11/SebastianTapia/words.txt b/Week11/SebastianTapia/words.txt new file mode 100644 index 0000000..ddca294 --- /dev/null +++ b/Week11/SebastianTapia/words.txt @@ -0,0 +1,11 @@ +Фёдор +Фёдор +recordação +niño +😂 +😂😂😂😂 +😂😂 +😂😂😂😂😂 +😂😂😂 +niño +recordação diff --git a/Week12/Readme.md b/Week12/Readme.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Week12/Readme.md @@ -0,0 +1 @@ + diff --git a/Week12/SebastianTapia/README.md b/Week12/SebastianTapia/README.md new file mode 100644 index 0000000..45b983b --- /dev/null +++ b/Week12/SebastianTapia/README.md @@ -0,0 +1 @@ +hi diff --git a/Week12/SebastianTapia/first.sh b/Week12/SebastianTapia/first.sh new file mode 100644 index 0000000..88da6e9 --- /dev/null +++ b/Week12/SebastianTapia/first.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +valid=true +count=1 +while [ $valid ] +do + echo $count + if [ $count -eq 5 ]; + then + break + fi + ((count++)) +done diff --git a/Week12/SebastianTapia/hi.py b/Week12/SebastianTapia/hi.py new file mode 100644 index 0000000..911c1c3 --- /dev/null +++ b/Week12/SebastianTapia/hi.py @@ -0,0 +1,7 @@ +#!/usr/bin/python + +import time +with open('/opt/hello.log', 'a') as fout: + while 1: + fout.write("HI world") + time.sleep(10) diff --git a/Week12/SebastianTapia/hi.service b/Week12/SebastianTapia/hi.service new file mode 100644 index 0000000..08133ec --- /dev/null +++ b/Week12/SebastianTapia/hi.service @@ -0,0 +1,8 @@ +[Unit] +Description=My first service + +[Service] +ExecStart=/opt/hi.py + +[Install] +WantedBy=multi-user.target diff --git a/Week12/SebastianTapia/myfirst.service b/Week12/SebastianTapia/myfirst.service new file mode 100644 index 0000000..c8a7f05 --- /dev/null +++ b/Week12/SebastianTapia/myfirst.service @@ -0,0 +1,8 @@ +[Unit] +Description=primer service + +[Service] +ExecStart=/opt/first.sh + +[Install] +WantedBy=multi-user.target diff --git a/Week12/SebastianTapia/thescript3.sh b/Week12/SebastianTapia/thescript3.sh new file mode 100644 index 0000000..33e87ef --- /dev/null +++ b/Week12/SebastianTapia/thescript3.sh @@ -0,0 +1,2 @@ +#!/bin/bash +echo "This is the last script" diff --git a/Week12/SebastianTapia/third.service b/Week12/SebastianTapia/third.service new file mode 100644 index 0000000..52762e1 --- /dev/null +++ b/Week12/SebastianTapia/third.service @@ -0,0 +1,8 @@ +[Unit] +Description=My last service + +[Service] +ExecStart=/opt/thescript3.sh + +[Install] +WantedBy=multi-user.target diff --git a/Week13/Readme.md b/Week13/Readme.md new file mode 100644 index 0000000..a099036 --- /dev/null +++ b/Week13/Readme.md @@ -0,0 +1 @@ +TBD diff --git a/Week13/SebastianTapia/Files&Comments/Decrypted.sh b/Week13/SebastianTapia/Files&Comments/Decrypted.sh new file mode 100644 index 0000000..650dd3e --- /dev/null +++ b/Week13/SebastianTapia/Files&Comments/Decrypted.sh @@ -0,0 +1,3 @@ +#!/bin/bash +cat encrypted | tr '[X-ZA-W]' '[A-Z] +#this will say HELLO SEBAS diff --git a/Week13/SebastianTapia/Files&Comments/Encrypted.sh b/Week13/SebastianTapia/Files&Comments/Encrypted.sh new file mode 100644 index 0000000..d3c689d --- /dev/null +++ b/Week13/SebastianTapia/Files&Comments/Encrypted.sh @@ -0,0 +1,2 @@ +#!/bin/bash +cat sample.txt | tr '[A-Z]' '[X-ZA-W]' diff --git a/Week13/SebastianTapia/Files&Comments/sample.txt b/Week13/SebastianTapia/Files&Comments/sample.txt new file mode 100644 index 0000000..f91317b --- /dev/null +++ b/Week13/SebastianTapia/Files&Comments/sample.txt @@ -0,0 +1 @@ +HELLO SEBAS diff --git a/Week13/SebastianTapia/READ.me b/Week13/SebastianTapia/READ.me new file mode 100644 index 0000000..45b983b --- /dev/null +++ b/Week13/SebastianTapia/READ.me @@ -0,0 +1 @@ +hi diff --git a/Week13/SebastianTapia/Sebas.encrypted b/Week13/SebastianTapia/Sebas.encrypted new file mode 100644 index 0000000..ca6de64 --- /dev/null +++ b/Week13/SebastianTapia/Sebas.encrypted @@ -0,0 +1,16 @@ +-----BEGIN PGP MESSAGE----- +hQIMAxMPbtACtk8+AQ/9HMF8zz2LigwhZi7G1DtEwqB2YuXckGM2wf2Hb6KuHlzj +PufjmBKruIsRkiQx0iOnSKljbR2uh6XpfXNbdz4/dfpqwgEiS5rBqC9B5pqHihjA +kdKmz+mJq6BsCxZNTdYaPFQDq28kW4xftptJxM/Zd5wcH1F3gu28fC5fPIchmAAp +Jo1nvgSJ1rbN4P8+jVPAs0QuTTYuHrd2z88O3O861yCLgnzOxOEtyRqM+j9mYagO +osq6wxIEUx/Teo111Wyxx5D7wwwVqgXvv8wMERPfeDk1a/QFhhIkJdpkQjunaa01 +f/0Zyv3WPsW90j+YMFPJZBei/xD5QwcmzvrTwTkPbEscF+Veneyj7exWqmHlm1+s +30iG4bHXiGWftXyQ96IPVV/61iL6Z37llSw6jqkrfgwxgRXXe2gm5qu0lV9Hbxis +xy2j0nR1V/Hf3l0EMhgOmX7pBQPDRznVHvOqm8bTDTj+zfvBeTsZshi6euJ+gDG3 +qJ0yvZue1a33dJJ/CeCWcUjnHVnXo6WqGKqzjGopH414EOAv7dZ8/EiTR63AGQq+ +qsw0KH6PVXf1HerLgsQ1n0ximkWkrUIbSDFoAsjEa4axhK6F9dkx20EaHLTYxcmO +JuMvpsKOGjH392TnboeM5T9R8Z5UNFic840msjNmKSgjWsPGklgMD61Pqyn3aavS +UQGWTGjoAMwCbEr/SdwdxusD6wSaXmBzWZ8dsxe6WSb0WG8nZ9NSujFvIusu+XEW +QzO2rpk5l8pikGzDu6A0AKlMTE8W+bmA4/mSuI9GePtWxA== +=717a +-----END PGP MESSAGE----- diff --git a/Week13/SebastianTapia/Sebas_decrypted.sh b/Week13/SebastianTapia/Sebas_decrypted.sh new file mode 100644 index 0000000..9a99e9b --- /dev/null +++ b/Week13/SebastianTapia/Sebas_decrypted.sh @@ -0,0 +1,17 @@ +-----BEGIN PGP MESSAGE----- +hQIMAxMPbtACtk8+ARAAkyuF3uvRc0954wrTPq2YXRMYQ9A2vgVt190yjsPM7dqj +jYC0Nbs/D5C41+oRwkfN7/8HAwvQv2twSf5E68PygvqEyq5/ixxJElts/0TDjbJB +ISv8RmjWAkHNZW2dWhresp4sH5XuVI8DSVdKp79Gxkzb7vsJ/fP4Sex5M6WkjWCN +h5YKWOv8pLieewcMuSrxGdtibtwhl4plex6ileuKs4n0It9xwndj9O1idW7MhdnK +0ItNpK+vOZOrOTr8VPax3gwMSzY7fqCEwSqO8WJ/q3hk6PhqluRKhkxXmy6fPBhr +LwTi4SZFdVKR6FQQXXv/uTPLFZ9NhQVoq8bJcpOca9APHTD1Qfo+YshyIyxfO/xu +GiRExCNIpP6uwZrITj2UHXxPUT306HzJGSPZ3FF9MI2+nuiTRnE3mnMk1xc751u6 +FtimLH1arQqQJJwwMPsKlI/+UNXmmXscwjoIUQ0JPqyEAc8NY6M0h48O4OaBHQ0N +Tvdik+iwMKp4DYbtnW7UiUhmW5+BWQG5x723xDkNIHPPGvDbrs2ok9CPVxSxSrJi +lJZCIyrLdos90avoNW+YhwNCxX2W21SwQzOZ5y6MoO8HYaPBp8P03myIwhbocZLy +xUmki4K+Gj70nvCp1O8maqIfE4g+ZQdFlDh8P1YXMp17E/0XWw2NOiHTyXwMWhzS +dAFBKOONjVgJe6A1VOZKFMV8vcvBUXdLDY2X9CQ+YYozZOj8IB5DlRaqegW3DLcC +cyo4F/clbWymLJOnWQRsFwv4NJTViL33z0YiM9hn8v9jnrZr0AonwiPpZL2FShMz +R/+0BrlUKaRMdhHuT2g8afrJdwI6 +=x9hb +-----END PGP MESSAGE----- diff --git a/Week13/SebastianTapia/Sebas_encrypted.sh b/Week13/SebastianTapia/Sebas_encrypted.sh new file mode 100644 index 0000000..d30e576 --- /dev/null +++ b/Week13/SebastianTapia/Sebas_encrypted.sh @@ -0,0 +1,17 @@ +-----BEGIN PGP MESSAGE----- +hQIMAxMPbtACtk8+AQ//fEJ0VrPlucLZAm8dSi3H3+DGKiyRbKpG1pXI/eVOZXKc +OET/nPXY5ijg9atkE0ImRZ/JHTV0jWN580FH+oISOHEhAh6RGSj3Q/QinN9zaY8S +2QhRQET1zqohndSP5fO/mcH8hJKDnhHEtDco5mCygQPmC8BLVmR/pbuW5Mk6/Y2L +qR/Vubd7EyMOJn3lop9gcKDcOI5LnkuXgck7XfD2OtbC9AjftfYitBDI9Agu1bRp +hxcABshopVr4p08Fy5z/uNbj1K0KeMm52NopDgiiOZ4fhq2CuxSoMvfpqbj96HY9 +tVXMXdh+Km19pwfW/qIrnGsBJVlmvtdUmH3q8O+Rmr2PMN6NYF3HwVCouOIDUgu9 +nAb/Do/XvuLee40zpIUikSu6fAA6Mr7JQTJKNhA3leQ+5zgbX9r9vQRpRLYJ29FE +mJlQ7y+teRqIa60taxCshhw84gRZVYw7DZRudcKdnXJu+Pi9yWtYRwdpdYAv0RYj +SAboKKQ8W/Afln/XrKp1umHXgzVybW3brpOxvnBCGLM42n8mL4ZRNvy7ObnInaob +ZsQ2uMpHlz/CYeY5LxgIMy2S6mtnaEfOJ5vRFS0vrmzF6E36qJ3NX5QkGznndFQV +c0uYomX3nxwVFAkRRfdAnFvmo6RCb8WqGS2ZDpufOIUGj1SboMsDnp5Fmw9CWRjS +egFrFPUuZ5gPzcj2Ez9reQAPCTcEf3DLeV0DY7e95T2a+G94FRkyWZ1Pa+SJf5FA +mX6uRwU/undFMCw48oqOczYqpxq9hbsghg4CYYQba1D+YYqA4TJBnIyhkPe6/UDo +AfYDFeKuOsnYJcJ5reaIUorYQkT3fv97AuRm +=Xoan +-----END PGP MESSAGE----- diff --git a/Week14/Readme.md b/Week14/Readme.md new file mode 100644 index 0000000..a099036 --- /dev/null +++ b/Week14/Readme.md @@ -0,0 +1 @@ +TBD diff --git a/Week14/Screen Shot 2019-05-09 at 6.12.16 PM.png b/Week14/Screen Shot 2019-05-09 at 6.12.16 PM.png new file mode 100644 index 0000000..e24d700 Binary files /dev/null and b/Week14/Screen Shot 2019-05-09 at 6.12.16 PM.png differ diff --git a/Week15/Readme.md b/Week15/Readme.md new file mode 100644 index 0000000..a099036 --- /dev/null +++ b/Week15/Readme.md @@ -0,0 +1 @@ +TBD diff --git a/Week2/solution.txt b/Week2/solution.txt new file mode 100644 index 0000000..f25c2f4 --- /dev/null +++ b/Week2/solution.txt @@ -0,0 +1,59 @@ + +Homework 2: Due via email by 7PM on February 7th 2019. + +0. Write a bash command to find the pids of all running python processes ( not python2 not python3, just python ). + +POSSIBLE ANSWER: +pidof python + +######################################################################################## + +1. Write a bash one-liner to get the pids of all *ython* processes running on your machine. i.e. all jython, python, python2, python3, cython, etc. +POSSIBLE ANSWER +ps -aux | grep ython | cut -c 10-14 + +######################################################################################## + +2. Write a bash program to sent the CONT signal to any *ython process whose pid is a multiple of 2, and a STOP signal to any process with an odd pid. + hint: + How do you list all running processes? + How do you filter processes to show only the ones you are interested in? + How do you extract a column from a table of data in linux? You may want to use cut -c. + What do you know about the last digit of an even number? Do you know how to pattern match the last digit of a string? + How do you apply a command to a series of inputs from stdin? hint: it rhymes with "xargs" + +POSSIBLE ANSWER +ps -aux | grep python | cut -c 10-14 | grep "[02468]$" | xargs kill -STOP +ps -aux | grep python | cut -c 10-14 | grep "[13579]$" | xargs kill -STOP + + +######################################################################################## + + +3. Write a bash program to delete any file under the pwd that contains a string in the format "XX-XX-XX" where X is a numeric character. + hint: + Is there a way to get grep to return a list of filenames corresponding to matched patterns? + How do you apply a command to a series of inputs from stdin? hint: it rhymes with "xargs" + +POSSIBLE ANSWER +grep -lr "[0-9][0-9]-[0-9][0-9]-[0-9][0-9]" . | xargs rm + +Test it out: + + mkdir -p a/b + echo "65-99-11" > a/foo.txt + echo "55-89-72" > a/b/foo.txt + cd a + grep -lr "[0-9][0-9]-[0-9][0-9]-[0-9][0-9]" . + grep -lr "[0-9][0-9]-[0-9][0-9]-[0-9][0-9]" . | xargs rm + grep -lr "[0-9][0-9]-[0-9][0-9]-[0-9][0-9]" . + + + + +######################################################################################## + +4. Write a bash oneliner to STOP all processes belonging to user "joseph". + +POSSIBLE ANSWER +ps -u joseph | cut -c 1-5 | xargs kill -STOP diff --git a/Week3/homework.txt b/Week3/homework.txt index cd5ae99..243263f 100644 --- a/Week3/homework.txt +++ b/Week3/homework.txt @@ -1,13 +1,19 @@ -Part One: - +Problem 1. You are a hacker. -You want to run some jobs overnight on your victim's machine while they aren't at work so they don't notice to heavy load on their machine. +You want to run some jobs overnight on your victim's machine while they aren't at work so they don't notice the heavy load on +their machine. Implement a way to stop all of a user's jobs at 9AM everyday and restart them at 5PM. -Fork and clone the NJCU_Linux_Class repo, add your solution under Week3/YourName +Add files, brief scripts / explanatory notes / etc. illustrating how you would do this ( A brief explanation in text along with +the system changes. If the only change you made was to apt-get some software, then write that. If the only change you made was +to configure a cron job to send the appropriate signal to a user's processes, then tell me about that. -Add files, brief scripts / explanatory notes / etc. illustrating how you would do this. Make a pull request to the class repo before 7PM on valentine's day. +Email me our solution. -Part Two: +Problem 2. +Play with github. Clone some software, create repos, fork some repos, submit pull requests, reread the git book, whatever. +Get yourself well acquainted with git. -Read Chapters 1 and 2 of ProGit. https://git-scm.com/book/en/v2 . For the rest of the class you are expected to have a working understanding of git and eventually you will be tested. Read the chapters and start using git to get comfortable with this tool. +Read Chapters 1 and 2 of ProGit. https://git-scm.com/book/en/v2 . For the rest of the class you are expected to have a working +understanding of git and eventually you will be tested. Read the chapters and start using git to get comfortable with this +tool. diff --git a/Week3/solution.txt b/Week3/solution.txt new file mode 100644 index 0000000..2d37e17 --- /dev/null +++ b/Week3/solution.txt @@ -0,0 +1,15 @@ +Problem 1. + +The gist of the problem is: implement a way to stop all of a user's jobs at 9AM everyday and restart them at 5PM. +You already did this in hw 2. + +We covered cron jobs in class, you use cron to schedule jobs. + +Use crontab -e to add this cron job: + +* 9 * * * ps -u username_here | cut -c 1-5 | xargs kill -STOP +* 17 * * * ps -u whatever_username_you_targeted_above | cut -c 1-5 | xargs kill -STOP + +Problem 2. +Just read and practice. Note that I said to read only Ch1&2 of the git book - the book is long and complicated +but ch 1 & 2 are relatively the same as what we did in class. diff --git a/Week4/BrunoBrito/bashrc b/Week4/BrunoBrito/bashrc new file mode 100644 index 0000000..71a4e15 --- /dev/null +++ b/Week4/BrunoBrito/bashrc @@ -0,0 +1,13 @@ +alias rm=echo "no rm for you" + +alias top="cd ~/Desktop/" +alias logs="cd /var/log/" +alias home="cd ~/" + +helloWorld + +function helloWorld() +{ + echo "hello world" +} + diff --git a/Week4/BrunoBrito/explanation.txt b/Week4/BrunoBrito/explanation.txt new file mode 100644 index 0000000..5482b40 --- /dev/null +++ b/Week4/BrunoBrito/explanation.txt @@ -0,0 +1,3 @@ +one of the reasons why the rm command is so dangerous is that there is no such things as a trash can +In windows is something is deleted it is normallyy moved to a recycle bin/trash can and can be recovered if necessary +Also rm using a -r for recursive can delete more than what you intend to. diff --git a/Week4/BrunoBrito/prog1.sh b/Week4/BrunoBrito/prog1.sh new file mode 100644 index 0000000..c95567b --- /dev/null +++ b/Week4/BrunoBrito/prog1.sh @@ -0,0 +1,7 @@ +index=1 + +while [ $index -le 10 ] +do + echo $index + index=$[$index + 1] +done diff --git a/Week4/BrunoBrito/prog2.sh b/Week4/BrunoBrito/prog2.sh new file mode 100644 index 0000000..702e8cf --- /dev/null +++ b/Week4/BrunoBrito/prog2.sh @@ -0,0 +1,4 @@ +for index in {1..10} +do + echo $index +done diff --git a/Week4/BrunoBrito/prog3.sh b/Week4/BrunoBrito/prog3.sh new file mode 100644 index 0000000..f2acc48 --- /dev/null +++ b/Week4/BrunoBrito/prog3.sh @@ -0,0 +1,6 @@ +if test -e "explanation.txt" +then + echo "the rm explanation exists" +else + echo "the rm explanation does not exist" +fi diff --git a/Week4/BrunoBrito/prog4.sh b/Week4/BrunoBrito/prog4.sh new file mode 100644 index 0000000..cfb47ce --- /dev/null +++ b/Week4/BrunoBrito/prog4.sh @@ -0,0 +1,6 @@ +array=(bash has arrays and sh does not) + +for i in ${array[@]} +do + echo $i +done diff --git a/Week4/Cesar Omar/Readme b/Week4/Cesar Omar/Readme new file mode 100644 index 0000000..8e4130e --- /dev/null +++ b/Week4/Cesar Omar/Readme @@ -0,0 +1,2 @@ +Hello Profressor, still working on it. Just setting up the folder and file names as you indicated on the homework assignment. +I will continue to work on it. diff --git a/Week4/Cesar Omar/ReadmeTwo.txt b/Week4/Cesar Omar/ReadmeTwo.txt new file mode 100644 index 0000000..765935e --- /dev/null +++ b/Week4/Cesar Omar/ReadmeTwo.txt @@ -0,0 +1 @@ +This is only a test. Want to see if this files get committed and pushed onto Githb \ No newline at end of file diff --git a/Week4/Cesar Omar/explanation.txt b/Week4/Cesar Omar/explanation.txt new file mode 100644 index 0000000..a613a60 --- /dev/null +++ b/Week4/Cesar Omar/explanation.txt @@ -0,0 +1,7 @@ +Greetings Professor, + +Ok, to the best of my knowledge and what i have read online and some other resource materials, "rm" Command is the fastet way to delete a folder."RM" which is short for "remove" is a basic command on Unix operating system. +This command can not also delete folders but the entire contents within the folder. However, the problem can be very critical as one typo may damage the entire system completely. + +Student" +Cesar Omar Sanchez diff --git a/Week4/Cesar Omar/prog1.sh b/Week4/Cesar Omar/prog1.sh new file mode 100644 index 0000000..be9c60e --- /dev/null +++ b/Week4/Cesar Omar/prog1.sh @@ -0,0 +1,6 @@ + #!/bin/bash + COUNTER=0 + while [ $COUNTER -lt 10 ]; do + echo The counter is $COUNTER + let COUNTER=COUNTER+1 + done \ No newline at end of file diff --git a/Week4/Cesar Omar/prog2.sh b/Week4/Cesar Omar/prog2.sh new file mode 100644 index 0000000..e4b2393 --- /dev/null +++ b/Week4/Cesar Omar/prog2.sh @@ -0,0 +1,5 @@ +#!/bin/bash +for i in {1..5} +do + echo "Welcome $i times" +done diff --git a/Week4/Cesar Omar/prog3.sh b/Week4/Cesar Omar/prog3.sh new file mode 100644 index 0000000..807875d --- /dev/null +++ b/Week4/Cesar Omar/prog3.sh @@ -0,0 +1 @@ +test 1 -lt 2 && echo "yes" || echo "no" \ No newline at end of file diff --git a/Week4/Cesar Omar/prog4.sh b/Week4/Cesar Omar/prog4.sh new file mode 100644 index 0000000..71f44d3 --- /dev/null +++ b/Week4/Cesar Omar/prog4.sh @@ -0,0 +1,4 @@ +#! /bin/sh - +printf >&2 'Enter a user name: ' +read user +printf '%s\n' "$user" \ No newline at end of file diff --git a/Week4/Chaitanya/bashrc b/Week4/Chaitanya/bashrc new file mode 100644 index 0000000..7902e67 --- /dev/null +++ b/Week4/Chaitanya/bashrc @@ -0,0 +1,23 @@ +#1 Alternate to remove the rm command + +alias rm = 'remove_all' + +#2. Aliases for 3 directories.. +alias bin = 'cd /bin' +alias desktop = 'cd ~/Desktop' +alias temp = 'cd /tmp' + +#3. Function that prints function +add_a_user(){ + USER=$1 + PASSWORD=$2 + shift;shift; #shifting twice. + echo "Adding user......." + echo useradd -c $USER + echo passwd $USER $PASSWORD + echo "added user $USER with $PASSWORD. " +} + +echo "start of script.." +add_a_user chaitanya HelloWorldLinux + diff --git a/Week4/Chaitanya/explanation.txt b/Week4/Chaitanya/explanation.txt new file mode 100644 index 0000000..4064017 --- /dev/null +++ b/Week4/Chaitanya/explanation.txt @@ -0,0 +1,3 @@ +Why rm command is dangerous? +rm command is for delete the file from the Unix/Linux system. Once you use rm, all your work is gone and it is not possible to recover. In order to understand that why it's impossible to recover the delete file, you need to know that Unix/Linux contains a free list which is list of disk blocks that aren't used. When you delete file, its directory entry is removed. If there are no more links to the file, its inode is added to the list of free inodes, and its datablocks are added to the free list. + diff --git a/Week4/Chaitanya/prog1.sh b/Week4/Chaitanya/prog1.sh new file mode 100644 index 0000000..e1260ff --- /dev/null +++ b/Week4/Chaitanya/prog1.sh @@ -0,0 +1,12 @@ +#!/bin/bash +while : +do + read -p "Enter two number (-1 to quit): " a b + if [ $a -eq -l] + then + break + fi + ans=$((a+b)) + echo $ans +done + diff --git a/Week4/Chaitanya/prog2.sh b/Week4/Chaitanya/prog2.sh new file mode 100644 index 0000000..3aff633 --- /dev/null +++ b/Week4/Chaitanya/prog2.sh @@ -0,0 +1,6 @@ +#!/bin/bash +# +for value in {10..0..2} +do +echo $value +done diff --git a/Week4/Chaitanya/prog3.sh b/Week4/Chaitanya/prog3.sh new file mode 100644 index 0000000..72b9dee --- /dev/null +++ b/Week4/Chaitanya/prog3.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# +NUM=5 +if test $NUM -gt 10 then +echo "Not a greater then 10" +else + "It is less than 10" +fi diff --git a/Week4/Chaitanya/prog4.sh b/Week4/Chaitanya/prog4.sh new file mode 100644 index 0000000..9e2d253 --- /dev/null +++ b/Week4/Chaitanya/prog4.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +myfunc() +{ + echo "I was called as : $@" + x=2 +} + +### Main script starts here + +echo "Script was called with $@" +x=1 +echo "x is $x" +myfunc 1 2 3 +echo "x is $x" diff --git a/Week4/Corrado/bashrc b/Week4/Corrado/bashrc new file mode 100644 index 0000000..ce4fd57 --- /dev/null +++ b/Week4/Corrado/bashrc @@ -0,0 +1,11 @@ +alias rm='rem' + +alias file1= 'cd /home/cminervini9/this' +alias file2= 'cd /home/cminervini99/that' +alias file3= 'cd /home/cminervini9/other' + +print_something () { + echo Hello I am a function +} +print_something +print_something diff --git a/Week4/Corrado/explanation.txt b/Week4/Corrado/explanation.txt new file mode 100644 index 0000000..e82ccf3 --- /dev/null +++ b/Week4/Corrado/explanation.txt @@ -0,0 +1,3 @@ +rm can cause unrecoverable system damage. +it can cause accidental deletion of a file. +can delete everything being worked on with the wrong command with no way to recover. diff --git a/Week4/Corrado/prog1.sh b/Week4/Corrado/prog1.sh new file mode 100644 index 0000000..106aa61 --- /dev/null +++ b/Week4/Corrado/prog1.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +x=2 + while [ $x -lt 10 ] +do + echo $x +x=$[x + 2] +done diff --git a/Week4/Corrado/prog2.sh b/Week4/Corrado/prog2.sh new file mode 100644 index 0000000..4ba4e57 --- /dev/null +++ b/Week4/Corrado/prog2.sh @@ -0,0 +1,5 @@ +#!/bin/bash +for i in {2..10..2} +do + echo $i +done diff --git a/Week4/Corrado/prog3.sh b/Week4/Corrado/prog3.sh new file mode 100644 index 0000000..74b7cf2 --- /dev/null +++ b/Week4/Corrado/prog3.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +x=2 +y=1 +if test $x -gt $y +then + echo "duh" +else "how?" +fi diff --git a/Week4/Corrado/prog4.sh b/Week4/Corrado/prog4.sh new file mode 100644 index 0000000..7230653 --- /dev/null +++ b/Week4/Corrado/prog4.sh @@ -0,0 +1,4 @@ +arr=(Hello World) + arr[0]=Hello + arr[1]=World + echo ${arr[0]} ${arr[1]} diff --git a/Week4/DaronDirshant/bashrc b/Week4/DaronDirshant/bashrc new file mode 100755 index 0000000..acafc2d --- /dev/null +++ b/Week4/DaronDirshant/bashrc @@ -0,0 +1,13 @@ +#alias for most used folders + +alias rr= "rm" +#alias for remove + +alias LC= "cd /home/daron/LinuxClass" +alias DL= "cd /home/daron/Downloads" +alias Doc="cd /home/daron/Documents" + +homedir() +{ + echo "This is daron's directory" +} diff --git a/Week4/DaronDirshant/prog1.sh b/Week4/DaronDirshant/prog1.sh new file mode 100755 index 0000000..225f0f0 --- /dev/null +++ b/Week4/DaronDirshant/prog1.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +term="0" #no terminals open + +while [ $term -lt 2 ] #while terminal is less than 2 +do +gnome-terminal & #open gnome terminal until amount specified is reached +term=$[$term+1] +done diff --git a/Week4/DaronDirshant/prog2.sh b/Week4/DaronDirshant/prog2.sh new file mode 100755 index 0000000..b481e42 --- /dev/null +++ b/Week4/DaronDirshant/prog2.sh @@ -0,0 +1,5 @@ +#!/bin/bash +for x in 1 2 3 +do + echo "Looping ... number $x" +done diff --git a/Week4/DaronDirshant/prog3.sh b/Week4/DaronDirshant/prog3.sh new file mode 100755 index 0000000..e1871be --- /dev/null +++ b/Week4/DaronDirshant/prog3.sh @@ -0,0 +1,9 @@ +#!/bin/bash +x=102 +if test $x -le 100 ; then + echo "This number is less than 100." +else + echo "This number is greater than 100." + +fi + diff --git a/Week4/DaronDirshant/prog4.sh b/Week4/DaronDirshant/prog4.sh new file mode 100755 index 0000000..a9afeba --- /dev/null +++ b/Week4/DaronDirshant/prog4.sh @@ -0,0 +1,4 @@ +for x in ${array[0]} +do + echo $x +done diff --git a/Week4/DaronDirshant/rm.txt b/Week4/DaronDirshant/rm.txt new file mode 100755 index 0000000..84054a6 --- /dev/null +++ b/Week4/DaronDirshant/rm.txt @@ -0,0 +1 @@ +Rm is a dangerous command because once you remove something you can't get it back because there is no recycle bin. You can remove folders and directories recursively. You can remove your root directory. diff --git a/Week4/ElizabethRappleyea/bashrc b/Week4/ElizabethRappleyea/bashrc new file mode 100644 index 0000000..00adf0e --- /dev/null +++ b/Week4/ElizabethRappleyea/bashrc @@ -0,0 +1,16 @@ +b) + 1.) alias rm = echo "not really removing" + + 2.) alias l = cd/goingintoadirectorybutfaster/l + + alias i = cd/goingin/l/i + + alias z = cd/a/b/z + + + 3.) function doSomething() + { + echo "please enter your name" + read NAME + echo "sup $NAME" + } diff --git a/Week4/ElizabethRappleyea/explanation.txt b/Week4/ElizabethRappleyea/explanation.txt new file mode 100644 index 0000000..9c34dfc --- /dev/null +++ b/Week4/ElizabethRappleyea/explanation.txt @@ -0,0 +1,2 @@ +a) rm is a dangerous command! +rm is a dangerous command, because rm can permanently delete a folder or file. A user can delete sensitive information and will not be able to "undo" whatever information that user deletes. Only use the rm command IF you are absolutely positively okay with permanently losing whatever information you are deleting. diff --git a/Week4/ElizabethRappleyea/prog1.sh b/Week4/ElizabethRappleyea/prog1.sh new file mode 100644 index 0000000..a1bcbf1 --- /dev/null +++ b/Week4/ElizabethRappleyea/prog1.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +i=0 + +while [ $i -lt 10 ] +do + echo "counting $i" + i=$[$i+1] +done diff --git a/Week4/ElizabethRappleyea/prog2.sh b/Week4/ElizabethRappleyea/prog2.sh new file mode 100644 index 0000000..2aa8685 --- /dev/null +++ b/Week4/ElizabethRappleyea/prog2.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +arr=("cow" "dog" "chicken" "sheep" "bunny") + +for i in ${arr[@]} +do + echo "we have a $i" +done diff --git a/Week4/ElizabethRappleyea/prog3.sh b/Week4/ElizabethRappleyea/prog3.sh new file mode 100644 index 0000000..1afaa35 --- /dev/null +++ b/Week4/ElizabethRappleyea/prog3.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +i=1 +aei=$[$i+1] +if test $aei -eq 2 +then + echo "1+1 is 2" +fi diff --git a/Week4/ElizabethRappleyea/prog4.sh b/Week4/ElizabethRappleyea/prog4.sh new file mode 100644 index 0000000..ed50a67 --- /dev/null +++ b/Week4/ElizabethRappleyea/prog4.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +arr=(3 7 19 97) +for i in ${arr[@]} +do + echo $i +done diff --git a/Week4/HanelDuran/Explanation.txt b/Week4/HanelDuran/Explanation.txt new file mode 100644 index 0000000..2f5bd51 --- /dev/null +++ b/Week4/HanelDuran/Explanation.txt @@ -0,0 +1,4 @@ +"rm" command is a dangerous command when used. If it is used, files or directories that a user removed from their respective locations, +will no longer be there. Where windows has the "trash can" whenever a user decides to delete a file, once an "rm" command is used +to removed a file, it is permanently deleted and cannot be recovered. + diff --git a/Week4/HanelDuran/bashrc b/Week4/HanelDuran/bashrc new file mode 100755 index 0000000..06c8f19 --- /dev/null +++ b/Week4/HanelDuran/bashrc @@ -0,0 +1,14 @@ +#!/bin/bash + +alias deleteforever='rm -rf' +alias class='cd /home/hanelduran119/NJCU_Linux_Class' +alias homework='cd /home/hanelduran119/NJCU_Linux_Class/Week4' +alias hd='cd /home/hanelduran119/NJCU_Linux_Class/Week4/HanelDuran' + +print_something(){ + echo "Hello" +} + +print_something +print_something + diff --git a/Week4/HanelDuran/prog1.sh b/Week4/HanelDuran/prog1.sh new file mode 100755 index 0000000..60a0b48 --- /dev/null +++ b/Week4/HanelDuran/prog1.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +i="4" + +while [ $i -le 10 ] +do + echo $i + i=$[$i-1+3] +done + + diff --git a/Week4/HanelDuran/prog2.sh b/Week4/HanelDuran/prog2.sh new file mode 100755 index 0000000..5f752d0 --- /dev/null +++ b/Week4/HanelDuran/prog2.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +names='Stan Kyle Cartman Kenny' + +for name in $names +do + echo $name +done + diff --git a/Week4/HanelDuran/prog3.sh b/Week4/HanelDuran/prog3.sh new file mode 100755 index 0000000..fe1a209 --- /dev/null +++ b/Week4/HanelDuran/prog3.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +if test 20 -le 18 +then + echo "You should be either in elementary school, middle school or high school." +else + echo "You should be in college." +fi + diff --git a/Week4/HanelDuran/prog4.sh b/Week4/HanelDuran/prog4.sh new file mode 100755 index 0000000..f828c5a --- /dev/null +++ b/Week4/HanelDuran/prog4.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +Name[0]="Karma" +echo "first name: ${Name[0]}" + diff --git a/Week4/Homework4/Bashrun.sh b/Week4/Homework4/Bashrun.sh new file mode 100644 index 0000000..1e39d8f --- /dev/null +++ b/Week4/Homework4/Bashrun.sh @@ -0,0 +1,6 @@ +#!/bin/bash + + +games=(Fornite starcraft2 call of duty) + echo " You cannot beat me in: ${games[1]}" + diff --git a/Week4/Homework4/bashrc b/Week4/Homework4/bashrc new file mode 100644 index 0000000..726a69e --- /dev/null +++ b/Week4/Homework4/bashrc @@ -0,0 +1,20 @@ +#!/bin/bash + + +alias remove='rm -r' #this turned remove into a command that means rm -r remove recursively" + +alias hw4='cd /home/rich19diaz/TestPullRequest/Homework4' #this an alternative comand to have faster access to homework4 directory + +alias hw3='cd /home/rich19diaz/Assignment3' #this the alternative directory to get to homework 3 + +alias hw2='cd /home/rich19diaz/Assignment2' #this alternative to directory to homework2 + +alias switch2klk= 'sudo su - klk' #just playing more to switch from user rich19diaz to user klk + +function(){ + + echo"Hello, Today's date is" + date +} + +function diff --git a/Week4/Homework4/dangerOfrm.txt b/Week4/Homework4/dangerOfrm.txt new file mode 100644 index 0000000..8b323db --- /dev/null +++ b/Week4/Homework4/dangerOfrm.txt @@ -0,0 +1,10 @@ +echo "rm is dangerous because in Linux won't ask you for confirmation if one runs a command that can break the system." +sleep 1 + +echo " rm -rf would delete all files and folders inside the specified folder" +sleep 1 + +echo " rm -rf would delete in your home folder, and rm -rf* would delete all configuration files" +sleep 1 + + diff --git a/Week4/Homework4/forLoop.sh b/Week4/Homework4/forLoop.sh new file mode 100755 index 0000000..ccc685f --- /dev/null +++ b/Week4/Homework4/forLoop.sh @@ -0,0 +1,10 @@ +#!bin/bash + +for a in 1 2 3 +do + for b in helloRich holaRich + do + echo "$a $b" + done +done +# i did a nested loop playing around with for loops to print out 1 hello rich 2 hello rich ..... and so on also this runs using bash command not ./ diff --git a/Week4/Homework4/ifTest.sh b/Week4/Homework4/ifTest.sh new file mode 100755 index 0000000..1971187 --- /dev/null +++ b/Week4/Homework4/ifTest.sh @@ -0,0 +1,9 @@ +#!bin/bash + +num=10 +if test $num -eq 10 +then + echo "congrats you passed" +else + echo "your number is not did not match better luck next time" +fi diff --git a/Week4/Homework4/whileLoop.sh b/Week4/Homework4/whileLoop.sh new file mode 100755 index 0000000..66908ef --- /dev/null +++ b/Week4/Homework4/whileLoop.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +i=10 +while [ $i -le 60 ] +do + echo $i + i=$[$i+10] +done + +# this while loop as long as i is less than or equal to 60 the print out i and add 10 to the new i. diff --git a/Week4/JimmyDebe/bashrc b/Week4/JimmyDebe/bashrc new file mode 100644 index 0000000..3043d1f --- /dev/null +++ b/Week4/JimmyDebe/bashrc @@ -0,0 +1,10 @@ +alias rm=echo "dont do this" + +alias wonp="cd home/loop" +alias wodp= "cd home/loopy" +alias wosp="cd home/woap" + +stoppin(){ + echo " Why not jsut stop here" +} + diff --git a/Week4/JimmyDebe/explainantion.txt b/Week4/JimmyDebe/explainantion.txt new file mode 100644 index 0000000..6c7aaba --- /dev/null +++ b/Week4/JimmyDebe/explainantion.txt @@ -0,0 +1 @@ +One reason why rm is dangerous to use is because when used on a file, that file can not be recovered again. Other applications like the recycle bin will allow a user to recover thier file. Using rm will destory the item forever. diff --git a/Week4/JimmyDebe/prog1.sh b/Week4/JimmyDebe/prog1.sh new file mode 100644 index 0000000..91ffcac --- /dev/null +++ b/Week4/JimmyDebe/prog1.sh @@ -0,0 +1,8 @@ +#!/bin/bash +jimmy=10 + +while [ $jimmy -le 20 ]; +do + echo "Jimmy has 37 phones" +done + diff --git a/Week4/JimmyDebe/prog2.sh b/Week4/JimmyDebe/prog2.sh new file mode 100644 index 0000000..778780c --- /dev/null +++ b/Week4/JimmyDebe/prog2.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +school=("is" "so" "much" "fun") +i=0 + +for i in "${school[@]}" +do + echo "{ $school[$i-1]}" +done diff --git a/Week4/JimmyDebe/prog3.sh b/Week4/JimmyDebe/prog3.sh new file mode 100644 index 0000000..86cd0ac --- /dev/null +++ b/Week4/JimmyDebe/prog3.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +loops=4 +if test $loops -ge 3 +then + echo "Wow amazing" +else + echo "Not so cool huh" +fi diff --git a/Week4/JimmyDebe/prog4.sh b/Week4/JimmyDebe/prog4.sh new file mode 100644 index 0000000..285240b --- /dev/null +++ b/Week4/JimmyDebe/prog4.sh @@ -0,0 +1,7 @@ + +jimmy="Amazinsd" + +run(){ + echo "$jimmy" +} +run diff --git a/Week4/Luis Collymoore/Ifttt.sh b/Week4/Luis Collymoore/Ifttt.sh new file mode 100755 index 0000000..68a5eb9 --- /dev/null +++ b/Week4/Luis Collymoore/Ifttt.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# Basic if statement + +echo "Insert a number from 0 to 100" +num=$(read line) + if [ $num > 100 ]; + then + echo "There is something wrong here." +elif [[ $num < 100 ]]; +then +echo "Hey, That's a large number you are comparing there" +else +pwd +date +fi diff --git a/Week4/Luis Collymoore/NoSh.sh b/Week4/Luis Collymoore/NoSh.sh new file mode 100755 index 0000000..b4910cd --- /dev/null +++ b/Week4/Luis Collymoore/NoSh.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Basic if statement + +echo "Insert a number from 0 to 100" +num=$(read line) + if [ $num > 100 ]; + then + echo "There is something wrong here." +elif [[ $num < 100 ]]; +then +echo "Hey, That's a large number you are comparing there" +else +pwd +date +fi diff --git a/Week4/Luis Collymoore/bashrc b/Week4/Luis Collymoore/bashrc new file mode 100644 index 0000000..2a9406e --- /dev/null +++ b/Week4/Luis Collymoore/bashrc @@ -0,0 +1,32 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples +# We use preexec and precmd hook functions for Bash +# If you have anything that's using the Debug Trap or PROMPT_COMMAND +# change it to use preexec or precmd +# See also https://github.com/rcaloras/bash-preexec + + +#alternative to rm +alias del="mv -v --target-directory ~/.Trash --backup=t" +#=========================================================== + +#aliases for the most common folders +alias CS50="cd ~/Documents/Projects/CS50" +alias linux="cd ~/Dropbox/NJCU/CS 407 intro to Unix-Linux/homework" +alias dfolder="cd ~/Download" + +#============================================================ +#Make process searchable +#it is executed by using the alias and the name of the process i.e "psg bash" +alias psg="ps aux | grep -v grep | grep -i -e VSZ -e" + +#============================================================ +#Function to create a folder and move into it as soon as it gets createad +mcd () { + mkdir -p $1 + cd $1 +} +#How to check your 10 most use commands in terminal +#============================================================== +alias favco="history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10" diff --git a/Week4/Luis Collymoore/count5.sh b/Week4/Luis Collymoore/count5.sh new file mode 100755 index 0000000..3bf97ad --- /dev/null +++ b/Week4/Luis Collymoore/count5.sh @@ -0,0 +1,5 @@ +#!/bin/bash +for i in 1 2 3 4 5 +do + echo "Welcome $i times" +done diff --git a/Week4/Luis Collymoore/homework.txt b/Week4/Luis Collymoore/homework.txt new file mode 100644 index 0000000..8573504 --- /dev/null +++ b/Week4/Luis Collymoore/homework.txt @@ -0,0 +1,45 @@ +Make a pull request on my repository. The pr should contain a directory which contains 6 files: + + a) a .txt file explaining in 3 sentences why rm is a dangerous command. + + b) A bashrc file ( we'll call it bashrc and not .bashrc just so it's easier to commit the file ) + + containing + 1. an alternative to rm ( either an alias or a function + 2. aliases for 3 directories so it's easier to cd to them + 3. a function that does something + + c) a bash program you wrote that uses a while loop + + d) a bash program you wrote that uses a for loop + + e) a bash program that uses an "if" statement with the "test" command + + f) a shell script that can be run with the bash interpreter, but which will not run with sh. +--------- + +When I clone the repo on Thursday night after class I want to see it laid out like this: + + + student1 + explanation.txt + bashrc + prog1.sh + prog2.sh + prog3.sh + prog4.sh + student2 + explanation.txt + bashrc + prog1.sh + prog2.sh + prog3.sh + prog4.sh + student3 + ... etc ... + +---- + + +Need help?? +https://superuser.com/questions/382407/best-practices-to-alias-the-rm-command-and-make-it-safer diff --git a/Week4/Luis Collymoore/terminal.sh b/Week4/Luis Collymoore/terminal.sh new file mode 100755 index 0000000..6e3eb53 --- /dev/null +++ b/Week4/Luis Collymoore/terminal.sh @@ -0,0 +1,12 @@ + +#!/bin/bash + +# This script opens 4 terminal windows. + +i="0" + +while [ $i -lt 4 ] +do +xterm & +i=$[$i+1] +done diff --git a/Week4/Luis Collymoore/why rm is dangerous.txt b/Week4/Luis Collymoore/why rm is dangerous.txt new file mode 100644 index 0000000..224e5fe --- /dev/null +++ b/Week4/Luis Collymoore/why rm is dangerous.txt @@ -0,0 +1,3 @@ +rm (Remove) + +Is a very dangerous command that can delete specific files or directories. In Unix, the use of rm is especially risky because there is no undelete command, so once deleted, it’s unrecoverable. If privileged user escalates his privileges to sudo and decides to use rm, then he could permanently remove sensitive and valuable data from the system. diff --git a/Week4/MackensieAlvarez/bashrc b/Week4/MackensieAlvarez/bashrc new file mode 100644 index 0000000..a9bb462 --- /dev/null +++ b/Week4/MackensieAlvarez/bashrc @@ -0,0 +1,11 @@ + +alias remove='rm -rf' + +alias home="cd ~/" +alias logs="cd /var/log/" +alias users="cd /home/" + +myName(){ + echo "My name is Mackensie" +} +myName \ No newline at end of file diff --git a/Week4/MackensieAlvarez/explanation.txt b/Week4/MackensieAlvarez/explanation.txt new file mode 100644 index 0000000..3dc87ad --- /dev/null +++ b/Week4/MackensieAlvarez/explanation.txt @@ -0,0 +1 @@ +Rm is extremely dangerous because it is the command used to delete folders and files. This can be dangerous because you can delete important system files \ No newline at end of file diff --git a/Week4/MackensieAlvarez/prog1.sh b/Week4/MackensieAlvarez/prog1.sh new file mode 100644 index 0000000..a9543aa --- /dev/null +++ b/Week4/MackensieAlvarez/prog1.sh @@ -0,0 +1,7 @@ +count=0 +while [ $count -le 10 s] +do + echo "number " + $count + count=$(( $count + 1 )) +done + \ No newline at end of file diff --git a/Week4/MackensieAlvarez/prog2.sh b/Week4/MackensieAlvarez/prog2.sh new file mode 100644 index 0000000..98316b1 --- /dev/null +++ b/Week4/MackensieAlvarez/prog2.sh @@ -0,0 +1,5 @@ +users=(Mackensie Harry Mike Scott) +for user in "${users[@]}" +do + echo "$user is a user" +done \ No newline at end of file diff --git a/Week4/MackensieAlvarez/prog3.sh b/Week4/MackensieAlvarez/prog3.sh new file mode 100644 index 0000000..e29118c --- /dev/null +++ b/Week4/MackensieAlvarez/prog3.sh @@ -0,0 +1,7 @@ +number = 5 +if test $number -le 18 +then + echo "Number equal to 18" +else + echo "Number is not to 18" +fi diff --git a/Week4/MackensieAlvarez/prog4.sh b/Week4/MackensieAlvarez/prog4.sh new file mode 100644 index 0000000..8d67d38 --- /dev/null +++ b/Week4/MackensieAlvarez/prog4.sh @@ -0,0 +1,3 @@ +arr[90]=33 +echo "Index 90 has value: ${arr[90]}" + diff --git a/Week4/MarkDecello/3_reasons.txt b/Week4/MarkDecello/3_reasons.txt new file mode 100644 index 0000000..c339af0 --- /dev/null +++ b/Week4/MarkDecello/3_reasons.txt @@ -0,0 +1 @@ +The rm -rf command is one of the fastest way to delete a folder and its contents. But a little typo or ignorance may result into unrecoverable system damage.The rm command can also be used in other dangerous ways – rm –rf ~ would delete all files in your home folder, while rm -rf .* would delete all your configuration files. diff --git a/Week4/MarkDecello/bash_only.sh b/Week4/MarkDecello/bash_only.sh new file mode 100644 index 0000000..2295efb --- /dev/null +++ b/Week4/MarkDecello/bash_only.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +arr=(KA ME HA Me HAA) +echo ${arr[@]} diff --git a/Week4/MarkDecello/bashrc b/Week4/MarkDecello/bashrc new file mode 100644 index 0000000..fcd291e --- /dev/null +++ b/Week4/MarkDecello/bashrc @@ -0,0 +1,13 @@ +#alternative for rm command +alias remove='rm' + +#aliases for 3 directories +alias markd='cd ~/NJCU_Linux_Class/Week4/MarkDecello' +alias week4='cd ~/NJCU_Linux_Class/Week4' +alias njcu='cd ~/NJCU_Linux_Class' + +#Function that cats 3_reasons.txt +reasons(){ + cat 3_reasons.txt +} + diff --git a/Week4/MarkDecello/for_loop.sh b/Week4/MarkDecello/for_loop.sh new file mode 100644 index 0000000..c7e5f9e --- /dev/null +++ b/Week4/MarkDecello/for_loop.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +for x in {1..5} +do + for y in {1..5} + do + z=$((x*y)) + echo $z + done +done diff --git a/Week4/MarkDecello/if_statement.sh b/Week4/MarkDecello/if_statement.sh new file mode 100644 index 0000000..2bde37e --- /dev/null +++ b/Week4/MarkDecello/if_statement.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +echo "What is 4 + 4?" + +read ans + +if test $ans -eq 8 +then + echo "You got the correct answer!" +else + echo "Wrong answer!" +fi diff --git a/Week4/MarkDecello/while_loop.sh b/Week4/MarkDecello/while_loop.sh new file mode 100644 index 0000000..8972040 --- /dev/null +++ b/Week4/MarkDecello/while_loop.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +echo "I'm choosing a number from 1 to 10" +echo "can you guess what number it is?" + +read num + +while [ $num -ne 7 ] +do + echo "Please try again!" + read num +done + +echo "Congratulations! You guessed my number!" diff --git a/Week4/Michael Zambrano/bashrc b/Week4/Michael Zambrano/bashrc new file mode 100644 index 0000000..eec8970 --- /dev/null +++ b/Week4/Michael Zambrano/bashrc @@ -0,0 +1,23 @@ +#hw4 -------------------------------------------------------------------------------- +alias cputemp = " sensors | grep core " +alias myPrograms="ps -u c4inaction" +alias eclipse="cd /home/c4inaction/eclipse/java-2018-12/eclipse/eclipse" +alias remove= rn -i -rf + +myinfo () { + printf "CPU: " + cat /proc/cpuinfo | grep "model name" | head -1 | awk '{ for (i = 4; i <= NF; i++) printf "%s ", $i }' + printf "\n" + + cat /etc/issue | awk '{ printf "OS: %s %s %s %s | " , $1 , $2 , $3 , $4 }' + uname -a | awk '{ printf "Kernel: %s " , $3 }' + uname -m | awk '{ printf "%s | " , $1 }' + kded4 --version | grep "KDE Development Platform" | awk '{ printf "KDE: %s", $4 }' + printf "\n" + uptime | awk '{ printf "Uptime: %s %s %s", $3, $4, $5 }' | sed 's/,//g' + printf "\n" + cputemp | head -1 | awk '{ printf "%s %s %s\n", $1, $2, $3 }' + cputemp | tail -1 | awk '{ printf "%s %s %s\n", $1, $2, $3 }' + #cputemp | awk '{ printf "%s %s", $1 $2 }' +} + diff --git a/Week4/Michael Zambrano/forLoop.sh b/Week4/Michael Zambrano/forLoop.sh new file mode 100755 index 0000000..4f25768 --- /dev/null +++ b/Week4/Michael Zambrano/forLoop.sh @@ -0,0 +1,4 @@ + #!/bin/bash + for i in $( ls ); do + echo item: $i + done diff --git a/Week4/Michael Zambrano/ifTest.sh b/Week4/Michael Zambrano/ifTest.sh new file mode 100644 index 0000000..e87fbd7 --- /dev/null +++ b/Week4/Michael Zambrano/ifTest.sh @@ -0,0 +1,16 @@ +#!/bin/bash +expectedSum=213b8d4956b9243af7d13d0f2a8ef8d3 +zipURL=https://github.com/melvyniandrag/lorem/archive/master.zip +zipName=master.zip +unzippedName=lorem-master + +wget $zipURL +echo $? > answer.txt + +if grep -Fxq "0" answer.txt +then + echo "Success file downloaded !!" +else + echo "Error downloading file" + exit 1; +fi diff --git a/Week4/Michael Zambrano/theHw.txt b/Week4/Michael Zambrano/theHw.txt new file mode 100644 index 0000000..c67e0ed --- /dev/null +++ b/Week4/Michael Zambrano/theHw.txt @@ -0,0 +1,3 @@ +The Rm command is so powerful because there is no way back from what ever you delete. +a good example of the rm command would be rm -rf this will delete everything in the directory without a warning. +that is why an Alias for the rm command can be of help. an example of one can be "remove = rm -i -rf " this will question you before actual removing the file. diff --git a/Week4/Michael Zambrano/whileLoop.sh b/Week4/Michael Zambrano/whileLoop.sh new file mode 100644 index 0000000..2f116e4 --- /dev/null +++ b/Week4/Michael Zambrano/whileLoop.sh @@ -0,0 +1,5 @@ +#!/bin/bash +ps -e | awk '/ython/ {print $1 }' | grep [24680]$ > even.txt; cat even.txt # count even numbers +while read e; do + echo "$e" | xargs kill -CONT +done < even.txt diff --git a/Week4/ParshotanSeenanan/bashrc b/Week4/ParshotanSeenanan/bashrc new file mode 100644 index 0000000..6982c46 --- /dev/null +++ b/Week4/ParshotanSeenanan/bashrc @@ -0,0 +1,10 @@ +alias rm=echo "Be extremely careful" + +alias a="cd /placeholder/youdontwannatypeallthis/a" +alias b="cd /c/d/b" +alias d="cd /c/d" + +function doesSomething() { + echo "Does Something?" +} + diff --git a/Week4/ParshotanSeenanan/explanation.txt b/Week4/ParshotanSeenanan/explanation.txt new file mode 100644 index 0000000..4c37bff --- /dev/null +++ b/Week4/ParshotanSeenanan/explanation.txt @@ -0,0 +1 @@ +Rm is a dangerous command because of how 'powerful' it is. It can completely remove a file or folder without as much as a warning. Coupled with the fact that on Linux when a file a removed, there is no trash bin or recylce where you can go to restore it, means that one accidental rm command can never be taken back. diff --git a/Week4/ParshotanSeenanan/prog1.sh b/Week4/ParshotanSeenanan/prog1.sh new file mode 100644 index 0000000..aa053f3 --- /dev/null +++ b/Week4/ParshotanSeenanan/prog1.sh @@ -0,0 +1,9 @@ +#While Loop + +i=0 + +while [ $i -le 10 ] +do + echo $i + i=$[$i + 1] +done diff --git a/Week4/ParshotanSeenanan/prog2.sh b/Week4/ParshotanSeenanan/prog2.sh new file mode 100644 index 0000000..8b0d5e1 --- /dev/null +++ b/Week4/ParshotanSeenanan/prog2.sh @@ -0,0 +1,9 @@ +#For Loop + +arr=("apple" "banana" "whateverfruithasC" "Danimals" "eggo" "frenchfries") + +for i in ${arr[@]} +do + echo $i +done + diff --git a/Week4/ParshotanSeenanan/prog3.sh b/Week4/ParshotanSeenanan/prog3.sh new file mode 100644 index 0000000..4db2f1c --- /dev/null +++ b/Week4/ParshotanSeenanan/prog3.sh @@ -0,0 +1,6 @@ +#If Statement + +if test 1 -eq 1 +then + echo "Equality for all" +fi diff --git a/Week4/ParshotanSeenanan/prog4.sh b/Week4/ParshotanSeenanan/prog4.sh new file mode 100644 index 0000000..7831f22 --- /dev/null +++ b/Week4/ParshotanSeenanan/prog4.sh @@ -0,0 +1,8 @@ +#Only Works With Bash not Shell + +arr=(1 2 3 3 2 1) + +for i in ${arr[@]} +do + echo $i +done diff --git a/Week4/ShairaBergantinos/bashrc b/Week4/ShairaBergantinos/bashrc new file mode 100644 index 0000000..442e0aa --- /dev/null +++ b/Week4/ShairaBergantinos/bashrc @@ -0,0 +1,12 @@ +# 1. an alternative to rm +alias rmcheck = "rm -i" + +# 2. aliases for 3 directories +alias docs = "cd ~/Documents/" +alias pics = "cd ~/Pictures/" +alias vids = "cd ~/Videos/" + +# 3. a function that does something +function hw() { + echo "hello world" + } diff --git a/Week4/ShairaBergantinos/explanation.txt b/Week4/ShairaBergantinos/explanation.txt new file mode 100644 index 0000000..a99b0fa --- /dev/null +++ b/Week4/ShairaBergantinos/explanation.txt @@ -0,0 +1 @@ +Files and directories are permanently deleted with the rm command. No dialog box pops up to confirm the decision either. Users can easily delete important system data. diff --git a/Week4/ShairaBergantinos/prog1.sh b/Week4/ShairaBergantinos/prog1.sh new file mode 100644 index 0000000..1221ab0 --- /dev/null +++ b/Week4/ShairaBergantinos/prog1.sh @@ -0,0 +1,7 @@ +i=0 + +while [ $i -le 10 ] +do + echo $i + ((i++)) +done diff --git a/Week4/ShairaBergantinos/prog2.sh b/Week4/ShairaBergantinos/prog2.sh new file mode 100644 index 0000000..256d07a --- /dev/null +++ b/Week4/ShairaBergantinos/prog2.sh @@ -0,0 +1,6 @@ +i=0 + +for i in {0...10...1} +do + echo $i +done diff --git a/Week4/ShairaBergantinos/prog3.sh b/Week4/ShairaBergantinos/prog3.sh new file mode 100644 index 0000000..7ea1af5 --- /dev/null +++ b/Week4/ShairaBergantinos/prog3.sh @@ -0,0 +1,6 @@ +if test -z "$var" +then + echo "\$String is empty" +else + echo "\$String has content" +fi diff --git a/Week4/ShairaBergantinos/prog4.sh b/Week4/ShairaBergantinos/prog4.sh new file mode 100644 index 0000000..51bb8fe --- /dev/null +++ b/Week4/ShairaBergantinos/prog4.sh @@ -0,0 +1,2 @@ +arr=(1,2,3) +echo ${arr[]} diff --git a/Week4/Smart_Owusu_Ansah/IFYOURUNYOUDELETESYSTEM32.sh b/Week4/Smart_Owusu_Ansah/IFYOURUNYOUDELETESYSTEM32.sh new file mode 100755 index 0000000..ef856f1 --- /dev/null +++ b/Week4/Smart_Owusu_Ansah/IFYOURUNYOUDELETESYSTEM32.sh @@ -0,0 +1,8 @@ +i=0 +x=(ya yeet) + +while [ $i -lt 10 ] +do + echo $i + i=$[$i+1] +done diff --git a/Week4/Smart_Owusu_Ansah/bashrc b/Week4/Smart_Owusu_Ansah/bashrc new file mode 100644 index 0000000..b372143 --- /dev/null +++ b/Week4/Smart_Owusu_Ansah/bashrc @@ -0,0 +1,13 @@ +touch poop +alias norm="rm -fr ./poop" +mkdir scoop +mkdir de +alias yeet="cd scoop" +alias ya="cd ../de" +alias yah="cd .." + +function yeezy(){ + echo "one hundred billion dollars ~Dr.Evil" +} + +yeezy diff --git a/Week4/Smart_Owusu_Ansah/explanation.txt b/Week4/Smart_Owusu_Ansah/explanation.txt new file mode 100644 index 0000000..4069a26 --- /dev/null +++ b/Week4/Smart_Owusu_Ansah/explanation.txt @@ -0,0 +1,4 @@ +rm cannot be undone, once something is removed it is gone forever +linux has no recycle bin like windows does +using a -r, it is possible to delete stuff you did not mean to, specially when using wildcards + diff --git a/Week4/Smart_Owusu_Ansah/forLoop.sh b/Week4/Smart_Owusu_Ansah/forLoop.sh new file mode 100755 index 0000000..ad602d2 --- /dev/null +++ b/Week4/Smart_Owusu_Ansah/forLoop.sh @@ -0,0 +1,4 @@ +for i in {1..10} +do +echo $i +done diff --git a/Week4/Smart_Owusu_Ansah/if.sh b/Week4/Smart_Owusu_Ansah/if.sh new file mode 100755 index 0000000..1f796a7 --- /dev/null +++ b/Week4/Smart_Owusu_Ansah/if.sh @@ -0,0 +1,13 @@ +i=0 + +while [ $i -lt 10 ] +do + if test $i -eq 7 + then + echo "Feeling lucky punk!" + fi + + echo $i + + i=$[$i+1] +done diff --git a/Week4/Smart_Owusu_Ansah/while.sh b/Week4/Smart_Owusu_Ansah/while.sh new file mode 100755 index 0000000..6f37269 --- /dev/null +++ b/Week4/Smart_Owusu_Ansah/while.sh @@ -0,0 +1,7 @@ +i=0 + +while [ $i -lt 10 ] +do + echo $i + i=$[$i+1] +done diff --git a/Week4/StevenSurujballi/bashrc b/Week4/StevenSurujballi/bashrc new file mode 100644 index 0000000..46b7150 --- /dev/null +++ b/Week4/StevenSurujballi/bashrc @@ -0,0 +1,20 @@ +#!/bin/bash + +# 1. An alternative to rm + +alias rmconfirm = "rm -rf" + +# 2. aliases for 3 directories so it's easier to cd to them + +alias home="cd ~/" + +alias logs="cd /var/log/" + +alias homework="cd ~/NJCU/Homework" + +# 3. write a function that does something + + myAge() { + echo "I am 25 years old." +} + diff --git a/Week4/StevenSurujballi/explanation.txt b/Week4/StevenSurujballi/explanation.txt new file mode 100644 index 0000000..a606573 --- /dev/null +++ b/Week4/StevenSurujballi/explanation.txt @@ -0,0 +1 @@ +The rm command is dangerous because in Linux, there isn't a trash bin where you can recover files unlike in the Windows OS. Therefore, removing something with the rm command removes files and directories permanently which is the main reason why it is very dangerous to use. Also, there isn't a warning when the command is used and so novice users may not immediately realize the damage that has been done. diff --git a/Week4/StevenSurujballi/prog1.sh b/Week4/StevenSurujballi/prog1.sh new file mode 100644 index 0000000..1c49c32 --- /dev/null +++ b/Week4/StevenSurujballi/prog1.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +#write a bash program that uses a while loop + +count=0 + +while [ $count -le 10 ] +do + echo $count + count=$[$count + 1] +done + diff --git a/Week4/StevenSurujballi/prog2.sh b/Week4/StevenSurujballi/prog2.sh new file mode 100644 index 0000000..01c3d6c --- /dev/null +++ b/Week4/StevenSurujballi/prog2.sh @@ -0,0 +1,11 @@ +#!bin/bash + +#write a bash program using a for loop + +arr=("red" "blue" "purple" "yellow" "orange") + +for i in ${arr[@]} +do + echo $i +done + diff --git a/Week4/StevenSurujballi/prog3.sh b/Week4/StevenSurujballi/prog3.sh new file mode 100644 index 0000000..0ff7aa3 --- /dev/null +++ b/Week4/StevenSurujballi/prog3.sh @@ -0,0 +1,11 @@ +#!bin/bash + +#write a program that uses an if statement with the test command + +count=10 +if test $count -eq 10 +then + echo "Number is 10" +else + echo "Number is not 10" + fi diff --git a/Week4/StevenSurujballi/prog4.sh b/Week4/StevenSurujballi/prog4.sh new file mode 100644 index 0000000..f31803e --- /dev/null +++ b/Week4/StevenSurujballi/prog4.sh @@ -0,0 +1,11 @@ +#!bin/bash +#a shell script that can be run with the bash interpreter, but which will not run with sh. + + +var=xbvpn +if [[ $var == *vpn ]] +then + echo “match” +fi + + diff --git a/Week4/fleminghw4/bashrc b/Week4/fleminghw4/bashrc new file mode 100644 index 0000000..8f08aba --- /dev/null +++ b/Week4/fleminghw4/bashrc @@ -0,0 +1,12 @@ +alias rm=echo "oblivion" + +alias doc="cd ~/Documents/" +alias tunes="cd ~/Music/" +alias home="cd ~/Desktop" + +wildWest + +function wildWest() +{ + echo "wild west era" + } diff --git a/Week4/fleminghw4/explaination.txt b/Week4/fleminghw4/explaination.txt new file mode 100644 index 0000000..cac4513 --- /dev/null +++ b/Week4/fleminghw4/explaination.txt @@ -0,0 +1,2 @@ +rm is dangerous because without an ali, it will delete everything in a directory and there will no recycle bin to retrieve it from if you change your mind + diff --git a/Week4/fleminghw4/prog1.sh b/Week4/fleminghw4/prog1.sh new file mode 100644 index 0000000..93a4f08 --- /dev/null +++ b/Week4/fleminghw4/prog1.sh @@ -0,0 +1,7 @@ +start=1 +while [ $start -le 2 ]; +do + echo $start - 1 + + +done diff --git a/Week4/fleminghw4/prog2.sh b/Week4/fleminghw4/prog2.sh new file mode 100644 index 0000000..4b05e5c --- /dev/null +++ b/Week4/fleminghw4/prog2.sh @@ -0,0 +1,4 @@ +for numbers in {1..30} +do + echo $numbers + done diff --git a/Week4/fleminghw4/prog3.sh b/Week4/fleminghw4/prog3.sh new file mode 100644 index 0000000..51a484f --- /dev/null +++ b/Week4/fleminghw4/prog3.sh @@ -0,0 +1,6 @@ +if test -tunes "bashrc" +then + echo "music alias works" + else + echo "music alias doesnt work" + fi diff --git a/Week4/fleminghw4/prog4.sh b/Week4/fleminghw4/prog4.sh new file mode 100644 index 0000000..824f274 --- /dev/null +++ b/Week4/fleminghw4/prog4.sh @@ -0,0 +1,5 @@ +duck=(quack quack quack) +for d in ${duck[@]} +do + echo $d +done diff --git a/Week5/2019-03-05.png b/Week5/2019-03-05.png new file mode 100644 index 0000000..0e2c285 Binary files /dev/null and b/Week5/2019-03-05.png differ diff --git a/Week5/Bruno Brito/HW 5 Proof.jpg b/Week5/Bruno Brito/HW 5 Proof.jpg new file mode 100644 index 0000000..3593b17 Binary files /dev/null and b/Week5/Bruno Brito/HW 5 Proof.jpg differ diff --git a/Week5/CesarOmar/Readme.txt b/Week5/CesarOmar/Readme.txt new file mode 100644 index 0000000..a55206d --- /dev/null +++ b/Week5/CesarOmar/Readme.txt @@ -0,0 +1,5 @@ +Hello Professor, + +I believe i figured it out and I am enlosing a few snapshot of what I have completed. I'm also send you an email video of the actual work in action. + +Cesar Sanchez diff --git a/Week5/CesarOmar/almost done.png b/Week5/CesarOmar/almost done.png new file mode 100644 index 0000000..256f1aa Binary files /dev/null and b/Week5/CesarOmar/almost done.png differ diff --git a/Week5/CesarOmar/completion.png b/Week5/CesarOmar/completion.png new file mode 100644 index 0000000..1a61507 Binary files /dev/null and b/Week5/CesarOmar/completion.png differ diff --git a/Week5/CesarOmar/directory_home.png b/Week5/CesarOmar/directory_home.png new file mode 100644 index 0000000..1e6147d Binary files /dev/null and b/Week5/CesarOmar/directory_home.png differ diff --git a/Week5/CesarOmar/ssh_message_banner.png b/Week5/CesarOmar/ssh_message_banner.png new file mode 100644 index 0000000..6d88c34 Binary files /dev/null and b/Week5/CesarOmar/ssh_message_banner.png differ diff --git a/Week5/Chaitanya/Answer1+2+3.png b/Week5/Chaitanya/Answer1+2+3.png new file mode 100644 index 0000000..fa431ab Binary files /dev/null and b/Week5/Chaitanya/Answer1+2+3.png differ diff --git a/Week5/Chaitanya/Homework5 b/Week5/Chaitanya/Homework5 new file mode 100644 index 0000000..0987ebb --- /dev/null +++ b/Week5/Chaitanya/Homework5 @@ -0,0 +1 @@ +Homework 5 been completed diff --git a/Week5/Corrado/2019-03-05.png b/Week5/Corrado/2019-03-05.png new file mode 100644 index 0000000..0e2c285 Binary files /dev/null and b/Week5/Corrado/2019-03-05.png differ diff --git a/Week5/Corrado/Hw5 b/Week5/Corrado/Hw5 new file mode 100644 index 0000000..50a6796 --- /dev/null +++ b/Week5/Corrado/Hw5 @@ -0,0 +1 @@ +HW5 diff --git a/Week5/HW5_Smart_Owusu_Ansah/HW5_Smart_Owusu_Ansah.jpg b/Week5/HW5_Smart_Owusu_Ansah/HW5_Smart_Owusu_Ansah.jpg new file mode 100644 index 0000000..cd484ee Binary files /dev/null and b/Week5/HW5_Smart_Owusu_Ansah/HW5_Smart_Owusu_Ansah.jpg differ diff --git a/Week5/HanelDuran/HWProof.png b/Week5/HanelDuran/HWProof.png new file mode 100644 index 0000000..2fe0789 Binary files /dev/null and b/Week5/HanelDuran/HWProof.png differ diff --git a/Week5/Homework5.PNG b/Week5/Homework5.PNG new file mode 100644 index 0000000..4d21359 Binary files /dev/null and b/Week5/Homework5.PNG differ diff --git a/Week5/JimmyDebe/20190307_145353.jpg b/Week5/JimmyDebe/20190307_145353.jpg new file mode 100644 index 0000000..647713f Binary files /dev/null and b/Week5/JimmyDebe/20190307_145353.jpg differ diff --git a/Week5/Luis Collymoore/Screenshot from 2019-02-27 23.22.57.png b/Week5/Luis Collymoore/Screenshot from 2019-02-27 23.22.57.png new file mode 100644 index 0000000..ae2e4e0 Binary files /dev/null and b/Week5/Luis Collymoore/Screenshot from 2019-02-27 23.22.57.png differ diff --git a/Week5/Luis Collymoore/Screenshot from 2019-02-28 01.11.33.png b/Week5/Luis Collymoore/Screenshot from 2019-02-28 01.11.33.png new file mode 100644 index 0000000..f7f3986 Binary files /dev/null and b/Week5/Luis Collymoore/Screenshot from 2019-02-28 01.11.33.png differ diff --git a/Week5/Luis Collymoore/Screenshot from 2019-02-28 01.12.47.png b/Week5/Luis Collymoore/Screenshot from 2019-02-28 01.12.47.png new file mode 100644 index 0000000..bc024f9 Binary files /dev/null and b/Week5/Luis Collymoore/Screenshot from 2019-02-28 01.12.47.png differ diff --git a/Week5/Luis Collymoore/banner.png b/Week5/Luis Collymoore/banner.png new file mode 100644 index 0000000..08e34a1 Binary files /dev/null and b/Week5/Luis Collymoore/banner.png differ diff --git a/Week5/MarkDecello/Homework5_notes.txt b/Week5/MarkDecello/Homework5_notes.txt new file mode 100644 index 0000000..7f1d5c3 --- /dev/null +++ b/Week5/MarkDecello/Homework5_notes.txt @@ -0,0 +1,10 @@ +Hello Linux Class +This is Mark Decello +I did all this work! + +commands used: +$lsblk +$ls -l /home +$free -h +$curl ipinfo.io/ip +$uptime diff --git a/Week5/MarkDecello/MarkDecello_Screenshot.png b/Week5/MarkDecello/MarkDecello_Screenshot.png new file mode 100644 index 0000000..bc3e0fb Binary files /dev/null and b/Week5/MarkDecello/MarkDecello_Screenshot.png differ diff --git a/Week5/MelvynDrag/badSubmission.png b/Week5/MelvynDrag/badSubmission.png new file mode 100644 index 0000000..a5a33b1 Binary files /dev/null and b/Week5/MelvynDrag/badSubmission.png differ diff --git a/Week5/MelvynDrag/sampleHw.png b/Week5/MelvynDrag/sampleHw.png new file mode 100644 index 0000000..64834b0 Binary files /dev/null and b/Week5/MelvynDrag/sampleHw.png differ diff --git a/Week5/Michael Zambrano/Screenshot from 2019-03-06 21-35-38.png b/Week5/Michael Zambrano/Screenshot from 2019-03-06 21-35-38.png new file mode 100644 index 0000000..b9bbd80 Binary files /dev/null and b/Week5/Michael Zambrano/Screenshot from 2019-03-06 21-35-38.png differ diff --git a/Week5/ParshotanSeenanan/Homework5.PNG b/Week5/ParshotanSeenanan/Homework5.PNG new file mode 100644 index 0000000..4d21359 Binary files /dev/null and b/Week5/ParshotanSeenanan/Homework5.PNG differ diff --git a/Week5/RichDiaz/Hw5.txt b/Week5/RichDiaz/Hw5.txt new file mode 100644 index 0000000..eb11097 --- /dev/null +++ b/Week5/RichDiaz/Hw5.txt @@ -0,0 +1 @@ +this is hw 5 diff --git a/Week5/RichDiaz/Screen Shot 2019-02-27 at 3.20.00 PM.png b/Week5/RichDiaz/Screen Shot 2019-02-27 at 3.20.00 PM.png new file mode 100644 index 0000000..1b87dbc Binary files /dev/null and b/Week5/RichDiaz/Screen Shot 2019-02-27 at 3.20.00 PM.png differ diff --git a/Week5/SebastianT b/Week5/SebastianT new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Week5/SebastianT @@ -0,0 +1 @@ + diff --git a/Week5/SebastianTapia/README.md b/Week5/SebastianTapia/README.md new file mode 100644 index 0000000..038d718 --- /dev/null +++ b/Week5/SebastianTapia/README.md @@ -0,0 +1 @@ +testing diff --git a/Week5/SebastianTapia/Screen Shot 2019-03-07 at 1.47.10 PM.png b/Week5/SebastianTapia/Screen Shot 2019-03-07 at 1.47.10 PM.png new file mode 100644 index 0000000..33ebec9 Binary files /dev/null and b/Week5/SebastianTapia/Screen Shot 2019-03-07 at 1.47.10 PM.png differ diff --git a/Week5/StevenSurujballi/HW 5 image1.PNG b/Week5/StevenSurujballi/HW 5 image1.PNG new file mode 100644 index 0000000..a62cc82 Binary files /dev/null and b/Week5/StevenSurujballi/HW 5 image1.PNG differ diff --git a/Week5/StevenSurujballi/Hw5 image2.jpg b/Week5/StevenSurujballi/Hw5 image2.jpg new file mode 100644 index 0000000..4c47ed2 Binary files /dev/null and b/Week5/StevenSurujballi/Hw5 image2.jpg differ diff --git a/Week5/StevenSurujballi/README b/Week5/StevenSurujballi/README new file mode 100644 index 0000000..4993757 --- /dev/null +++ b/Week5/StevenSurujballi/README @@ -0,0 +1 @@ +HW 5 includes 2 images. diff --git a/Week5/homework.txt b/Week5/homework.txt new file mode 100644 index 0000000..03a5f66 --- /dev/null +++ b/Week5/homework.txt @@ -0,0 +1,43 @@ +# Homework 5 +## To Do: + +1. Move the home directory to a new partition on a new disk. Update /etc/fstab if necessary to make permanent. + +2. Add swap space to your machine. Update /etc/fstab if necessary to make you rswap space permanent. + +3. Change the ssh message of the day of your machine to be three sentences explaining why someone would move their home +directory to a new partition, and a bit of text explaining what swap space is and why you would want it. + +## Helpful references: +https://www.tecmint.com/move-home-directory-to-new-partition-disk-in-linux/ +https://www.daveperrett.com/articles/2007/03/27/change-the-ssh-login-message/ + +## Grading: +PR must be received by 7:00 PM on Thursday or won't be merged or graded. +50% for home directory moved. Must be on new partition with proper permissions. +40% for swap space. +10% for banner. + +Configure a new vm to satisfy the above criteria. Log in to the machine via ssh and run the following commands: + +``` +$lsblk +$ls -l /home +$free -h +$curl ipinfo.io/ip +$uptime +``` + +Then take a screenshot or a picture with your phone showing the ssh banner, and the output of the indicated commands. Pull request the picture in a directory called $yourName under Week5. Same as for week 4. + +Expectations: +banner should be visible +lsblk should show the home partition, maybe the swap space. +free should definitely show the swap space. +everyone's homework should be different, I'm verifying this via your ip address. +uptime should be less than 2 minutes. You have to reboot the machine to make sure that that your /home and swap space are +permanent. + +See my sample submission in the Week5 directory. + +Not sure how I can verify that it's you doing this homework and not someone else. Respect points if in your image you can convince me that its you! Like a pic of you or your school id or your dog or something in the image! diff --git a/Week5/notkim/Screenshot from 2019-03-07 14-46-32.png b/Week5/notkim/Screenshot from 2019-03-07 14-46-32.png new file mode 100644 index 0000000..12a7d2e Binary files /dev/null and b/Week5/notkim/Screenshot from 2019-03-07 14-46-32.png differ diff --git a/Week5/notkim/Screenshot from 2019-03-07 14-47-43.png b/Week5/notkim/Screenshot from 2019-03-07 14-47-43.png new file mode 100644 index 0000000..9cb906c Binary files /dev/null and b/Week5/notkim/Screenshot from 2019-03-07 14-47-43.png differ diff --git a/Week6/BrunoBrito/hangman b/Week6/BrunoBrito/hangman new file mode 100755 index 0000000..35f2ce4 --- /dev/null +++ b/Week6/BrunoBrito/hangman @@ -0,0 +1,82 @@ +#!/bin/bash +# hangman - A simple version of the hangman game. Instead of showing a +# gradually embodied hanging man, this simply has a bad guess countdown. +# You can optionally indicate the initial distance from the gallows as +# the only arg. + +wordlib="/usr/lib/games/long-words.txt" +empty="\." # we need something for the sed [set] when $guessed="" +games=0 + +trap 'echo "Ctrl-C Ignored" ' INT + +# Start by testing for our word library datafile + +if [ ! -r "$wordlib" ] ; then + echo "$0: Missing word library $wordlib" >&2 + echo "(online: http://www.intuitive.com/wicked/examples/long-words.txt" >&2 + echo "save the file as $wordlib and you're ready to play!)" >&2 + exit 1 +fi + +# The big while loop. This is where everything happens + +while [ "$guess" != "quit" ] ; do + match="$(./randomquote $wordlib)" # pick a new word from the library + + if [ $games -gt 0 ] ; then + echo "" + echo "*** New Game! ***" + fi + + games="$(( $games + 1 ))" + guessed="" ; guess="" ; bad=${1:-6} + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + + # The guess > analyze > show results > loop happens in this block + + while [ "$guess" != "$match" -a "$guess" != "quit" ] ; do + + echo "" + if [ ! -z "$guessed" ] ; then # remember, ! –z means "is not empty" + /bin/echo -n "Guessed: $guessed, " + fi + echo "Steps from gallows: $bad, word so far: $partial" + + /bin/echo -n "Guess a letter: " + read guess + echo "" + + if [ "$guess" = "$match" ] ; then # Got it! + echo "You got it!" + elif [ "$guess" = "quit" ] ; then # You’re out? Ok. + sleep 0 # A 'no op' to avoid an error message on 'quit' + # Now we need to validate the guess with various filters + elif [ $(echo $guess | wc -c | sed 's/[^[:digit:]]//g') -ne 2 ] ; then + echo "Uh oh: You can only guess a single letter at a time" + elif [ ! -z "$(echo $guess | sed 's/[[:lower:]]//g')" ] ; then + echo "Uh oh: Please only use lowercase letters for your guesses" + elif [ -z "$(echo $guess | sed "s/[$empty$guessed]//g")" ] ; then + echo "Uh oh: You have already tried $guess" + # Now we can actually see if the letter appears in the word + elif [ "$(echo $match | sed "s/$guess/-/g")" != "$match" ] ; then + guessed="$guessed$guess" + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + if [ "$partial" = "$match" ] ; then + echo "** You've been pardoned!! Well done! The word was \"$match\"." + guess="$match" + else + echo "* Great! The letter \"$guess\" appears in the word!" + fi + elif [ $bad -eq 1 ] ; then + echo "** Uh oh: you've run out of steps. You're on the platform... " + echo "** The word you were trying to guess was \"$match\"" + guess="$match" + else + echo "* Nope, \"$guess\" does not appear in the word." + guessed="$guessed$guess" + bad=$(( $bad - 1 )) + fi + done +done +exit 0 diff --git a/Week6/BrunoBrito/image1.png b/Week6/BrunoBrito/image1.png new file mode 100644 index 0000000..0fb813c Binary files /dev/null and b/Week6/BrunoBrito/image1.png differ diff --git a/Week6/BrunoBrito/image2.png b/Week6/BrunoBrito/image2.png new file mode 100644 index 0000000..5d1d2ef Binary files /dev/null and b/Week6/BrunoBrito/image2.png differ diff --git a/Week6/BrunoBrito/randomquote b/Week6/BrunoBrito/randomquote new file mode 100755 index 0000000..26067af --- /dev/null +++ b/Week6/BrunoBrito/randomquote @@ -0,0 +1,28 @@ +#!/bin/bash + +# randomquote--Given a one-line-per-entry datafile, this +# script randomly picks one line and displays it. Best used +# as an SSI call within a web page. + +awkscript="/tmp/randomquote.awk.$$" + +if [ $# -ne 1 ] ; then + echo "Usage: randomquote datafilename" >&2 + exit 1 +elif [ ! -r "$1" ] ; then + echo "Error: quote file $1 is missing or not readable" >&2 + exit 1 +fi + +trap "$(which rm) -f $awkscript" 0 + +cat << "EOF" > $awkscript +BEGIN { srand() } + { s[NR] = $0 } +END { print s[randint(NR)] } +function randint(n) { return int (n * rand() ) + 1 } +EOF + +awk -f $awkscript < "$1" + +exit 0 diff --git a/Week6/CesarOmar/change_owner.png b/Week6/CesarOmar/change_owner.png new file mode 100644 index 0000000..a5e0a68 Binary files /dev/null and b/Week6/CesarOmar/change_owner.png differ diff --git a/Week6/CesarOmar/change_owner_2.png b/Week6/CesarOmar/change_owner_2.png new file mode 100644 index 0000000..a789d8a Binary files /dev/null and b/Week6/CesarOmar/change_owner_2.png differ diff --git a/Week6/CesarOmar/games/hangman b/Week6/CesarOmar/games/hangman new file mode 100644 index 0000000..8c69204 --- /dev/null +++ b/Week6/CesarOmar/games/hangman @@ -0,0 +1,82 @@ +#!/bin/bash +# hangman - A simple version of the hangman game. Instead of showing a +# gradually embodied hanging man, this simply has a bad guess countdown. +# You can optionally indicate the initial distance from the gallows as +# the only arg. + +wordlib="/home/cesaromar1973/NJCU_Linux_Class/Week6/CesarOmar/long-words.txt" +empty="\." # we need something for the sed [set] when $guessed="" +games=0 + +# Start by testing for our word library datafile + +if [ ! -r "$wordlib" ] ; then + echo "$0: Missing word library $wordlib" >&2 + echo "(online: http://www.intuitive.com/wicked/examples/long-words.txt" >&2 + echo "save the file as $wordlib and you're ready to play!)" >&2 + exit 1 +fi + +# The big while loop. This is where everything happens + +while [ "$guess" != "quit" ] ; do + match="$(./randomquote $wordlib)" # pick a new word from the library +trap 'echo " -Ctrl-C ignored" ' INT + if [ $games -gt 0 ] ; then + echo "" + echo "*** New Game! ***" + + fi + + games="$(( $games + 1 ))" + guessed="" ; guess="" ; bad=${1:-6} + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + + # The guess > analyze > show results > loop happens in this block + + while [ "$guess" != "$match" -a "$guess" != "quit" ] ; do + + echo "" + if [ ! -z "$guessed" ] ; then # remember, ! –z means "is not empty" + /bin/echo -n "Guessed: $guessed, " + fi + echo "Steps from gallows: $bad, word so far: $partial" + + /bin/echo -n "Guess a letter: " + read guess + echo "" + + if [ "$guess" = "$match" ] ; then # Got it! + echo "You got it!" + elif [ "$guess" = "quit" ] ; then # You’re out? Ok. + sleep 0 # A 'no op' to avoid an error message on 'quit' + # Now we need to validate the guess with various filters + elif [ $(echo $guess | wc -c | sed 's/[^[:digit:]]//g') -ne 2 ] ; then + echo "Uh oh: You can only guess a single letter at a time" + elif [ ! -z "$(echo $guess | sed 's/[[:lower:]]//g')" ] ; then + echo "Uh oh: Please only use lowercase letters for your guesses" + elif [ -z "$(echo $guess | sed "s/[$empty$guessed]//g")" ] ; then + echo "Uh oh: You have already tried $guess" + # Now we can actually see if the letter appears in the word + elif [ "$(echo $match | sed "s/$guess/-/g")" != "$match" ] ; then + guessed="$guessed$guess" + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + if [ "$partial" = "$match" ] ; then + echo "** You've been pardoned!! Well done! The word was \"$match\"." + guess="$match" + else + echo "* Great! The letter \"$guess\" appears in the word!" + fi + elif [ $bad -eq 1 ] ; then + echo "** Uh oh: you've run out of steps. You're on the platform... " + echo "** The word you were trying to guess was \"$match\"" + guess="$match" + else + echo "* Nope, \"$guess\" does not appear in the word." + guessed="$guessed$guess" + bad=$(( $bad - 1 )) + fi + done +done +exit 0 + diff --git a/Week6/CesarOmar/games/long-words.txt b/Week6/CesarOmar/games/long-words.txt new file mode 100644 index 0000000..63b3d87 --- /dev/null +++ b/Week6/CesarOmar/games/long-words.txt @@ -0,0 +1,5 @@ +Hello my friend +Hola mi amigo +Bonjour Mon Ami +Bom dia +Buen dia diff --git a/Week6/CesarOmar/games/randomquote.sh b/Week6/CesarOmar/games/randomquote.sh new file mode 100644 index 0000000..c6cbe11 --- /dev/null +++ b/Week6/CesarOmar/games/randomquote.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# randomquote--Given a one-line-per-entry datafile, this +# script randomly picks one line and displays it. Best used +# as an SSI call within a web page. + +awkscript="/tmp/randomquote.awk.$$" + +if [ $# -ne 1 ] ; then + echo "Usage: randomquote datafilename" >&2 + exit 1 +elif [ ! -r "$1" ] ; then + echo "Error: quote file $1 is missing or not readable" >&2 + exit 1 +fi + +trap "$(which rm) -f $awkscript" 0 + +cat << "EOF" > $awkscript +BEGIN { srand() } + { s[NR] = $0 } +END { print s[randint(NR)] } +function randint(n) { return int (n * rand() ) + 1 } +EOF + +awk -f $awkscript < "$1" + +exit 0 diff --git a/Week6/CesarOmar/gcc_run_mytest.png b/Week6/CesarOmar/gcc_run_mytest.png new file mode 100644 index 0000000..2b13ce5 Binary files /dev/null and b/Week6/CesarOmar/gcc_run_mytest.png differ diff --git a/Week6/Chaitanya/Homework-6 b/Week6/Chaitanya/Homework-6 new file mode 100644 index 0000000..25c83bd --- /dev/null +++ b/Week6/Chaitanya/Homework-6 @@ -0,0 +1,2 @@ +Homework 6 completing.... +Part-1 and Part-2 diff --git a/Week6/Chaitanya/hangman b/Week6/Chaitanya/hangman new file mode 100644 index 0000000..15d1fcc --- /dev/null +++ b/Week6/Chaitanya/hangman @@ -0,0 +1,81 @@ +#!/bin/bash +# hangman - A simple version of the hangman game. Instead of showing a +# gradually embodied hanging man, this simply has a bad guess countdown. +# You can optionally indicate the initial distance from the gallows as +# the only arg. + +wordlib="/home/solankichaitanya/homework6/hangman-game/words.txt" +empty="\." # we need something for the sed [set] when $guessed="" +games=0 + +# Start by testing for our word library datafile + +if [ ! -r "$wordlib" ] ; then + echo "$0: Missing word library $wordlib" >&2 + + echo "(online: http://www.intuitive.com/wicked/examples/long-words.txt" >&2 + echo "save the file as $wordlib and you're ready to play!)" >&2 + exit 1 +fi + +# The big while loop. This is where everything happens + +while [ "$guess" != "quit" ] ; do + match="$(./randomquote $wordlib)" # pick a new word from the library +trap 'echo " -Ctrl-C ignored" ' INT + if [ $games -gt 0 ] ; then + echo "" + echo "*** New Game! ***" + fi + + games="$(( $games + 1 ))" + guessed="" ; guess="" ; bad=${1:-6} + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + + # The guess > analyze > show results > loop happens in this block + + while [ "$guess" != "$match" -a "$guess" != "quit" ] ; do + + echo "" + if [ ! -z "$guessed" ] ; then # remember, ! –z means "is not empty" + /bin/echo -n "Guessed: $guessed, " + fi + echo "Steps from gallows: $bad, word so far: $partial" + + /bin/echo -n "Guess a letter: " + read guess + echo "" + + if [ "$guess" = "$match" ] ; then # Got it! + echo "You got it!" + elif [ "$guess" = "quit" ] ; then # You’re out? Ok. + sleep 0 # A 'no op' to avoid an error message on 'quit' + # Now we need to validate the guess with various filters + elif [ $(echo $guess | wc -c | sed 's/[^[:digit:]]//g') -ne 2 ] ; then + echo "Uh oh: You can only guess a single letter at a time" + elif [ ! -z "$(echo $guess | sed 's/[[:lower:]]//g')" ] ; then + echo "Uh oh: Please only use lowercase letters for your guesses" + elif [ -z "$(echo $guess | sed "s/[$empty$guessed]//g")" ] ; then + echo "Uh oh: You have already tried $guess" + # Now we can actually see if the letter appears in the word + elif [ "$(echo $match | sed "s/$guess/-/g")" != "$match" ] ; then + guessed="$guessed$guess" + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + if [ "$partial" = "$match" ] ; then + echo "** You've been pardoned!! Well done! The word was \"$match\"." + guess="$match" + else + echo "* Great! The letter \"$guess\" appears in the word!" + fi + elif [ $bad -eq 1 ] ; then + echo "** Uh oh: you've run out of steps. You're on the platform... " + echo "** The word you were trying to guess was \"$match\"" + guess="$match" + else + echo "* Nope, \"$guess\" does not appear in the word." + guessed="$guessed$guess" + bad=$(( $bad - 1 )) + fi + done +done +exit 0 diff --git a/Week6/Chaitanya/problem1.png b/Week6/Chaitanya/problem1.png new file mode 100644 index 0000000..e33e047 Binary files /dev/null and b/Week6/Chaitanya/problem1.png differ diff --git a/Week6/Chaitanya/problem2.png b/Week6/Chaitanya/problem2.png new file mode 100644 index 0000000..caf187a Binary files /dev/null and b/Week6/Chaitanya/problem2.png differ diff --git a/Week6/HanelDuran/Photo1.png b/Week6/HanelDuran/Photo1.png new file mode 100644 index 0000000..dee4140 Binary files /dev/null and b/Week6/HanelDuran/Photo1.png differ diff --git a/Week6/HanelDuran/Photo2.png b/Week6/HanelDuran/Photo2.png new file mode 100644 index 0000000..3623fef Binary files /dev/null and b/Week6/HanelDuran/Photo2.png differ diff --git a/Week6/JimmyDebe/game/hangman b/Week6/JimmyDebe/game/hangman new file mode 100644 index 0000000..7a719d2 --- /dev/null +++ b/Week6/JimmyDebe/game/hangman @@ -0,0 +1,71 @@ +#!/bin/bash +## hangman - A simple version of the hangman game. Instead of showing a +# gradually embodied hanging man, this simply has a bad guess countdown. +# You can optionally indicate the initial distance from the gallows as +# the only arg. +wordlib="/loopy/word.txt" +randomquote="/loopy/randomquote" +empty="\." # we need something for the sed [set] when $guessed="" +games=0 +# Start by testing for our word library datafile +if [ ! "$wordlib" ] ; then + echo "$0: Missing word library $wordlib" >&2 + echo "(online: http://www.intuitive.com/wicked/examples/long-words.txt" >&2 + echo "save the file as $wordlib and you're ready to play!)" >&2 + exit 1 +fi +# The big while loop. This is where everything happens +while [ "$guess" != "quit" ] ; do + match="($randomquote $wordlib)" # pick a new word from the library + trap 'echo " - Ctrl-C ignored" ' INT + if [ $games -gt 0 ] ; then + echo "" + echo "*** New Game! ***" + fi + games="$(( $games + 1 ))" + guessed="" ; guess="" ; bad=${1:-6} + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + # The guess > analyze > show results > loop happens in this block + while [ "$guess" != "$match" -a "$guess" != "quit" ] ; do +echo "" + if [ ! -z "$guessed" ] ; then # remember, ! –z means "is not empty" + /bin/echo -n "Guessed: $guessed, " + fi + echo "Steps from gallows: $bad, word so far: $partial" + + /bin/echo -n "Guess a letter: " + read guess + echo "" + if [ "$guess" = "$match" ] ; then # Got it! + echo "You got it!" + elif [ "$guess" = "quit" ] ; then # You’re out? Ok. + sleep 0 # A 'no op' to avoid an error message on 'quit' + # Now we need to validate the guess with various filters + elif [ $(echo $guess | wc -c | sed 's/[^[:digit:]]//g') -ne 2 ] ; then + echo "Uh oh: You can only guess a single letter at a time" + elif [ ! -z "$(echo $guess | sed 's/[[:lower:]]//g')" ] ; then + echo "Uh oh: Please only use lowercase letters for your guesses" + elif [ -z "$(echo $guess | sed "s/[$empty$guessed]//g")" ] ; then + echo "Uh oh: You have already tried $guess" + # Now we can actually see if the letter appears in the word + elif [ "$(echo $match | sed "s/$guess/-/g")" != "$match" ] ; then + guessed="$guessed$guess" + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + if [ "$partial" = "$match" ] ; then + echo "** You've been pardoned!! Well done! The word was \"$match\"." + guess="$match" + else + echo "* Great! The letter \"$guess\" appears in the word!" + fi + elif [ $bad -eq 1 ] ; then + echo "** Uh oh: you've run out of steps. You're on the platform... " + echo "** The word you were trying to guess was \"$match\"" + guess="$match" + else + echo "* Nope, \"$guess\" does not appear in the word." + guessed="$guessed$guess" + bad=$(( $bad - 1 )) + fi + done +done +exit 0 diff --git a/Week6/JimmyDebe/game/long-word.txt b/Week6/JimmyDebe/game/long-word.txt new file mode 100644 index 0000000..b998e3d --- /dev/null +++ b/Week6/JimmyDebe/game/long-word.txt @@ -0,0 +1,87 @@ +tithonicity +titillability +titillating +titillation +titivation +tobaccoman +tobacconalian +tobaccowood +tocological +tonalamatl +tonicoclonic +tonoclonic +tonological +tonotactic +toolholding +toolmaking +toothaching +totalization +toxication +toxicognath +toxicologic +toxicological +toxicology +toxicomania +vacational +vaccination +vacciniola +vaccinization +vacillancy +vacillating +vacillation +vagabondia +vaginoabdominal +vaginodynia +vaginofixation +vaginolabial +vaginotomy +validation +validification +vandalization +vanillinic +vaticanical +vaticinant +vaticination +vialmaking +victimhood +victimization +vigilation +vilification +villaindom +vincibility +vindicability +vindication +vinification +violability +violational +violinmaking +violmaking +vitalization +vitalizing +vitaminology +vivification +vocability +vocalization +vocational +vocationalization +vocification +volatility +volatilization +volational +volcanicity +volcanization +volcanological +volcanology +volitation +volitational +volitional +volitionality +wagonmaking +wagonwayman +watchmaking +watchwoman +whillaballoo +wildcatting +willinghood +willmaking +windjamming diff --git a/Week6/JimmyDebe/game/randomquote b/Week6/JimmyDebe/game/randomquote new file mode 100644 index 0000000..ac6cf44 --- /dev/null +++ b/Week6/JimmyDebe/game/randomquote @@ -0,0 +1,20 @@ +te--Given a one-line-per-entry datafile, this +# script randomly picks one line and displays it. Best used +# as an SSI call within a web page. +awkscript="/tmp/randomquote.awk.$$" +if [ $# -ne 1 ] ; then + echo "Usage: randomquote datafilename" >&2 + exit 1 +elif [ ! -r "$1" ] ; then + echo "Error: quote file $1 is missing or not readable" >&2 + exit 1 +fi +trap "$(which rm) -f $awkscript" 0 +cat << "EOF" > $awkscript +BEGIN { srand() } + { s[NR] = $0 } +END { print s[randint(NR)] } +function randint(n) { return int (n * rand() ) + 1 } +EOF +awk -f $awkscript < "$1" +exit 0 diff --git a/Week6/JimmyDebe/img1.jpg b/Week6/JimmyDebe/img1.jpg new file mode 100644 index 0000000..e3cb98f Binary files /dev/null and b/Week6/JimmyDebe/img1.jpg differ diff --git a/Week6/JimmyDebe/img2.jpg b/Week6/JimmyDebe/img2.jpg new file mode 100644 index 0000000..ea2af13 Binary files /dev/null and b/Week6/JimmyDebe/img2.jpg differ diff --git a/Week6/Luis COllymoore/execve_setuid.c b/Week6/Luis COllymoore/execve_setuid.c new file mode 100644 index 0000000..186d419 --- /dev/null +++ b/Week6/Luis COllymoore/execve_setuid.c @@ -0,0 +1,34 @@ +#include +#include +#include + +char* const cat_argv[4] = { "/bin/sh", "-c", "cat /root/hello.txt"}; + +int main(void) +{ + int current_uid = getuid(); + + printf("My UID is: %d. My GID is: %d\n", current_uid, getgid()); + + if ( setuid(0) ) // Note the return value 0 means good! + { + perror("setuid"); + return 1; + } + + printf("My UID is: %d. My GID is: %d\n", getuid(), getgid()); + + pid_t pid = fork(); + + if (pid){ + + execve( cat_argv[0], cat_argv, NULL ); + + } + //Time to drop back to regular user privileges + setuid(current_uid); + + printf("My UID is: %d. My GID is: %d\n", getuid(), getgid()); + + return 0; +} diff --git a/Week6/Luis COllymoore/games/hangman b/Week6/Luis COllymoore/games/hangman new file mode 100755 index 0000000..3397b84 --- /dev/null +++ b/Week6/Luis COllymoore/games/hangman @@ -0,0 +1,83 @@ +#!/bin/bash + + +trap "echo Exit signal is detected (CTRL+ C)" SIGINT +# hangman - A simple version of the hangman game. Instead of showing a +# gradually embodied hanging man, this simply has a bad guess countdown. +# You can optionally indicate the initial distance from the gallows as +# the only arg. + +wordlib=/usr/lib/games/long-words.txt +empty="\." # we need something for the sed [set] when $guessed="" +games=0 +file=/home/dedseq/Dropbox/NJCU/CS 407 intro to Unix-Linux/NJCU_Linux_Class/Week6/Luis COllymoore/games/randomquote +# Start by testing for our word library datafile + +if [ ! -r "$wordlib" ] ; then + echo "$0: Missing word library $wordlib" >&2 + echo "(online: http://www.intuitive.com/wicked/examples/long-words.txt" >&2 + echo "save the file as $wordlib and you're ready to play!)" >&2 + exit 1 +fi + +# The big while loop. This is where everything happens + +while [ "$guess" != "quit" ] ; do + match="$($file $wordlib)" # pick a new word from the library + + if [ $games -gt 0 ] ; then + echo "" + echo "*** New Game! ***" + fi + + games="$(( $games + 1 ))" + guessed="" ; guess="" ; bad=${1:-6} + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + + # The guess > analyze > show results > loop happens in this block + + while [ "$guess" != "$match" -a "$guess" != "quit" ] ; do + + echo "" + if [ ! -z "$guessed" ] ; then # remember, ! –z means "is not empty" + /bin/echo -n "Guessed: $guessed, " + fi + echo "Steps from gallows: $bad, word so far: $partial" + + /bin/echo -n "Guess a letter: " + read guess + echo "" + + if [ "$guess" = "$match" ] ; then # Got it! + echo "You got it!" + elif [ "$guess" = "quit" ] ; then # You’re out? Ok. + sleep 0 # A 'no op' to avoid an error message on 'quit' + # Now we need to validate the guess with various filters + elif [ $(echo $guess | wc -c | sed 's/[^[:digit:]]//g') -ne 2 ] ; then + echo "Uh oh: You can only guess a single letter at a time" + elif [ ! -z "$(echo $guess | sed 's/[[:lower:]]//g')" ] ; then + echo "Uh oh: Please only use lowercase letters for your guesses" + elif [ -z "$(echo $guess | sed "s/[$empty$guessed]//g")" ] ; then + echo "Uh oh: You have already tried $guess" + # Now we can actually see if the letter appears in the word + elif [ "$(echo $match | sed "s/$guess/-/g")" != "$match" ] ; then + guessed="$guessed$guess" + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + if [ "$partial" = "$match" ] ; then + echo "** You've been pardoned!! Well done! The word was \"$match\"." + guess="$match" + else + echo "* Great! The letter \"$guess\" appears in the word!" + fi + elif [ $bad -eq 1 ] ; then + echo "** Uh oh: you've run out of steps. You're on the platform... " + echo "** The word you were trying to guess was \"$match\"" + guess="$match" + else + echo "* Nope, \"$guess\" does not appear in the word." + guessed="$guessed$guess" + bad=$(( $bad - 1 )) + fi + done +done +exit 0 diff --git a/Week6/Luis COllymoore/games/long-words.txt b/Week6/Luis COllymoore/games/long-words.txt new file mode 100644 index 0000000..ddd80b4 --- /dev/null +++ b/Week6/Luis COllymoore/games/long-words.txt @@ -0,0 +1,6 @@ +hello +hi +JBL +Samsung +Linux +Red Hat diff --git a/Week6/Luis COllymoore/games/randomquote b/Week6/Luis COllymoore/games/randomquote new file mode 100755 index 0000000..26067af --- /dev/null +++ b/Week6/Luis COllymoore/games/randomquote @@ -0,0 +1,28 @@ +#!/bin/bash + +# randomquote--Given a one-line-per-entry datafile, this +# script randomly picks one line and displays it. Best used +# as an SSI call within a web page. + +awkscript="/tmp/randomquote.awk.$$" + +if [ $# -ne 1 ] ; then + echo "Usage: randomquote datafilename" >&2 + exit 1 +elif [ ! -r "$1" ] ; then + echo "Error: quote file $1 is missing or not readable" >&2 + exit 1 +fi + +trap "$(which rm) -f $awkscript" 0 + +cat << "EOF" > $awkscript +BEGIN { srand() } + { s[NR] = $0 } +END { print s[randint(NR)] } +function randint(n) { return int (n * rand() ) + 1 } +EOF + +awk -f $awkscript < "$1" + +exit 0 diff --git a/Week6/Luis COllymoore/h26-p3.png b/Week6/Luis COllymoore/h26-p3.png new file mode 100644 index 0000000..7cf0e88 Binary files /dev/null and b/Week6/Luis COllymoore/h26-p3.png differ diff --git a/Week6/Luis COllymoore/hw6-p1.png b/Week6/Luis COllymoore/hw6-p1.png new file mode 100644 index 0000000..f98dab8 Binary files /dev/null and b/Week6/Luis COllymoore/hw6-p1.png differ diff --git a/Week6/Luis COllymoore/hw6-p2.png b/Week6/Luis COllymoore/hw6-p2.png new file mode 100644 index 0000000..d209ff9 Binary files /dev/null and b/Week6/Luis COllymoore/hw6-p2.png differ diff --git a/Week6/Luis COllymoore/setuid.c b/Week6/Luis COllymoore/setuid.c new file mode 100755 index 0000000..6b518df Binary files /dev/null and b/Week6/Luis COllymoore/setuid.c differ diff --git a/Week6/MarkDecello/MarkDecello_Part1.png b/Week6/MarkDecello/MarkDecello_Part1.png new file mode 100644 index 0000000..cf3b774 Binary files /dev/null and b/Week6/MarkDecello/MarkDecello_Part1.png differ diff --git a/Week6/MarkDecello/MarkDecello_Part2.png b/Week6/MarkDecello/MarkDecello_Part2.png new file mode 100644 index 0000000..2a6437a Binary files /dev/null and b/Week6/MarkDecello/MarkDecello_Part2.png differ diff --git a/Week6/MarkDecello/games/hangman b/Week6/MarkDecello/games/hangman new file mode 100755 index 0000000..fca82fc --- /dev/null +++ b/Week6/MarkDecello/games/hangman @@ -0,0 +1,80 @@ +#!/bin/bash +# hangman - A simple version of the hangman game. Instead of showing a +# gradually embodied hanging man, this simply has a bad guess countdown. +# You can optionally indicate the initial distance from the gallows as +# the only arg. + +wordlib="/home/markyz1044/games/long-words.txt" +empty="\." # we need something for the sed [set] when $guessed="" +games=0 + +# Start by testing for our word library datafile + +if [ ! -r "$wordlib" ] ; then + echo "$0: Missing word library $wordlib" >&2 + echo "(online: http://www.intuitive.com/wicked/examples/long-words.txt" >&2 + echo "save the file as $wordlib and you're ready to play!)" >&2 + exit 1 +fi + +# The big while loop. This is where everything happens + +while [ "$guess" != "quit" ] ; do + match="$(./randomquote $wordlib)" # pick a new word from the library + trap 'echo " - Ctrl-C ignored" ' INT + if [ $games -gt 0 ] ; then + echo "" + echo "*** New Game! ***" + fi + + games="$(( $games + 1 ))" + guessed="" ; guess="" ; bad=${1:-6} + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + + # The guess > analyze > show results > loop happens in this block + + while [ "$guess" != "$match" -a "$guess" != "quit" ] ; do + + echo "" + if [ ! -z "$guessed" ] ; then # remember, ! –z means "is not empty" + /bin/echo -n "Guessed: $guessed, " + fi + echo "Steps from gallows: $bad, word so far: $partial" + + /bin/echo -n "Guess a letter: " + read guess + echo "" + + if [ "$guess" = "$match" ] ; then # Got it! + echo "You got it!" + elif [ "$guess" = "quit" ] ; then # You’re out? Ok. + sleep 0 # A 'no op' to avoid an error message on 'quit' + # Now we need to validate the guess with various filters + elif [ $(echo $guess | wc -c | sed 's/[^[:digit:]]//g') -ne 2 ] ; then + echo "Uh oh: You can only guess a single letter at a time" + elif [ ! -z "$(echo $guess | sed 's/[[:lower:]]//g')" ] ; then + echo "Uh oh: Please only use lowercase letters for your guesses" + elif [ -z "$(echo $guess | sed "s/[$empty$guessed]//g")" ] ; then + echo "Uh oh: You have already tried $guess" + # Now we can actually see if the letter appears in the word + elif [ "$(echo $match | sed "s/$guess/-/g")" != "$match" ] ; then + guessed="$guessed$guess" + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + if [ "$partial" = "$match" ] ; then + echo "** You've been pardoned!! Well done! The word was \"$match\"." + guess="$match" + else + echo "* Great! The letter \"$guess\" appears in the word!" + fi + elif [ $bad -eq 1 ] ; then + echo "** Uh oh: you've run out of steps. You're on the platform... " + echo "** The word you were trying to guess was \"$match\"" + guess="$match" + else + echo "* Nope, \"$guess\" does not appear in the word." + guessed="$guessed$guess" + bad=$(( $bad - 1 )) + fi + done +done +exit 0 diff --git a/Week6/MarkDecello/games/long-words.txt b/Week6/MarkDecello/games/long-words.txt new file mode 100644 index 0000000..535900f --- /dev/null +++ b/Week6/MarkDecello/games/long-words.txt @@ -0,0 +1,11 @@ +pokemon +naruto +winter +daemon +bash +linux +ubuntu +fly +marvel +github +anime diff --git a/Week6/MarkDecello/games/randomquote b/Week6/MarkDecello/games/randomquote new file mode 100755 index 0000000..26067af --- /dev/null +++ b/Week6/MarkDecello/games/randomquote @@ -0,0 +1,28 @@ +#!/bin/bash + +# randomquote--Given a one-line-per-entry datafile, this +# script randomly picks one line and displays it. Best used +# as an SSI call within a web page. + +awkscript="/tmp/randomquote.awk.$$" + +if [ $# -ne 1 ] ; then + echo "Usage: randomquote datafilename" >&2 + exit 1 +elif [ ! -r "$1" ] ; then + echo "Error: quote file $1 is missing or not readable" >&2 + exit 1 +fi + +trap "$(which rm) -f $awkscript" 0 + +cat << "EOF" > $awkscript +BEGIN { srand() } + { s[NR] = $0 } +END { print s[randint(NR)] } +function randint(n) { return int (n * rand() ) + 1 } +EOF + +awk -f $awkscript < "$1" + +exit 0 diff --git a/Week6/MelvynDrag/hangman b/Week6/MelvynDrag/hangman new file mode 100644 index 0000000..812065a --- /dev/null +++ b/Week6/MelvynDrag/hangman @@ -0,0 +1,3 @@ +This is your hangman code. + +It is the modified version of the hangman code in the Wicked Cool Shell Scripts repo. diff --git a/Week6/MelvynDrag/hash.png b/Week6/MelvynDrag/hash.png new file mode 100644 index 0000000..f177b7b Binary files /dev/null and b/Week6/MelvynDrag/hash.png differ diff --git a/Week6/MelvynDrag/links.png b/Week6/MelvynDrag/links.png new file mode 100644 index 0000000..4de2b8b Binary files /dev/null and b/Week6/MelvynDrag/links.png differ diff --git a/Week6/MelvynDrag/problem1.png b/Week6/MelvynDrag/problem1.png new file mode 100644 index 0000000..fe32667 Binary files /dev/null and b/Week6/MelvynDrag/problem1.png differ diff --git a/Week6/MelvynDrag/problem2.png b/Week6/MelvynDrag/problem2.png new file mode 100644 index 0000000..b2148df Binary files /dev/null and b/Week6/MelvynDrag/problem2.png differ diff --git a/Week6/ParshotanSeenanan/Homework6_Part1.PNG b/Week6/ParshotanSeenanan/Homework6_Part1.PNG new file mode 100644 index 0000000..34538ec Binary files /dev/null and b/Week6/ParshotanSeenanan/Homework6_Part1.PNG differ diff --git a/Week6/ParshotanSeenanan/Homework6_Part2.PNG b/Week6/ParshotanSeenanan/Homework6_Part2.PNG new file mode 100644 index 0000000..e036e81 Binary files /dev/null and b/Week6/ParshotanSeenanan/Homework6_Part2.PNG differ diff --git a/Week6/ParshotanSeenanan/example b/Week6/ParshotanSeenanan/example new file mode 100755 index 0000000..a78bb90 Binary files /dev/null and b/Week6/ParshotanSeenanan/example differ diff --git a/Week6/ParshotanSeenanan/execve_setuid.c b/Week6/ParshotanSeenanan/execve_setuid.c new file mode 100644 index 0000000..186d419 --- /dev/null +++ b/Week6/ParshotanSeenanan/execve_setuid.c @@ -0,0 +1,34 @@ +#include +#include +#include + +char* const cat_argv[4] = { "/bin/sh", "-c", "cat /root/hello.txt"}; + +int main(void) +{ + int current_uid = getuid(); + + printf("My UID is: %d. My GID is: %d\n", current_uid, getgid()); + + if ( setuid(0) ) // Note the return value 0 means good! + { + perror("setuid"); + return 1; + } + + printf("My UID is: %d. My GID is: %d\n", getuid(), getgid()); + + pid_t pid = fork(); + + if (pid){ + + execve( cat_argv[0], cat_argv, NULL ); + + } + //Time to drop back to regular user privileges + setuid(current_uid); + + printf("My UID is: %d. My GID is: %d\n", getuid(), getgid()); + + return 0; +} diff --git a/Week6/ParshotanSeenanan/hangman b/Week6/ParshotanSeenanan/hangman new file mode 100644 index 0000000..9dd1909 --- /dev/null +++ b/Week6/ParshotanSeenanan/hangman @@ -0,0 +1,82 @@ +#!/bin/bash +# hangman i- A simple version of the hangman game. Instead of showing a +# gradually embodied hanging man, this simply has a bad guess countdown. +# You can optionally indicate the initial distance from the gallows as +# the only arg. + +wordlib="long-words.txt" +empty="\." # we need something for the sed [set] when $guessed="" +games=0 + +# Start by testing for our word library datafile + +if [ ! -r "$wordlib" ] ; then + echo "$0: Missing word library $wordlib" >&2 + echo "(online: http://www.intuitive.com/wicked/examples/long-words.txt" >&2 + echo "save the file as $wordlib and you're ready to play!)" >&2 + exit 1 +fi + +# The big while loop. This is where everything happens + +while [ "$guess" != "quit" ] ; do + match="$(./randomquote $wordlib)" # pick a new word from the library + + trap 'echo " - Ctrl-C ignored" ' INT + + if [ $games -gt 0 ] ; then + echo "" + echo "*** New Game! ***" + fi + + games="$(( $games + 1 ))" + guessed="" ; guess="" ; bad=${1:-6} + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + + # The guess > analyze > show results > loop happens in this block + + while [ "$guess" != "$match" -a "$guess" != "quit" ] ; do + + echo "" + if [ ! -z "$guessed" ] ; then # remember, ! –z means "is not empty" + /bin/echo -n "Guessed: $guessed, " + fi + echo "Steps from gallows: $bad, word so far: $partial" + + /bin/echo -n "Guess a letter: " + read guess + echo "" + + if [ "$guess" = "$match" ] ; then # Got it! + echo "You got it!" + elif [ "$guess" = "quit" ] ; then # You’re out? Ok. + sleep 0 # A 'no op' to avoid an error message on 'quit' + # Now we need to validate the guess with various filters + elif [ $(echo $guess | wc -c | sed 's/[^[:digit:]]//g') -ne 2 ] ; then + echo "Uh oh: You can only guess a single letter at a time" + elif [ ! -z "$(echo $guess | sed 's/[[:lower:]]//g')" ] ; then + echo "Uh oh: Please only use lowercase letters for your guesses" + elif [ -z "$(echo $guess | sed "s/[$empty$guessed]//g")" ] ; then + echo "Uh oh: You have already tried $guess" + # Now we can actually see if the letter appears in the word + elif [ "$(echo $match | sed "s/$guess/-/g")" != "$match" ] ; then + guessed="$guessed$guess" + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + if [ "$partial" = "$match" ] ; then + echo "** You've been pardoned!! Well done! The word was \"$match\"." + guess="$match" + else + echo "* Great! The letter \"$guess\" appears in the word!" + fi + elif [ $bad -eq 1 ] ; then + echo "** Uh oh: you've run out of steps. You're on the platform... " + echo "** The word you were trying to guess was \"$match\"" + guess="$match" + else + echo "* Nope, \"$guess\" does not appear in the word." + guessed="$guessed$guess" + bad=$(( $bad - 1 )) + fi + done +done +exit 0 diff --git a/Week6/ParshotanSeenanan/long-words.txt b/Week6/ParshotanSeenanan/long-words.txt new file mode 100644 index 0000000..20e5425 --- /dev/null +++ b/Week6/ParshotanSeenanan/long-words.txt @@ -0,0 +1,16 @@ +mickey +mouse +florida +obsolete +gizzard +chicken +hamburger +hotdog +canada +snowman +batman +marvel +helicopter +internship +waterfall + diff --git a/Week6/ParshotanSeenanan/randomquote b/Week6/ParshotanSeenanan/randomquote new file mode 100755 index 0000000..26067af --- /dev/null +++ b/Week6/ParshotanSeenanan/randomquote @@ -0,0 +1,28 @@ +#!/bin/bash + +# randomquote--Given a one-line-per-entry datafile, this +# script randomly picks one line and displays it. Best used +# as an SSI call within a web page. + +awkscript="/tmp/randomquote.awk.$$" + +if [ $# -ne 1 ] ; then + echo "Usage: randomquote datafilename" >&2 + exit 1 +elif [ ! -r "$1" ] ; then + echo "Error: quote file $1 is missing or not readable" >&2 + exit 1 +fi + +trap "$(which rm) -f $awkscript" 0 + +cat << "EOF" > $awkscript +BEGIN { srand() } + { s[NR] = $0 } +END { print s[randint(NR)] } +function randint(n) { return int (n * rand() ) + 1 } +EOF + +awk -f $awkscript < "$1" + +exit 0 diff --git a/Week6/Richard Diaz/Screen Shot 2019-03-07 at 2.33.44 AM.png b/Week6/Richard Diaz/Screen Shot 2019-03-07 at 2.33.44 AM.png new file mode 100644 index 0000000..da69394 Binary files /dev/null and b/Week6/Richard Diaz/Screen Shot 2019-03-07 at 2.33.44 AM.png differ diff --git a/Week6/Richard Diaz/Screen Shot 2019-03-07 at 2.39.03 AM.png b/Week6/Richard Diaz/Screen Shot 2019-03-07 at 2.39.03 AM.png new file mode 100644 index 0000000..497c840 Binary files /dev/null and b/Week6/Richard Diaz/Screen Shot 2019-03-07 at 2.39.03 AM.png differ diff --git a/Week6/Richard Diaz/hangman b/Week6/Richard Diaz/hangman new file mode 100644 index 0000000..be9809a --- /dev/null +++ b/Week6/Richard Diaz/hangman @@ -0,0 +1,60 @@ +#!/bin/bash +# hangman - A simple version of the hangman game. Instead of showing a +# gradually embodied hanging man, this simply has a bad guess countdown. +# You can optionally indicate the initial distance from the gallows as +# the only arg. +wordlib="long-words.txt" +empty="\." # we need something for the sed [set] when $guessed="" +games=0 +# Start by testing for our word library datafile +if [ ! -r "$wordlib" ] ; then + echo "$0: Missing word library $wordlib" >&2 + echo "save the file as $wordlib and you're ready to play!)" >&2 + exit 1 +fi +# The big while loop. This is where everything happens +while [ "$guess" != "quit" ] ; do + match="$(./randomquote $wordlib)" + trap 'echo " - CTRL-C is being ignored" ' INT # pick a new word from the library + if [ $games -gt 0 ] ; then + echo "" + echo "*** New Game! ***" + + fi + games="$(( $games + 1 ))" + guessed="" ; guess="" ; bad=${1:-6} + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + + if [ "$guess" = "$match" ] ; then # Got it! + echo "You got it!" +elif [ "$guess" = "quit" ] ; then # You’re out? Ok. + sleep 0 # A 'no op' to avoid an error message on 'quit' +# Now we need to validate the guess with various filters +elif [ $(echo $guess | wc -c | sed 's/[^[:digit:]]//g') -ne 2 ] ; then + echo "Uh oh: You can only guess a single letter at a time" +elif [ ! -z "$(echo $guess | sed 's/[[:lower:]]//g')" ] ; then + echo "Uh oh: Please only use lowercase letters for your guesses" +elif [ -z "$(echo $guess | sed "s/[$empty$guessed]//g")" ] ; then + echo "Uh oh: You have already tried $guess" +# Now we can actually see if the letter appears in the word +elif [ "$(echo $match | sed "s/$guess/-/g")" != "$match" ] ; then + guessed="$guessed$guess" + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + if [ "$partial" = "$match" ] ; then + echo "** You've been pardoned!! Well done! The word was \"$match\"." + guess="$match" + else + echo "* Great! The letter \"$guess\" appears in the word!" + fi +elif [ $bad -eq 1 ] ; then + echo "** Uh oh: you've run out of steps. You're on the platform... " + echo "** The word you were trying to guess was \"$match\"" + guess="$match" +else + echo "* Nope, \"$guess\" does not appear in the word." + guessed="$guessed$guess" + bad=$(( $bad - 1 )) +fi +done +done +exit 0 diff --git a/Week6/Richard Diaz/homework6 b/Week6/Richard Diaz/homework6 new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Week6/Richard Diaz/homework6 @@ -0,0 +1 @@ + diff --git a/Week6/Richard Diaz/long-words.txt b/Week6/Richard Diaz/long-words.txt new file mode 100644 index 0000000..513fbc3 --- /dev/null +++ b/Week6/Richard Diaz/long-words.txt @@ -0,0 +1,7 @@ +OnePiece +Luffy +meliodas +Dragneel +Creed +Mario +Zeref diff --git a/Week6/Richard Diaz/randomquote b/Week6/Richard Diaz/randomquote new file mode 100644 index 0000000..8258b4d --- /dev/null +++ b/Week6/Richard Diaz/randomquote @@ -0,0 +1,21 @@ +#!/bin/bash +# randomquote--Given a one-line-per-entry datafile, this +# script randomly picks one line and displays it. Best used +# as an SSI call within a web page. +awkscript="/tmp/randomquote.awk.$$" +if [ $# -ne 1 ] ; then + echo "Usage: randomquote datafilename" >&2 + exit 1 +elif [ ! -r "$1" ] ; then + echo "Error: quote file $1 is missing or not readable" >&2 + exit 1 +fi +trap "$(which rm) -f $awkscript" 0 +cat << "EOF" > $awkscript +BEGIN { srand() } + { s[NR] = $0 } +END { print s[randint(NR)] } +function randint(n) { return int (n * rand() ) + 1 } +EOF +awk -f $awkscript < "$1" +exit 0 diff --git a/Week6/SebastianTapia/README.md b/Week6/SebastianTapia/README.md new file mode 100644 index 0000000..ce01362 --- /dev/null +++ b/Week6/SebastianTapia/README.md @@ -0,0 +1 @@ +hello diff --git a/Week6/SebastianTapia/Screen Shot 2019-03-07 at 6.51.30 PM.png b/Week6/SebastianTapia/Screen Shot 2019-03-07 at 6.51.30 PM.png new file mode 100644 index 0000000..49cf045 Binary files /dev/null and b/Week6/SebastianTapia/Screen Shot 2019-03-07 at 6.51.30 PM.png differ diff --git a/Week6/SebastianTapia/Screen Shot 2019-03-21 at 3.23.40 PM.png b/Week6/SebastianTapia/Screen Shot 2019-03-21 at 3.23.40 PM.png new file mode 100644 index 0000000..4e10a87 Binary files /dev/null and b/Week6/SebastianTapia/Screen Shot 2019-03-21 at 3.23.40 PM.png differ diff --git a/Week6/SebastianTapia/hangman.txt b/Week6/SebastianTapia/hangman.txt new file mode 100644 index 0000000..83b851d --- /dev/null +++ b/Week6/SebastianTapia/hangman.txt @@ -0,0 +1,71 @@ +#!/bin/bash +# hangman - A simple version of the hangman game. Instead of showing a +# gradually embodied hanging man, this simply has a bad guess countdown. +# You can optionally indicate the initial distance from the gallows as +# the only arg. +wordlib="/usr/lib/games/long-words.txt" +empty="\." # we need something for the sed [set] when $guessed="" +games=0 +# Start by testing for our word library datafile +if [ ! -r "$wordlib" ] ; then + echo "$0: Missing word library $wordlib" >&2 + echo "(online: http://www.intuitive.com/wicked/examples/long-words.txt" >&2 + echo "save the file as $wordlib and you're ready to play!)" >&2 + exit 1 +fi +# The big while loop. This is where everything happens +while [ "$guess" != "quit" ] ; do + match="$(./randomquote $wordlib)" # pick a new word from the library + trap 'echo "Ctrl-C ignored" ' INT + if [ $games -gt 0 ] ; then + echo "" + echo "*** New Game! ***" + + fi + games="$(( $games + 1 ))" + guessed="" ; guess="" ; bad=${1:-6} + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + # The guess > analyze > show results > loop happens in this block + while [ "$guess" != "$match" -a "$guess" != "quit" ] ; do + echo "" + if [ ! -z "$guessed" ] ; then # remember, ! –z means "is not empty" + /bin/echo -n "Guessed: $guessed, " + fi + echo "Steps from gallows: $bad, word so far: $partial" + + /bin/echo -n "Guess a letter: " + read guess + echo "" + if [ "$guess" = "$match" ] ; then # Got it! + echo "You got it!" + elif [ "$guess" = "quit" ] ; then # You’re out? Ok. + sleep 0 # A 'no op' to avoid an error message on 'quit' + # Now we need to validate the guess with various filters + elif [ $(echo $guess | wc -c | sed 's/[^[:digit:]]//g') -ne 2 ] ; then + echo "Uh oh: You can only guess a single letter at a time" + elif [ ! -z "$(echo $guess | sed 's/[[:lower:]]//g')" ] ; then + echo "Uh oh: Please only use lowercase letters for your guesses" + elif [ -z "$(echo $guess | sed "s/[$empty$guessed]//g")" ] ; then + echo "Uh oh: You have already tried $guess" + # Now we can actually see if the letter appears in the word + elif [ "$(echo $match | sed "s/$guess/-/g")" != "$match" ] ; then + guessed="$guessed$guess" + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + if [ "$partial" = "$match" ] ; then + echo "** You've been pardoned!! Well done! The word was \"$match\"." + guess="$match" + else + echo "* Great! The letter \"$guess\" appears in the word!" + fi + elif [ $bad -eq 1 ] ; then + echo "** Uh oh: you've run out of steps. You're on the platform... " + echo "** The word you were trying to guess was \"$match\"" + guess="$match" + else + echo "* Nope, \"$guess\" does not appear in the word." + guessed="$guessed$guess" + bad=$(( $bad - 1 )) + fi + done +done +exit 0 diff --git a/Week6/ShairaBergantinos/hangman b/Week6/ShairaBergantinos/hangman new file mode 100644 index 0000000..e786713 --- /dev/null +++ b/Week6/ShairaBergantinos/hangman @@ -0,0 +1,82 @@ +#!/bin/bash +# hangman - A simple version of the hangman game. Instead of showing a +# gradually embodied hanging man, this simply has a bad guess countdown. +# You can optionally indicate the initial distance from the gallows as +# the only arg. + +wordlib="/home/shairabergantinos/long-words.txt" +empty="\." # we need something for the sed [set] when $guessed="" +games=0 + +# Start by testing for our word library datafile + +if [ ! -r "$wordlib" ] ; then + echo "$0: Missing word library $wordlib" >&2 + echo "(online: http://www.intuitive.com/wicked/examples/long-words.txt" >&2 + echo "save the file as $wordlib and you're ready to play!)" >&2 + exit 1 +fi + +# The big while loop. This is where everything happens + +while [ "$guess" != "quit" ] ; do + trap 'echo " CTL+C was ignored"' INT + + match="$(./randomquote $wordlib)" # pick a new word from the library + + if [ $games -gt 0 ] ; then + echo "" + echo "*** New Game! ***" + fi + + games="$(( $games + 1 ))" + guessed="" ; guess="" ; bad=${1:-6} + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + + # The guess > analyze > show results > loop happens in this block + + while [ "$guess" != "$match" -a "$guess" != "quit" ] ; do + + echo "" + if [ ! -z "$guessed" ] ; then # remember, ! –z means "is not empty" + /bin/echo -n "Guessed: $guessed, " + fi + echo "Steps from gallows: $bad, word so far: $partial" + + /bin/echo -n "Guess a letter: " + read guess + echo "" + + if [ "$guess" = "$match" ] ; then # Got it! + echo "You got it!" + elif [ "$guess" = "quit" ] ; then # You’re out? Ok. + sleep 0 # A 'no op' to avoid an error message on 'quit' + # Now we need to validate the guess with various filters + elif [ $(echo $guess | wc -c | sed 's/[^[:digit:]]//g') -ne 2 ] ; then + echo "Uh oh: You can only guess a single letter at a time" + elif [ ! -z "$(echo $guess | sed 's/[[:lower:]]//g')" ] ; then + echo "Uh oh: Please only use lowercase letters for your guesses" + elif [ -z "$(echo $guess | sed "s/[$empty$guessed]//g")" ] ; then + echo "Uh oh: You have already tried $guess" + # Now we can actually see if the letter appears in the word + elif [ "$(echo $match | sed "s/$guess/-/g")" != "$match" ] ; then + guessed="$guessed$guess" + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + if [ "$partial" = "$match" ] ; then + echo "** You've been pardoned!! Well done! The word was \"$match\"." + guess="$match" + else + echo "* Great! The letter \"$guess\" appears in the word!" + fi + elif [ $bad -eq 1 ] ; then + echo "** Uh oh: you've run out of steps. You're on the platform... " + echo "** The word you were trying to guess was \"$match\"" + guess="$match" + else + echo "* Nope, \"$guess\" does not appear in the word." + guessed="$guessed$guess" + bad=$(( $bad - 1 )) + fi + done +done +exit 0 diff --git a/Week6/ShairaBergantinos/problem1.png b/Week6/ShairaBergantinos/problem1.png new file mode 100644 index 0000000..41b335c Binary files /dev/null and b/Week6/ShairaBergantinos/problem1.png differ diff --git a/Week6/ShairaBergantinos/problem2.png b/Week6/ShairaBergantinos/problem2.png new file mode 100644 index 0000000..c34d6ad Binary files /dev/null and b/Week6/ShairaBergantinos/problem2.png differ diff --git a/Week6/Smart/Hw6 b/Week6/Smart/Hw6 new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Week6/Smart/Hw6 @@ -0,0 +1 @@ + diff --git a/Week6/Smart/Hw6_secondimage_Smart.jpg b/Week6/Smart/Hw6_secondimage_Smart.jpg new file mode 100644 index 0000000..021137a Binary files /dev/null and b/Week6/Smart/Hw6_secondimage_Smart.jpg differ diff --git a/Week6/Smart/hw6_Smart.PNG b/Week6/Smart/hw6_Smart.PNG new file mode 100644 index 0000000..3b9b34c Binary files /dev/null and b/Week6/Smart/hw6_Smart.PNG differ diff --git a/Week6/StevenSurujballi/HW 6 Part 1.PNG b/Week6/StevenSurujballi/HW 6 Part 1.PNG new file mode 100644 index 0000000..5a77cc1 Binary files /dev/null and b/Week6/StevenSurujballi/HW 6 Part 1.PNG differ diff --git a/Week6/StevenSurujballi/HW 6 Part 2.PNG b/Week6/StevenSurujballi/HW 6 Part 2.PNG new file mode 100644 index 0000000..873ab73 Binary files /dev/null and b/Week6/StevenSurujballi/HW 6 Part 2.PNG differ diff --git a/Week6/StevenSurujballi/README b/Week6/StevenSurujballi/README new file mode 100644 index 0000000..d5eb1c8 --- /dev/null +++ b/Week6/StevenSurujballi/README @@ -0,0 +1 @@ +Homework 6 consists of 2 images, 1 for part 1 and 1 for part 2. It also includes the modified hangman code in the "games" directory. diff --git a/Week6/StevenSurujballi/games/README b/Week6/StevenSurujballi/games/README new file mode 100644 index 0000000..9736b5f --- /dev/null +++ b/Week6/StevenSurujballi/games/README @@ -0,0 +1 @@ +includes 3 files: hangman, randomquote & long-words.txt diff --git a/Week6/StevenSurujballi/games/hangman b/Week6/StevenSurujballi/games/hangman new file mode 100644 index 0000000..89cc922 --- /dev/null +++ b/Week6/StevenSurujballi/games/hangman @@ -0,0 +1,82 @@ +#!/bin/bash +# hangman - A simple version of the hangman game. Instead of showing a +# gradually embodied hanging man, this simply has a bad guess countdown. +# You can optionally indicate the initial distance from the gallows as +# the only arg. + +wordlib="/home/wordprodigy/NJCU/games/long-words.txt" +empty="\." # we need something for the sed [set] when $guessed="" +games=0 + +# Start by testing for our word library datafile + +if [ ! -r "$wordlib" ] ; then + echo "$0: Missing word library $wordlib" >&2 + echo "(online: http://www.intuitive.com/wicked/examples/long-words.txt" >&2 + echo "save the file as $wordlib and you're ready to play!)" >&2 + exit 1 +fi + +# The big while loop. This is where everything happens + +while [ "$guess" != "quit" ] ; do + match="$(./randomquote $wordlib)" # pick a new word from the library & amended directory + trap 'echo " -Ctrl-C ignored" ' INT + + if [ $games -gt 0 ] ; then + echo "" + echo "*** New Game! ***" + + fi + + games="$(( $games + 1 ))" + guessed="" ; guess="" ; bad=${1:-6} + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + + # The guess > analyze > show results > loop happens in this block + + while [ "$guess" != "$match" -a "$guess" != "quit" ] ; do + + echo "" + if [ ! -z "$guessed" ] ; then # remember, ! –z means "is not empty" + /bin/echo -n "Guessed: $guessed, " + fi + echo "Steps from gallows: $bad, word so far: $partial" + + /bin/echo -n "Guess a letter: " + read guess + echo "" + + if [ "$guess" = "$match" ] ; then # Got it! + echo "You got it!" + elif [ "$guess" = "quit" ] ; then # You’re out? Ok. + sleep 0 # A 'no op' to avoid an error message on 'quit' + # Now we need to validate the guess with various filters + elif [ $(echo $guess | wc -c | sed 's/[^[:digit:]]//g') -ne 2 ] ; then + echo "Uh oh: You can only guess a single letter at a time" + elif [ ! -z "$(echo $guess | sed 's/[[:lower:]]//g')" ] ; then + echo "Uh oh: Please only use lowercase letters for your guesses" + elif [ -z "$(echo $guess | sed "s/[$empty$guessed]//g")" ] ; then + echo "Uh oh: You have already tried $guess" + # Now we can actually see if the letter appears in the word + elif [ "$(echo $match | sed "s/$guess/-/g")" != "$match" ] ; then + guessed="$guessed$guess" + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + if [ "$partial" = "$match" ] ; then + echo "** You've been pardoned!! Well done! The word was \"$match\"." + guess="$match" + else + echo "* Great! The letter \"$guess\" appears in the word!" + fi + elif [ $bad -eq 1 ] ; then + echo "** Uh oh: you've run out of steps. You're on the platform... " + echo "** The word you were trying to guess was \"$match\"" + guess="$match" + else + echo "* Nope, \"$guess\" does not appear in the word." + guessed="$guessed$guess" + bad=$(( $bad - 1 )) + fi + done +done +exit 0 diff --git a/Week6/StevenSurujballi/games/long-words.txt b/Week6/StevenSurujballi/games/long-words.txt new file mode 100644 index 0000000..5abd14b --- /dev/null +++ b/Week6/StevenSurujballi/games/long-words.txt @@ -0,0 +1,13 @@ +rich +panoramic +watch +system +known +current +converge +texture +downtown +thing +goat +calendar +verify diff --git a/Week6/StevenSurujballi/games/randomquote b/Week6/StevenSurujballi/games/randomquote new file mode 100644 index 0000000..26067af --- /dev/null +++ b/Week6/StevenSurujballi/games/randomquote @@ -0,0 +1,28 @@ +#!/bin/bash + +# randomquote--Given a one-line-per-entry datafile, this +# script randomly picks one line and displays it. Best used +# as an SSI call within a web page. + +awkscript="/tmp/randomquote.awk.$$" + +if [ $# -ne 1 ] ; then + echo "Usage: randomquote datafilename" >&2 + exit 1 +elif [ ! -r "$1" ] ; then + echo "Error: quote file $1 is missing or not readable" >&2 + exit 1 +fi + +trap "$(which rm) -f $awkscript" 0 + +cat << "EOF" > $awkscript +BEGIN { srand() } + { s[NR] = $0 } +END { print s[randint(NR)] } +function randint(n) { return int (n * rand() ) + 1 } +EOF + +awk -f $awkscript < "$1" + +exit 0 diff --git a/Week6/Test/readme b/Week6/Test/readme new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Week6/Test/readme @@ -0,0 +1 @@ + diff --git a/Week6/corrado/games/2019-03-05 (1).png b/Week6/corrado/games/2019-03-05 (1).png new file mode 100644 index 0000000..0cf6cef Binary files /dev/null and b/Week6/corrado/games/2019-03-05 (1).png differ diff --git a/Week6/corrado/games/2019-03-07.png b/Week6/corrado/games/2019-03-07.png new file mode 100644 index 0000000..43d2582 Binary files /dev/null and b/Week6/corrado/games/2019-03-07.png differ diff --git a/Week6/corrado/games/hangman b/Week6/corrado/games/hangman new file mode 100644 index 0000000..a0c3776 --- /dev/null +++ b/Week6/corrado/games/hangman @@ -0,0 +1,80 @@ +#!/bin/bash +# hangman - A simple version of the hangman game. Instead of showing a +# gradually embodied hanging man, this simply has a bad guess countdown. +# You can optionally indicate the initial distance from the gallows as +# the only arg. + +wordlib="long-words.txt" +empty="\." # we need something for the sed [set] when $guessed="" +games=0 + +# Start by testing for our word library datafile + +if [ ! -r "$wordlib" ] ; then + echo "$0: Missing word library $wordlib" >&2 + echo "(online: http://www.intuitive.com/wicked/examples/long-words.txt" >&2 + echo "save the file as $wordlib and you're ready to play!)" >&2 + exit 1 +fi + +# The big while loop. This is where everything happens + +while [ "$guess" != "quit" ] ; do + match="$(randomquote $wordlib)" # pick a new word from the library + + if [ $games -gt 0 ] ; then + echo "" + echo "*** New Game! ***" + fi + + games="$(( $games + 1 ))" + guessed="" ; guess="" ; bad=${1:-6} + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + + # The guess > analyze > show results > loop happens in this block + + while [ "$guess" != "$match" -a "$guess" != "quit" ] ; do + + echo "" + if [ ! -z "$guessed" ] ; then # remember, ! –z means "is not empty" + /bin/echo -n "Guessed: $guessed, " + fi + echo "Steps from gallows: $bad, word so far: $partial" + trap 'echo "Ctrl-c Ignored" ' INT + /bin/echo -n "Guess a letter: " + read guess + echo "" + + if [ "$guess" = "$match" ] ; then # Got it! + echo "You got it!" + elif [ "$guess" = "quit" ] ; then # You’re out? Ok. + sleep 0 # A 'no op' to avoid an error message on 'quit' + # Now we need to validate the guess with various filters + elif [ $(echo $guess | wc -c | sed 's/[^[:digit:]]//g') -ne 2 ] ; then + echo "Uh oh: You can only guess a single letter at a time" + elif [ ! -z "$(echo $guess | sed 's/[[:lower:]]//g')" ] ; then + echo "Uh oh: Please only use lowercase letters for your guesses" + elif [ -z "$(echo $guess | sed "s/[$empty$guessed]//g")" ] ; then + echo "Uh oh: You have already tried $guess" + # Now we can actually see if the letter appears in the word + elif [ "$(echo $match | sed "s/$guess/-/g")" != "$match" ] ; then + guessed="$guessed$guess" + partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")" + if [ "$partial" = "$match" ] ; then + echo "** You've been pardoned!! Well done! The word was \"$match\"." + guess="$match" + else + echo "* Great! The letter \"$guess\" appears in the word!" + fi + elif [ $bad -eq 1 ] ; then + echo "** Uh oh: you've run out of steps. You're on the platform... " + echo "** The word you were trying to guess was \"$match\"" + guess="$match" + else + echo "* Nope, \"$guess\" does not appear in the word." + guessed="$guessed$guess" + bad=$(( $bad - 1 )) + fi + done +done +exit 0 diff --git a/Week6/corrado/games/long-words.txt b/Week6/corrado/games/long-words.txt new file mode 100644 index 0000000..b9e2b77 --- /dev/null +++ b/Week6/corrado/games/long-words.txt @@ -0,0 +1,5 @@ +car +dog +cat +hat +pickle diff --git a/Week6/corrado/games/randomquote b/Week6/corrado/games/randomquote new file mode 100644 index 0000000..26067af --- /dev/null +++ b/Week6/corrado/games/randomquote @@ -0,0 +1,28 @@ +#!/bin/bash + +# randomquote--Given a one-line-per-entry datafile, this +# script randomly picks one line and displays it. Best used +# as an SSI call within a web page. + +awkscript="/tmp/randomquote.awk.$$" + +if [ $# -ne 1 ] ; then + echo "Usage: randomquote datafilename" >&2 + exit 1 +elif [ ! -r "$1" ] ; then + echo "Error: quote file $1 is missing or not readable" >&2 + exit 1 +fi + +trap "$(which rm) -f $awkscript" 0 + +cat << "EOF" > $awkscript +BEGIN { srand() } + { s[NR] = $0 } +END { print s[randint(NR)] } +function randint(n) { return int (n * rand() ) + 1 } +EOF + +awk -f $awkscript < "$1" + +exit 0 diff --git a/Week6/hi b/Week6/hi new file mode 100644 index 0000000..b14df64 --- /dev/null +++ b/Week6/hi @@ -0,0 +1 @@ +Hi diff --git a/Week6/homework.txt b/Week6/homework.txt new file mode 100644 index 0000000..9f8302a --- /dev/null +++ b/Week6/homework.txt @@ -0,0 +1,54 @@ +Homework 6: + +1. Compile, change ownership, and change permissions on the execve_setuid program we looked at in class. + +2. Get the hangman game from the 12/ directory here: https://github.com/brandonprry/wicked_cool_shell_scripts_2e + Make the code work. It uses a tool "randomquote" on line 23. "randomquote" is available in the 8/ directory of that + repository. + Add some signal handling to the bash script so that CTRL+C does not stop the process. + We didn't cover bash signal handling in class Instead we covered signal handling with C. In bash it is even easier. Make + sure to + read this: https://www.linuxjournal.com/article/10815 + +Notice that this game depends on a file called long-words.txt. So far as I can tell the download link provided by the script +is dead. Just make your own file containing some words. Nothing vulgar or inappropriate, just 5 or so words, each on it's own +line. + +Due: Before 7:00 PM on March 7th. + +Grading: +50% The setuid/setgid program can be run as an unprivileged user to do some privileged action +50% Hangman works, and ignores CTRL + C + +Submission: + +For credit upload two images to Week6/YourName. Also add your hangman code for problem 2. + +For image 1 I want you to run: + +Image 1: +``` +$date +$curl ipinfo.io/ip +$gcc execve_setuid.c -o example +$sudo chown XX:XX +$sudo chmod XXXX +$whoami +$./example +[output] +``` + +Image2: +``` +$whoami +$curl ipinfo.io/ip +[output] +$ cat /usr/lib/games/long-words.txt +$./hangman +[play a little bit] +$CTRL+C +[Should see a message that CTL+C was ignored] +[play a little bit more] +``` + +See sample images for an example of a good submission. diff --git a/Week7/MelvynDrag/1.txt b/Week7/MelvynDrag/1.txt new file mode 100644 index 0000000..329917e --- /dev/null +++ b/Week7/MelvynDrag/1.txt @@ -0,0 +1,3 @@ +I installed *thisPackage*. I had to add the following line to my sources.list file: + +deb blah blah blah non-free diff --git a/Week7/MelvynDrag/2.png b/Week7/MelvynDrag/2.png new file mode 100644 index 0000000..8abc66d --- /dev/null +++ b/Week7/MelvynDrag/2.png @@ -0,0 +1,2 @@ +This file is a screenshot and shows that I installed curl from source. Something documenting how you did it and +showing that there are 2 curls on your machine after the install. diff --git a/Week7/MelvynDrag/3.txt b/Week7/MelvynDrag/3.txt new file mode 100644 index 0000000..b317e92 --- /dev/null +++ b/Week7/MelvynDrag/3.txt @@ -0,0 +1 @@ +the curl version that is run when I type "curl" is the one installed in /the/path/to/package. This is because of these reasons. diff --git a/Week7/MelvynDrag/4.txt b/Week7/MelvynDrag/4.txt new file mode 100644 index 0000000..c851e97 --- /dev/null +++ b/Week7/MelvynDrag/4.txt @@ -0,0 +1,5 @@ +I ran this command: + curl -X GET -L https://www.reddit.com/r/linux4noobs/top/.json?count=20 +The command line output was: + +{ key: value } diff --git a/Week7/MelvynDrag/hash.png b/Week7/MelvynDrag/hash.png new file mode 100644 index 0000000..f177b7b Binary files /dev/null and b/Week7/MelvynDrag/hash.png differ diff --git a/Week7/MelvynDrag/myhash.sh b/Week7/MelvynDrag/myhash.sh new file mode 100644 index 0000000..d70f2dc --- /dev/null +++ b/Week7/MelvynDrag/myhash.sh @@ -0,0 +1,27 @@ +# +# myhash.sh +# Melvyn Drag +# 6 March 2019 +# +# Reference: +# https://stackoverflow.com/questions/806906/how-do-i-test-if-a-variable-i +s-a-number-in-bash +inputVal=$1 +echo "myhash being run with $inputVal" +STRING_HASH_VAL=0 +EVEN_HASH_VAL=1 +ODD_HASH_VAL=2 +NUMBER_RE='^[-]?[0-9]+$' +EVEN_RE=__TODO__REGEX_FOR_EVEN_NUMBER +if [[ $inputVal =~ $NUMBER_RE ]] +then + if [[ __TODO__MATCH_EVEN_NUMBER ]] + then + echo $EVEN_HASH_VAL + else # must be odd + echo $ODD_HASH_VAL + fi +else # must be a string + echo $STRING_HASH_VAL; +fi +exit 0 diff --git a/Week7/SebastianTapia/1.txt b/Week7/SebastianTapia/1.txt new file mode 100644 index 0000000..15a5ade --- /dev/null +++ b/Week7/SebastianTapia/1.txt @@ -0,0 +1,11 @@ +assaultcube-data + + +deb http://deb.debian.org/debian/ stretch main contrib non-free +deb-src http://deb.debian.org/debian/ stretch main contrib non-free +deb http://security.debian.org/ stretch/updates main contrib non-free +deb-src http://security.debian.org/ stretch/updates main contrib non-free +deb http://deb.debian.org/debian/ stretch-updates main contrib non-free +deb-src http://deb.debian.org/debian/ stretch-updates main contrib non-free + +Added the non-free at the end so it can download non-free software packages. diff --git a/Week7/SebastianTapia/CurlA&B.txt b/Week7/SebastianTapia/CurlA&B.txt new file mode 100644 index 0000000..8251450 --- /dev/null +++ b/Week7/SebastianTapia/CurlA&B.txt @@ -0,0 +1,4 @@ +a) When you run curl on the command line by typing 'curl' which version of +curl is run? Its comes up as the one installed in /usr/local/bin/curl +b) Why is that version of curl run and not the other? +That version is ran because when you typed $PATH you see that /usr/local/bin/ as it pops up first. This is why the curl installed in the source runs. diff --git a/Week7/SebastianTapia/README.md b/Week7/SebastianTapia/README.md new file mode 100644 index 0000000..c1e3b52 --- /dev/null +++ b/Week7/SebastianTapia/README.md @@ -0,0 +1 @@ +HI diff --git a/Week7/SebastianTapia/Screen Shot 2019-03-21 at 12.18.13 PM.png b/Week7/SebastianTapia/Screen Shot 2019-03-21 at 12.18.13 PM.png new file mode 100644 index 0000000..2fe9b93 Binary files /dev/null and b/Week7/SebastianTapia/Screen Shot 2019-03-21 at 12.18.13 PM.png differ diff --git a/Week7/SebastianTapia/Screen Shot 2019-03-21 at 12.43.57 PM.png b/Week7/SebastianTapia/Screen Shot 2019-03-21 at 12.43.57 PM.png new file mode 100644 index 0000000..0ecf6ca Binary files /dev/null and b/Week7/SebastianTapia/Screen Shot 2019-03-21 at 12.43.57 PM.png differ diff --git a/Week7/SebastianTapia/Screen Shot 2019-03-21 at 2.21.37 PM.png b/Week7/SebastianTapia/Screen Shot 2019-03-21 at 2.21.37 PM.png new file mode 100644 index 0000000..ab1e990 Binary files /dev/null and b/Week7/SebastianTapia/Screen Shot 2019-03-21 at 2.21.37 PM.png differ diff --git a/Week7/SebastianTapia/myhash.sh b/Week7/SebastianTapia/myhash.sh new file mode 100644 index 0000000..2dfec83 --- /dev/null +++ b/Week7/SebastianTapia/myhash.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# myhash.sh +# Sebastian Tapia +# 19 March 2019 +# +# Reference: +# https://stackoverflow.com/questions/806906/how-do-i-test-if-a-variable-i +#s-a-number-in-bash +inputVal=$1 +echo "myhash being run with $inputVal" +STRING_HASH_VAL=0 +EVEN_HASH_VAL=1 +ODD_HASH_VAL=2 +NUMBER_RE='^[-]?[0-9]+$' +EVEN_RE=0 +if [[ $inputVal =~ $NUMBER_RE ]] +then + if [[ $((inputVal%2)) -eq $EVEN_RE ]] +then + echo $EVEN_HASH_VAL +else # must be odd + echo $ODD_HASH_VAL +fi +else # must be a string + echo $STRING_HASH_VAL; +fi +exit 0 diff --git a/Week7/homework.txt b/Week7/homework.txt new file mode 100644 index 0000000..cf31079 --- /dev/null +++ b/Week7/homework.txt @@ -0,0 +1,37 @@ +Homework: + +1. Find and install a non-free software package on debian 9 by modifying your sources.list file. *Note*: non-free means +non-free. 0 credit for installing a contrib package. 0 credit for installing a main package. It must be a non-free package!!! + +2. Install curl from source to /usr/local/bin. a) When you run curl on the command line by typing 'curl' which version of +curl is run? b) Why is that version of curl run and not the other? + +3. Write an https request with curl to hit a the reddit rest API. If the version you compiled doesn't work, just use the one +available by default. You may get an error response "too many request". + +Some references: + https://www.reddit.com/r/redditdev/comments/43z4gp/get_top_posts_in_json_from_subreddit_with_curl/ + + Example curl request: + curl -X GET -L https://www.reddit.com/r/TellMeAFact/top/.json?count=20 + + What's a rest API? There is some good discussion o it here: https://www.reddit.com/r/learnprogramming/comments/40lfkn/eli5_rest_api/ . Or you can just google it. + +4. Write a hash algorithm that takes inputs and returns: + a. If the input is non-numeric: 0 + b. If the input is even: 1 + c. If the input is odd: 2 + +Grading: +Pull Request due March 21st by 7PM. + +100%/6 points for successful completion of each of the 6 bullet points below. + +Submission: +You PR should contain 6 files as described below and be in Week7/YourName: +1. .txt file telling me the name of the package you installed and how you had to modify your sources.list to install it. +2. screenshot showing that you built curl from scratch. +3. .txt file containing the answer to questions (a) and (b) from #2 above. +4. .txt file showing the rest request you ran and the output of it. +5. file myhash.sh that takes an argument and outputs the hash of it. e.g. if you run "bash myhash.sh somehinggoeshere" +6. screenshot of you hash file in action generating the appropirate hashes for even, odd, and string value inputs. diff --git a/Week6/Apache2_Flask_Setup/FLASKAPPS/helloworldapp/__init__.py b/Week8/Apache2_Flask_Setup/FLASKAPPS/helloworldapp/__init__.py similarity index 100% rename from Week6/Apache2_Flask_Setup/FLASKAPPS/helloworldapp/__init__.py rename to Week8/Apache2_Flask_Setup/FLASKAPPS/helloworldapp/__init__.py diff --git a/Week6/Apache2_Flask_Setup/FLASKAPPS/helloworldapp/helloworldapp.wsgi b/Week8/Apache2_Flask_Setup/FLASKAPPS/helloworldapp/helloworldapp.wsgi similarity index 100% rename from Week6/Apache2_Flask_Setup/FLASKAPPS/helloworldapp/helloworldapp.wsgi rename to Week8/Apache2_Flask_Setup/FLASKAPPS/helloworldapp/helloworldapp.wsgi diff --git a/Week6/Apache2_Flask_Setup/README.md b/Week8/Apache2_Flask_Setup/README.md similarity index 63% rename from Week6/Apache2_Flask_Setup/README.md rename to Week8/Apache2_Flask_Setup/README.md index 5d3010f..a0d3ed7 100644 --- a/Week6/Apache2_Flask_Setup/README.md +++ b/Week8/Apache2_Flask_Setup/README.md @@ -18,3 +18,16 @@ a2enmod wsgi a2ensite helloworldapp service apache2 restart ``` + +If you can't access the site on a different ip address, then update your /etc/hosts and the apache conf. + +flaskapp.conf: +ServerName mysite.com + +/etc/hosts: +127.0.0.1 mysite.com + +Then restart the server and now you can use curl like + +curl localhost + diff --git a/Week6/Apache2_Flask_Setup/flaskapp.conf b/Week8/Apache2_Flask_Setup/flaskapp.conf similarity index 100% rename from Week6/Apache2_Flask_Setup/flaskapp.conf rename to Week8/Apache2_Flask_Setup/flaskapp.conf diff --git a/Week6/FlaskSite/README.md b/Week8/FlaskSite/README.md similarity index 100% rename from Week6/FlaskSite/README.md rename to Week8/FlaskSite/README.md diff --git a/Week6/FlaskSite/flaskApp.py b/Week8/FlaskSite/flaskApp.py similarity index 100% rename from Week6/FlaskSite/flaskApp.py rename to Week8/FlaskSite/flaskApp.py diff --git a/Week6/FlaskSite/requirements.txt b/Week8/FlaskSite/requirements.txt similarity index 100% rename from Week6/FlaskSite/requirements.txt rename to Week8/FlaskSite/requirements.txt diff --git a/Week6/FlaskSite/runCurl.sh b/Week8/FlaskSite/runCurl.sh similarity index 100% rename from Week6/FlaskSite/runCurl.sh rename to Week8/FlaskSite/runCurl.sh diff --git a/Week8/homework.txt b/Week8/homework.txt new file mode 100644 index 0000000..2734b96 --- /dev/null +++ b/Week8/homework.txt @@ -0,0 +1,3 @@ +Follow instructions to set up a webserver on your machine. + +Follow instructions so that I can make REST requests to it. diff --git a/Week9/Readme.md b/Week9/Readme.md new file mode 100644 index 0000000..a099036 --- /dev/null +++ b/Week9/Readme.md @@ -0,0 +1 @@ +TBD diff --git a/Week9/SebastianTapia/README.md b/Week9/SebastianTapia/README.md new file mode 100644 index 0000000..d6613f5 --- /dev/null +++ b/Week9/SebastianTapia/README.md @@ -0,0 +1 @@ +Hello there diff --git a/Week9/SebastianTapia/Screen Shot 2019-04-04 at 2.07.01 AM.png b/Week9/SebastianTapia/Screen Shot 2019-04-04 at 2.07.01 AM.png new file mode 100644 index 0000000..eb6692c Binary files /dev/null and b/Week9/SebastianTapia/Screen Shot 2019-04-04 at 2.07.01 AM.png differ diff --git a/Week9/SebastianTapia/__init__.py b/Week9/SebastianTapia/__init__.py new file mode 100644 index 0000000..b323a0e --- /dev/null +++ b/Week9/SebastianTapia/__init__.py @@ -0,0 +1,31 @@ +from flask import Flask, request +from flask_restful import Resource, Api +app = Flask(__name__) +api = Api(app) + + +@app.route('/', methods=['GET', 'POST']) +def index(): + if request.method == 'POST': + input1 = request.form['inputOne'] + input2 = request.form['inputTwo'] + else: + return 'Hello,Worldz!' + +studentz = [] +class Studentz(Resource): + def get(self, name): + for s in studentz: + if s['name'] == name: + return s, 200 + return {"studentz": None}, 404 + + def post(self, name): + new_studentz = {'name' name } + studentz.append( new_studentz ) + return new_studentz, 201 + +api.add_resource( Studentz, '/studentz/') + +if __name__== "__main__": + app.run() diff --git a/Week9/SebastianTapia/curl.test b/Week9/SebastianTapia/curl.test new file mode 100644 index 0000000..b1685d5 --- /dev/null +++ b/Week9/SebastianTapia/curl.test @@ -0,0 +1,8 @@ +curl -X GET mysite.com/studentz/Jane +#nothing +curl -X POST mysite.com/studentz/Jane +curl -X POST mysite.com/studentz/Jack +curl -X GET mysite.com/studentz/Jane +#"name": "Jane" +curl -X GET mysite.com/studentz/Jack +#"name": "Jack" diff --git a/Week4/homework.txt b/Week9/homework.txt similarity index 100% rename from Week4/homework.txt rename to Week9/homework.txt diff --git a/Week4/id_rsa.pub b/Week9/id_rsa.pub similarity index 100% rename from Week4/id_rsa.pub rename to Week9/id_rsa.pub diff --git a/chaitanya/readme b/chaitanya/readme new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/chaitanya/readme @@ -0,0 +1 @@ +test diff --git a/gothicTux.svg b/gothicTux.svg new file mode 100644 index 0000000..6856c18 --- /dev/null +++ b/gothicTux.svg @@ -0,0 +1,10221 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GOTHIC TUX + + diff --git a/nohup.out b/nohup.out new file mode 100644 index 0000000..e69de29