library(tidyverse)
library(openintro)
Exercise 1
A bag contains 5 green and 7 red jellybeans. How many ways can 5
jellybeans be withdrawn from the bag so that the number of green ones
withdrawn will be less than 2?
# Number of green jellybeans
num_green <- 5
# Number of red jellybeans
num_red <- 7
# Total number of jellybeans to be withdrawn
total_jellybeans <- 5
# Calculating combinations for case 1 (drawing all red jellybeans)
case1_combinations <- choose(num_red, total_jellybeans)
# Calculating combinations for case 2 (drawing 1 green jellybean and the rest red)
case2_combinations <- choose(num_green, 1) * choose(num_red, total_jellybeans - 1)
# Total combinations
total_combinations1 <- case1_combinations + case2_combinations
total_combinations1
## [1] 196
Exercise 2
A certain congressional committee consists of 14 senators and 13
representatives. How many ways can a subcommittee of 5 be formed if at
least 4 of the members must be representatives?
choose(14,1) * choose(13,4) + choose(14,0) * choose(13,5)
## [1] 11297
Exercise 3
If a coin is tossed 5 times, and then a standard six-sided die is
rolled 2 times, and finally a group of three cards are drawn from a
standard deck of 52 cards without replacement, how many different
outcomes are possible?
Coins <- 2^5
Deck <- 6^2
Cards <- 52 * 51 * 50
Coins * Deck * Cards
## [1] 152755200
Exercise 4
3 cards are drawn from a standard deck without replacement. What is
the probability that at least one of the cards drawn is a 3? Express
your answer as a fraction or a decimal number rounded to four decimal
places.
Take_3 <- (48/52) * (47/51) * (46/50)
1-Take_3
## [1] 0.2173756
round(1-Take_3, digits = 4)
## [1] 0.2174
Exercise 5
Lorenzo is picking out some movies to rent, and he is primarily
interested in documentaries and mysteries. He has narrowed down his
selections to 17 documentaries and 14 mysteries.
Step 1. How many different combinations of 5 movies can he rent?
# Number of documentaries
num_documentaries <- 17
# Number of mysteries
num_mysteries <- 14
# Total number of movies
total_movies <- num_documentaries + num_mysteries
# Number of movies to be selected
movies_to_select <- 5
# Calculating combinations
total_combinations <- choose(total_movies, movies_to_select)
total_combinations
## [1] 169911
Step 2. How many different combinations of 5 movies can he rent if he
wants at least one mystery?
# Number of documentaries
num_documentaries <- 17
# Number of mysteries
num_mysteries <- 14
# Number of movies to be selected
movies_to_select <- 5
# Calculate combinations for case 1 (all documentaries)
case1_combinations <- choose(num_documentaries, movies_to_select)
# Calculate combinations for case 2 (4 documentaries and 1 mystery)
case2_combinations <- choose(num_documentaries, movies_to_select - 1) * choose(num_mysteries, 1)
# Total combinations
total_combinations <- case1_combinations + case2_combinations
total_combinations
## [1] 39508
Exercise 6
In choosing what music to play at a charity fund raising event, Cory
needs to have an equal number of symphonies from Brahms, Haydn, and
Mendelssohn. If he is setting up a schedule of the 9 symphonies to be
played, and he has 4 Brahms, 104 Haydn, and 17 Mendelssohn symphonies
from which to choose, how many different schedules are possible? Express
your answer in scientific notation rounding to the hundredths place.
Schedule <- choose(4,3) * choose(104,3) * choose(17,3) * factorial(9)
signif(Schedule, digits = 4)
## [1] 1.797e+14
Exercise 7
An English teacher needs to pick 13 books to put on his reading list
for the next school year, and he needs to plan the order in which they
should be read. He has narrowed down his choices to 6 novels, 6 plays, 7
poetry books, and 5 nonfiction books.
Step 1. If he wants to include no more than 4 nonfiction books, how
many different reading schedules are possible? Express your answer in
scientific notation rounding to the hundredths place.
# Function to calculate combinations
nCk <- function(n, k) {
factorial(n) / (factorial(k) * factorial(n - k))
}
# Total ways to pick 13 books
total_ways <- nCk(6, 0) * nCk(6, 0) * nCk(7, 0) * (nCk(5, 0) + nCk(5, 1) + nCk(5, 2) + nCk(5, 3) + nCk(5, 4))
# Convert to scientific notation
total_ways_sci <- format(total_ways, scientific = TRUE, digits = 2)
total_ways_sci
## [1] "3.1e+01"
Step 2. If he wants to include all 6 plays, how many different
reading schedules are possible? Express your answer in scientific
notation rounding to the hundredths place.
# Total ways to pick the remaining 7 books
remaining_ways <- nCk(6, 0) * nCk(6, 6) * nCk(7, 0) * (nCk(5, 0) + nCk(5, 1) + nCk(5, 2) + nCk(5, 3) + nCk(5, 4) + nCk(5, 5))
# Convert to scientific notation
remaining_ways_sci <- format(remaining_ways, scientific = TRUE, digits = 2)
remaining_ways_sci
## [1] "3.2e+01"
Exercise 8
Zane is planting trees along his driveway, and he has 5 sycamores and
5 cypress trees to plant in one row. What is the probability that he
randomly plants the trees so that all 5 sycamores are next to each other
and all 5 cypress trees are next to each other? Express your answer as a
fraction or a decimal number rounded to four decimal places.
a <- 2/(factorial(10)/(factorial(5)*factorial(5)))
round(a, digits = 4)
## [1] 0.0079
Exercise 9
If you draw a queen or lower from a standard deck of cards, I will
pay you $4. If not, you pay me $16. (Aces are considered the highest
card in the deck.)
Step 1. Find the expected value of the proposition. Round your answer
to two decimal places. Losses must be expressed as negative values.
Exp_value <- ((20/52) * 4) + ((32/52) * -16)
round(Exp_value, digits = 2)
## [1] -8.31
Step 2. If you played this game 833 times how much would you expect
to win or lose? Round your answer to two decimal places. Losses must be
expressed as negative values.
total_expected_value <- Exp_value * 833
round(total_expected_value, digits = 2)
## [1] -6920.31
…
LS0tDQp0aXRsZTogIkRhdGEgNjA1IHdlZWsgNiINCmF1dGhvcjogIkxhdXJhIFB1ZWJsYSINCmRhdGU6ICJgciBTeXMuRGF0ZSgpYCINCm91dHB1dDogb3BlbmludHJvOjpsYWJfcmVwb3J0DQotLS0NCg0KYGBge3IgbG9hZC1wYWNrYWdlcywgbWVzc2FnZT1GQUxTRX0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShvcGVuaW50cm8pDQpgYGANCg0KIyMjIEV4ZXJjaXNlIDENCg0KQSBiYWcgY29udGFpbnMgNSBncmVlbiBhbmQgNyByZWQgamVsbHliZWFucy4gSG93IG1hbnkgd2F5cyBjYW4gNSBqZWxseWJlYW5zIGJlIHdpdGhkcmF3biBmcm9tIHRoZSBiYWcgc28gdGhhdCB0aGUgbnVtYmVyIG9mIGdyZWVuIG9uZXMgd2l0aGRyYXduIHdpbGwgYmUgbGVzcyB0aGFuIDI/DQoNCg0KYGBge3J9DQojIE51bWJlciBvZiBncmVlbiBqZWxseWJlYW5zDQpudW1fZ3JlZW4gPC0gNQ0KDQojIE51bWJlciBvZiByZWQgamVsbHliZWFucw0KbnVtX3JlZCA8LSA3DQoNCiMgVG90YWwgbnVtYmVyIG9mIGplbGx5YmVhbnMgdG8gYmUgd2l0aGRyYXduDQp0b3RhbF9qZWxseWJlYW5zIDwtIDUNCg0KIyBDYWxjdWxhdGluZyBjb21iaW5hdGlvbnMgZm9yIGNhc2UgMSAoZHJhd2luZyBhbGwgcmVkIGplbGx5YmVhbnMpDQpjYXNlMV9jb21iaW5hdGlvbnMgPC0gY2hvb3NlKG51bV9yZWQsIHRvdGFsX2plbGx5YmVhbnMpDQoNCiMgQ2FsY3VsYXRpbmcgY29tYmluYXRpb25zIGZvciBjYXNlIDIgKGRyYXdpbmcgMSBncmVlbiBqZWxseWJlYW4gYW5kIHRoZSByZXN0IHJlZCkNCmNhc2UyX2NvbWJpbmF0aW9ucyA8LSBjaG9vc2UobnVtX2dyZWVuLCAxKSAqIGNob29zZShudW1fcmVkLCB0b3RhbF9qZWxseWJlYW5zIC0gMSkNCg0KIyBUb3RhbCBjb21iaW5hdGlvbnMNCnRvdGFsX2NvbWJpbmF0aW9uczEgPC0gY2FzZTFfY29tYmluYXRpb25zICsgY2FzZTJfY29tYmluYXRpb25zDQp0b3RhbF9jb21iaW5hdGlvbnMxDQoNCmBgYA0KDQojIyMgRXhlcmNpc2UgMg0KDQpBIGNlcnRhaW4gY29uZ3Jlc3Npb25hbCBjb21taXR0ZWUgY29uc2lzdHMgb2YgMTQgc2VuYXRvcnMgYW5kIDEzIHJlcHJlc2VudGF0aXZlcy4gSG93IG1hbnkgd2F5cyBjYW4gYSBzdWJjb21taXR0ZWUgb2YgNSBiZSBmb3JtZWQgaWYgYXQgbGVhc3QgNCBvZiB0aGUgbWVtYmVycyBtdXN0IGJlIHJlcHJlc2VudGF0aXZlcz8NCg0KYGBge3J9DQpjaG9vc2UoMTQsMSkgKiBjaG9vc2UoMTMsNCkgKyBjaG9vc2UoMTQsMCkgKiBjaG9vc2UoMTMsNSkNCmBgYA0KDQoNCiMjIyBFeGVyY2lzZSAzDQoNCklmIGEgY29pbiBpcyB0b3NzZWQgNSB0aW1lcywgYW5kIHRoZW4gYSBzdGFuZGFyZCBzaXgtc2lkZWQgZGllIGlzIHJvbGxlZCAyIHRpbWVzLCBhbmQgZmluYWxseSBhIGdyb3VwIG9mIHRocmVlIGNhcmRzIGFyZSBkcmF3biBmcm9tIGEgc3RhbmRhcmQgZGVjayBvZiA1MiBjYXJkcyB3aXRob3V0IHJlcGxhY2VtZW50LCBob3cgbWFueSBkaWZmZXJlbnQgb3V0Y29tZXMgYXJlIHBvc3NpYmxlPw0KDQpgYGB7cn0NCkNvaW5zIDwtIDJeNQ0KRGVjayA8LSA2XjINCkNhcmRzIDwtIDUyICogNTEgKiA1MA0KQ29pbnMgKiBEZWNrICogQ2FyZHMNCmBgYA0KDQojIyMgRXhlcmNpc2UgNA0KDQozIGNhcmRzIGFyZSBkcmF3biBmcm9tIGEgc3RhbmRhcmQgZGVjayB3aXRob3V0IHJlcGxhY2VtZW50LiBXaGF0IGlzIHRoZSBwcm9iYWJpbGl0eSB0aGF0IGF0IGxlYXN0IG9uZSBvZiB0aGUgY2FyZHMgZHJhd24gaXMgYSAzPyBFeHByZXNzIHlvdXIgYW5zd2VyIGFzIGEgZnJhY3Rpb24gb3IgYSBkZWNpbWFsIG51bWJlciByb3VuZGVkIHRvIGZvdXIgZGVjaW1hbCBwbGFjZXMuDQoNCmBgYHtyfQ0KVGFrZV8zIDwtICg0OC81MikgKiAoNDcvNTEpICogKDQ2LzUwKQ0KMS1UYWtlXzMNCmBgYA0KYGBge3J9DQpyb3VuZCgxLVRha2VfMywgZGlnaXRzID0gNCkNCmBgYA0KDQoNCiMjIyBFeGVyY2lzZSA1DQoNCkxvcmVuem8gaXMgcGlja2luZyBvdXQgc29tZSBtb3ZpZXMgdG8gcmVudCwgYW5kIGhlIGlzIHByaW1hcmlseSBpbnRlcmVzdGVkIGluIGRvY3VtZW50YXJpZXMgYW5kIG15c3Rlcmllcy4gSGUgaGFzIG5hcnJvd2VkIGRvd24gaGlzIHNlbGVjdGlvbnMgdG8gMTcgZG9jdW1lbnRhcmllcyBhbmQgMTQgbXlzdGVyaWVzLg0KDQpTdGVwIDEuIEhvdyBtYW55IGRpZmZlcmVudCBjb21iaW5hdGlvbnMgb2YgNSBtb3ZpZXMgY2FuIGhlIHJlbnQ/DQoNCg0KYGBge3J9DQojIE51bWJlciBvZiBkb2N1bWVudGFyaWVzDQpudW1fZG9jdW1lbnRhcmllcyA8LSAxNw0KDQojIE51bWJlciBvZiBteXN0ZXJpZXMNCm51bV9teXN0ZXJpZXMgPC0gMTQNCg0KIyBUb3RhbCBudW1iZXIgb2YgbW92aWVzDQp0b3RhbF9tb3ZpZXMgPC0gbnVtX2RvY3VtZW50YXJpZXMgKyBudW1fbXlzdGVyaWVzDQoNCiMgTnVtYmVyIG9mIG1vdmllcyB0byBiZSBzZWxlY3RlZA0KbW92aWVzX3RvX3NlbGVjdCA8LSA1DQoNCiMgQ2FsY3VsYXRpbmcgY29tYmluYXRpb25zDQp0b3RhbF9jb21iaW5hdGlvbnMgPC0gY2hvb3NlKHRvdGFsX21vdmllcywgbW92aWVzX3RvX3NlbGVjdCkNCnRvdGFsX2NvbWJpbmF0aW9ucw0KDQpgYGANCg0KDQpTdGVwIDIuIEhvdyBtYW55IGRpZmZlcmVudCBjb21iaW5hdGlvbnMgb2YgNSBtb3ZpZXMgY2FuIGhlIHJlbnQgaWYgaGUgd2FudHMgYXQgbGVhc3Qgb25lIG15c3Rlcnk/DQoNCmBgYHtyfQ0KIyBOdW1iZXIgb2YgZG9jdW1lbnRhcmllcw0KbnVtX2RvY3VtZW50YXJpZXMgPC0gMTcNCg0KIyBOdW1iZXIgb2YgbXlzdGVyaWVzDQpudW1fbXlzdGVyaWVzIDwtIDE0DQoNCiMgTnVtYmVyIG9mIG1vdmllcyB0byBiZSBzZWxlY3RlZA0KbW92aWVzX3RvX3NlbGVjdCA8LSA1DQoNCiMgQ2FsY3VsYXRlIGNvbWJpbmF0aW9ucyBmb3IgY2FzZSAxIChhbGwgZG9jdW1lbnRhcmllcykNCmNhc2UxX2NvbWJpbmF0aW9ucyA8LSBjaG9vc2UobnVtX2RvY3VtZW50YXJpZXMsIG1vdmllc190b19zZWxlY3QpDQoNCiMgQ2FsY3VsYXRlIGNvbWJpbmF0aW9ucyBmb3IgY2FzZSAyICg0IGRvY3VtZW50YXJpZXMgYW5kIDEgbXlzdGVyeSkNCmNhc2UyX2NvbWJpbmF0aW9ucyA8LSBjaG9vc2UobnVtX2RvY3VtZW50YXJpZXMsIG1vdmllc190b19zZWxlY3QgLSAxKSAqIGNob29zZShudW1fbXlzdGVyaWVzLCAxKQ0KDQojIFRvdGFsIGNvbWJpbmF0aW9ucw0KdG90YWxfY29tYmluYXRpb25zIDwtIGNhc2UxX2NvbWJpbmF0aW9ucyArIGNhc2UyX2NvbWJpbmF0aW9ucw0KdG90YWxfY29tYmluYXRpb25zDQoNCmBgYA0KDQojIyMgRXhlcmNpc2UgNg0KDQpJbiBjaG9vc2luZyB3aGF0IG11c2ljIHRvIHBsYXkgYXQgYSBjaGFyaXR5IGZ1bmQgcmFpc2luZyBldmVudCwgQ29yeSBuZWVkcyB0byBoYXZlIGFuIGVxdWFsIG51bWJlciBvZiBzeW1waG9uaWVzIGZyb20gQnJhaG1zLCBIYXlkbiwgYW5kIE1lbmRlbHNzb2huLiBJZiBoZSBpcyBzZXR0aW5nIHVwIGEgc2NoZWR1bGUgb2YgdGhlIDkgc3ltcGhvbmllcyB0byBiZSBwbGF5ZWQsIGFuZCBoZSBoYXMgNCBCcmFobXMsIDEwNCBIYXlkbiwgYW5kIDE3IE1lbmRlbHNzb2huIHN5bXBob25pZXMgZnJvbSB3aGljaCB0byBjaG9vc2UsIGhvdyBtYW55IGRpZmZlcmVudCBzY2hlZHVsZXMgYXJlIHBvc3NpYmxlPyBFeHByZXNzIHlvdXIgYW5zd2VyIGluIHNjaWVudGlmaWMgbm90YXRpb24gcm91bmRpbmcgdG8gdGhlIGh1bmRyZWR0aHMgcGxhY2UuDQoNCmBgYHtyfQ0KU2NoZWR1bGUgPC0gY2hvb3NlKDQsMykgKiBjaG9vc2UoMTA0LDMpICogY2hvb3NlKDE3LDMpICogZmFjdG9yaWFsKDkpDQpzaWduaWYoU2NoZWR1bGUsIGRpZ2l0cyA9IDQpDQpgYGANCg0KDQojIyMgRXhlcmNpc2UgNw0KDQpBbiBFbmdsaXNoIHRlYWNoZXIgbmVlZHMgdG8gcGljayAxMyBib29rcyB0byBwdXQgb24gaGlzIHJlYWRpbmcgbGlzdCBmb3IgdGhlIG5leHQgc2Nob29sIHllYXIsIGFuZCBoZSBuZWVkcyB0byBwbGFuIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IHNob3VsZCBiZSByZWFkLiBIZSBoYXMgbmFycm93ZWQgZG93biBoaXMgY2hvaWNlcyB0byA2IG5vdmVscywgNiBwbGF5cywgNyBwb2V0cnkgYm9va3MsIGFuZCA1IG5vbmZpY3Rpb24gYm9va3MuDQoNClN0ZXAgMS4gSWYgaGUgd2FudHMgdG8gaW5jbHVkZSBubyBtb3JlIHRoYW4gNCBub25maWN0aW9uIGJvb2tzLCBob3cgbWFueSBkaWZmZXJlbnQgcmVhZGluZyBzY2hlZHVsZXMgYXJlIHBvc3NpYmxlPyBFeHByZXNzIHlvdXIgYW5zd2VyIGluIHNjaWVudGlmaWMgbm90YXRpb24gcm91bmRpbmcgdG8gdGhlIGh1bmRyZWR0aHMgcGxhY2UuDQoNCg0KYGBge3J9DQojIEZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSBjb21iaW5hdGlvbnMNCm5DayA8LSBmdW5jdGlvbihuLCBrKSB7DQogIGZhY3RvcmlhbChuKSAvIChmYWN0b3JpYWwoaykgKiBmYWN0b3JpYWwobiAtIGspKQ0KfQ0KDQojIFRvdGFsIHdheXMgdG8gcGljayAxMyBib29rcw0KdG90YWxfd2F5cyA8LSBuQ2soNiwgMCkgKiBuQ2soNiwgMCkgKiBuQ2soNywgMCkgKiAobkNrKDUsIDApICsgbkNrKDUsIDEpICsgbkNrKDUsIDIpICsgbkNrKDUsIDMpICsgbkNrKDUsIDQpKQ0KDQojIENvbnZlcnQgdG8gc2NpZW50aWZpYyBub3RhdGlvbg0KdG90YWxfd2F5c19zY2kgPC0gZm9ybWF0KHRvdGFsX3dheXMsIHNjaWVudGlmaWMgPSBUUlVFLCBkaWdpdHMgPSAyKQ0KdG90YWxfd2F5c19zY2kNCg0KYGBgDQoNCg0KU3RlcCAyLiBJZiBoZSB3YW50cyB0byBpbmNsdWRlIGFsbCA2IHBsYXlzLCBob3cgbWFueSBkaWZmZXJlbnQgcmVhZGluZyBzY2hlZHVsZXMgYXJlIHBvc3NpYmxlPyBFeHByZXNzIHlvdXIgYW5zd2VyIGluIHNjaWVudGlmaWMgbm90YXRpb24gcm91bmRpbmcgdG8gdGhlIGh1bmRyZWR0aHMgcGxhY2UuDQoNCg0KYGBge3J9DQojIFRvdGFsIHdheXMgdG8gcGljayB0aGUgcmVtYWluaW5nIDcgYm9va3MNCnJlbWFpbmluZ193YXlzIDwtIG5Dayg2LCAwKSAqIG5Dayg2LCA2KSAqIG5Dayg3LCAwKSAqIChuQ2soNSwgMCkgKyBuQ2soNSwgMSkgKyBuQ2soNSwgMikgKyBuQ2soNSwgMykgKyBuQ2soNSwgNCkgKyBuQ2soNSwgNSkpDQoNCiMgQ29udmVydCB0byBzY2llbnRpZmljIG5vdGF0aW9uDQpyZW1haW5pbmdfd2F5c19zY2kgPC0gZm9ybWF0KHJlbWFpbmluZ193YXlzLCBzY2llbnRpZmljID0gVFJVRSwgZGlnaXRzID0gMikNCnJlbWFpbmluZ193YXlzX3NjaQ0KDQpgYGANCg0KDQojIyMgRXhlcmNpc2UgOA0KDQpaYW5lIGlzIHBsYW50aW5nIHRyZWVzIGFsb25nIGhpcyBkcml2ZXdheSwgYW5kIGhlIGhhcyA1IHN5Y2Ftb3JlcyBhbmQgNSBjeXByZXNzIHRyZWVzIHRvIHBsYW50IGluIG9uZSByb3cuIFdoYXQgaXMgdGhlIHByb2JhYmlsaXR5IHRoYXQgaGUgcmFuZG9tbHkgcGxhbnRzIHRoZSB0cmVlcyBzbyB0aGF0IGFsbCA1IHN5Y2Ftb3JlcyBhcmUgbmV4dCB0byBlYWNoIG90aGVyIGFuZCBhbGwgNSBjeXByZXNzIHRyZWVzIGFyZSBuZXh0IHRvIGVhY2ggb3RoZXI/IEV4cHJlc3MgeW91ciBhbnN3ZXIgYXMgYSBmcmFjdGlvbiBvciBhIGRlY2ltYWwgbnVtYmVyIHJvdW5kZWQgdG8gZm91ciBkZWNpbWFsIHBsYWNlcy4NCg0KYGBge3J9DQphIDwtIDIvKGZhY3RvcmlhbCgxMCkvKGZhY3RvcmlhbCg1KSpmYWN0b3JpYWwoNSkpKQ0Kcm91bmQoYSwgZGlnaXRzID0gNCkNCmBgYA0KDQoNCiMjIyBFeGVyY2lzZSA5DQoNCklmIHlvdSBkcmF3IGEgcXVlZW4gb3IgbG93ZXIgZnJvbSBhIHN0YW5kYXJkIGRlY2sgb2YgY2FyZHMsIEkgd2lsbCBwYXkgeW91ICQ0LiBJZiBub3QsIHlvdSBwYXkgbWUgJDE2LiAoQWNlcyBhcmUgY29uc2lkZXJlZCB0aGUgaGlnaGVzdCBjYXJkIGluIHRoZSBkZWNrLikNCg0KU3RlcCAxLiBGaW5kIHRoZSBleHBlY3RlZCB2YWx1ZSBvZiB0aGUgcHJvcG9zaXRpb24uIFJvdW5kIHlvdXIgYW5zd2VyIHRvIHR3byBkZWNpbWFsIHBsYWNlcy4gTG9zc2VzIG11c3QgYmUgZXhwcmVzc2VkIGFzIG5lZ2F0aXZlIHZhbHVlcy4NCg0KYGBge3J9DQpFeHBfdmFsdWUgPC0gKCgyMC81MikgKiA0KSArICgoMzIvNTIpICogLTE2KQ0Kcm91bmQoRXhwX3ZhbHVlLCBkaWdpdHMgPSAyKQ0KDQpgYGANCg0KU3RlcCAyLiBJZiB5b3UgcGxheWVkIHRoaXMgZ2FtZSA4MzMgdGltZXMgaG93IG11Y2ggd291bGQgeW91IGV4cGVjdCB0byB3aW4gb3IgbG9zZT8gUm91bmQgeW91ciBhbnN3ZXIgdG8gdHdvIGRlY2ltYWwgcGxhY2VzLiBMb3NzZXMgbXVzdCBiZSBleHByZXNzZWQgYXMgbmVnYXRpdmUgdmFsdWVzLg0KDQpgYGB7cn0NCnRvdGFsX2V4cGVjdGVkX3ZhbHVlIDwtIEV4cF92YWx1ZSAqIDgzMw0Kcm91bmQodG90YWxfZXhwZWN0ZWRfdmFsdWUsIGRpZ2l0cyA9IDIpDQoNCmBgYA0KDQoNCg0KLi4uDQoNCg==