Question 1

The American Community Survey distributes downloadable data about United States communities. Download the 2006 microdata survey about housing for the state of Idaho using download.file() from here:

https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06hid.csv

and load the data into R. The code book, describing the variable names is here:

https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2FPUMSDataDict06.pdf

Create a logical vector that identifies the households on greater than 10 acres who sold more than $10,000 worth of agriculture products. Assign that logical vector to the variable agricultureLogical. Apply the which() function like this to identify the rows of the data frame where the logical vector is TRUE.

which(agricultureLogical)

What are the first 3 values that result?


Answer


Download file…

Q1Url <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06hid.csv"
Q1 <- read.csv(Q1Url)
Q1


Computing solution…

agricultureLogical <- Q1$ACR == 3 & Q1$AGS == 6
which(agricultureLogical)
 [1]  125  238  262  470  555  568  608  643  787  808  824  849  952  955 1033 1265 1275 1315 1388 1607
[21] 1629 1651 1856 1919 2101 2194 2403 2443 2539 2580 2655 2680 2740 2838 2965 3131 3133 3163 3291 3370
[41] 3402 3585 3652 3852 3862 3912 4023 4045 4107 4113 4117 4185 4198 4310 4343 4354 4448 4453 4461 4718
[61] 4817 4835 4910 5140 5199 5236 5326 5417 5531 5574 5894 6033 6044 6089 6275 6376 6420


Options:

  1. 125, 238,262

  2. 403, 756, 798

  3. 236, 238, 262

  4. 59, 460, 474



Question 2

Using the jpeg package read in the following picture of your instructor into R

https://d396qusza40orc.cloudfront.net/getdata%2Fjeff.jpg

Use the parameter native=TRUE. What are the 30th and 80th quantiles of the resulting data? (some Linux systems may produce an answer 638 different for the 30th quantile)


Answer


Loading package…

library(jpeg)


Downloading file…

Q2Url <- "https://d396qusza40orc.cloudfront.net/getdata%2Fjeff.jpg"
Q2Path = '/home/cabunic/Data Science/Coursera/3 - Getting and Cleaning Data/Week 3/Q2.jpg'
download.file(Q2Url, Q2Path, mode = 'wb')
Q2 <- readJPEG(Q2Path, native = TRUE)


Computing solution…

quantile(Q2, probs = c(0.3, 0.8))
      30%       80% 
-15258512 -10575416 


‘some Linux systems may produce an answer 638 different for the 30th quantile.’

Mine is Linux, so…

paste(quantile(Q2, probs = 0.3) - 638, quantile(Q2, probs = 0.8))
[1] "-15259150 -10575416"

Options:

  1. -15259150 -10575416

  2. -10904118 -10575416

  3. 10904118 -594524

  4. -16776430 -15390165




Question 3

Load the Gross Domestic Product data for the 190 ranked countries in this data set:

https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2FGDP.csv

Load the educational data from this data set:

https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2FEDSTATS_Country.csv

Match the data based on the country shortcode. How many of the IDs match?

Sort the data frame in descending order by GDP rank (so United States is last). What is the 13th country in the resulting data frame?

Original data sources:

http://data.worldbank.org/data-catalog/GDP-ranking-table

http://data.worldbank.org/data-catalog/ed-stats


Answer


Loading packages…

library(dplyr)
library(data.table)


Download file…

Q3GDP_Url <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2FGDP.csv"
Q3GDP_Path <- "/home/cabunic/Data Science/Coursera/3 - Getting and Cleaning Data/Week 3/Q3GDP.csv"
Q3Edu_Url <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2FEDSTATS_Country.csv"
Q3Edu_Path <- "/home/cabunic/Data Science/Coursera/3 - Getting and Cleaning Data/Week 3/Q3Edu.csv"

download.file(Q3GDP_Url, Q3GDP_Path, method = "curl")
download.file(Q3Edu_Url, Q3Edu_Path, method = "curl")


Analyze the data…

Q3GDP <- fread(Q3GDP_Path, skip = 5, nrows = 190, select = c(1, 2, 4, 5), col.names = c("CountryCode", "Rank", "Economy", "Total"))
Q3Edu <- fread(Q3Edu_Path)
Q3GDP
Q3Edu


Merging and sorting data…

Q3_Merge <- merge(Q3GDP, Q3Edu, by = 'CountryCode')
Q3_Merge <- Q3_Merge %>% arrange(desc(Rank))
Q3_Merge


Generating solution…

paste(nrow(Q3_Merge), " matches, 13th country is ", Q3_Merge$Economy[13])
[1] "189  matches, 13th country is  St. Kitts and Nevis"


Options:

  1. 189 matches, 13th country is Spain

  2. 234 matches, 13th country is St. Kitts and Nevis

  3. 190 matches, 13th country is St. Kitts and Nevis

  4. 190 matches, 13th country is Spain

  5. 189 matches, 13th country is St. Kitts and Nevis

  6. 234 matches, 13th country is Spain




Question 4

What is the average GDP ranking for the “High income: OECD” and “High income: nonOECD” group?


Answer


Computing solution…

Q3_Merge %>% group_by(`Income Group`) %>%
    filter("High income: OECD" %in% `Income Group` | "High income: nonOECD" %in% `Income Group`) %>%
    summarize(Average = mean(Rank, na.rm = T)) %>%
    arrange(desc(`Income Group`))


Options:

  1. 32.96667, 91.91304

  2. 133.72973, 32.96667

  3. 23, 45

  4. 30, 37

  5. 23.966667, 30.91304

  6. 23, 30




Question 5

Cut the GDP ranking into 5 separate quantile groups. Make a table versus Income.Group. How many countries are Lower middle income but among the 38 nations with highest GDP?


Answer


Computing solution…

Q3_Merge$RankGroups <- cut(Q3_Merge$Rank, breaks = 5)
vs <- table(Q3_Merge$RankGroups, Q3_Merge$`Income Group`)
vs
              
               High income: nonOECD High income: OECD Lower middle income Low income Upper middle income
  (0.811,38.8]                    4                18                   5          0                  11
  (38.8,76.6]                     5                10                  13          1                   9
  (76.6,114]                      8                 1                  12          9                   8
  (114,152]                       4                 1                   8         16                   8
  (152,190]                       2                 0                  16         11                   9
vs[1, "Lower middle income"]
[1] 5


Options:

  1. 0

  2. 18

  3. 3

  4. 5



END

LS0tCnRpdGxlOiAiUXVpeiAzIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgo8YnIgLz4KCi0tLQoKIyMgUXVlc3Rpb24gMQoKVGhlIEFtZXJpY2FuIENvbW11bml0eSBTdXJ2ZXkgZGlzdHJpYnV0ZXMgZG93bmxvYWRhYmxlIGRhdGEgYWJvdXQgVW5pdGVkIFN0YXRlcyBjb21tdW5pdGllcy4gRG93bmxvYWQgdGhlIDIwMDYgbWljcm9kYXRhIHN1cnZleSBhYm91dCBob3VzaW5nIGZvciB0aGUgc3RhdGUgb2YgSWRhaG8gdXNpbmcgKipkb3dubG9hZC5maWxlKCkqKiBmcm9tIGhlcmU6CgpodHRwczovL2QzOTZxdXN6YTQwb3JjLmNsb3VkZnJvbnQubmV0L2dldGRhdGElMkZkYXRhJTJGc3MwNmhpZC5jc3YKCmFuZCBsb2FkIHRoZSBkYXRhIGludG8gUi4gVGhlIGNvZGUgYm9vaywgZGVzY3JpYmluZyB0aGUgdmFyaWFibGUgbmFtZXMgaXMgaGVyZToKCmh0dHBzOi8vZDM5NnF1c3phNDBvcmMuY2xvdWRmcm9udC5uZXQvZ2V0ZGF0YSUyRmRhdGElMkZQVU1TRGF0YURpY3QwNi5wZGYKCkNyZWF0ZSBhIGxvZ2ljYWwgdmVjdG9yIHRoYXQgaWRlbnRpZmllcyB0aGUgaG91c2Vob2xkcyBvbiBncmVhdGVyIHRoYW4gMTAgYWNyZXMgd2hvIHNvbGQgbW9yZSB0aGFuICQxMCwwMDAgd29ydGggb2YgYWdyaWN1bHR1cmUgcHJvZHVjdHMuIEFzc2lnbiB0aGF0IGxvZ2ljYWwgdmVjdG9yIHRvIHRoZSB2YXJpYWJsZSAqYWdyaWN1bHR1cmVMb2dpY2FsLiogQXBwbHkgdGhlICoqd2hpY2goKSoqIGZ1bmN0aW9uIGxpa2UgdGhpcyB0byBpZGVudGlmeSB0aGUgcm93cyBvZiB0aGUgZGF0YSBmcmFtZSB3aGVyZSB0aGUgbG9naWNhbCB2ZWN0b3IgaXMgKlRSVUUqLgoKKndoaWNoKGFncmljdWx0dXJlTG9naWNhbCkqCgpXaGF0IGFyZSB0aGUgZmlyc3QgMyB2YWx1ZXMgdGhhdCByZXN1bHQ/Cgo8YnIgLz4KCiMjIyBBbnN3ZXIKCjxici8+CkRvd25sb2FkIGZpbGUuLi4KYGBge3J9ClExVXJsIDwtICJodHRwczovL2QzOTZxdXN6YTQwb3JjLmNsb3VkZnJvbnQubmV0L2dldGRhdGElMkZkYXRhJTJGc3MwNmhpZC5jc3YiClExIDwtIHJlYWQuY3N2KFExVXJsKQpRMQpgYGAKPGJyLz4KQ29tcHV0aW5nIHNvbHV0aW9uLi4uCmBgYHtyfQphZ3JpY3VsdHVyZUxvZ2ljYWwgPC0gUTEkQUNSID09IDMgJiBRMSRBR1MgPT0gNgp3aGljaChhZ3JpY3VsdHVyZUxvZ2ljYWwpCmBgYAo8YnIvPgoKPGRpdiBzdHlsZT0gImJvcmRlcjogNXB4IGRvdHRlZCBncmF5OyBwYWRkaW5nOiAxMHB4IDIwcHg7IGJhY2tncm91bmQtY29sb3I6I2U4ZThlODsgYm94LXNoYWRvdzogMCAxcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7Ij4KKipPcHRpb25zOioqCgphLiA8dT4qKjEyNSwgMjM4LDI2MioqPC91PgoKYi4gNDAzLCA3NTYsIDc5OAoKYy4gMjM2LCAyMzgsIDI2MgoKZC4gNTksIDQ2MCwgNDc0Cgo8L2Rpdj4KCgo8YnIvPgotLS0KCjxiciAvPgoKIyMgUXVlc3Rpb24gMgoKVXNpbmcgdGhlIGpwZWcgcGFja2FnZSByZWFkIGluIHRoZSBmb2xsb3dpbmcgcGljdHVyZSBvZiB5b3VyIGluc3RydWN0b3IgaW50byBSCgpodHRwczovL2QzOTZxdXN6YTQwb3JjLmNsb3VkZnJvbnQubmV0L2dldGRhdGElMkZqZWZmLmpwZwoKVXNlIHRoZSBwYXJhbWV0ZXIgKm5hdGl2ZT1UUlVFKi4gV2hhdCBhcmUgdGhlIDMwdGggYW5kIDgwdGggcXVhbnRpbGVzIG9mIHRoZSByZXN1bHRpbmcgZGF0YT8gKHNvbWUgTGludXggc3lzdGVtcyBtYXkgcHJvZHVjZSBhbiBhbnN3ZXIgNjM4IGRpZmZlcmVudCBmb3IgdGhlIDMwdGggcXVhbnRpbGUpCgo8YnIgLz4KCiMjIyBBbnN3ZXIKCjxici8+CkxvYWRpbmcgcGFja2FnZS4uLgpgYGB7cn0KbGlicmFyeShqcGVnKQpgYGAKPGJyLz4KRG93bmxvYWRpbmcgZmlsZS4uLgpgYGB7cn0KUTJVcmwgPC0gImh0dHBzOi8vZDM5NnF1c3phNDBvcmMuY2xvdWRmcm9udC5uZXQvZ2V0ZGF0YSUyRmplZmYuanBnIgpRMlBhdGggPSAnL2hvbWUvY2FidW5pYy9EYXRhIFNjaWVuY2UvQ291cnNlcmEvMyAtIEdldHRpbmcgYW5kIENsZWFuaW5nIERhdGEvV2VlayAzL1EyLmpwZycKZG93bmxvYWQuZmlsZShRMlVybCwgUTJQYXRoLCBtb2RlID0gJ3diJykKUTIgPC0gcmVhZEpQRUcoUTJQYXRoLCBuYXRpdmUgPSBUUlVFKQpgYGAKPGJyLz4KQ29tcHV0aW5nIHNvbHV0aW9uLi4uCmBgYHtyfQpxdWFudGlsZShRMiwgcHJvYnMgPSBjKDAuMywgMC44KSkKYGBgCjxici8+Cionc29tZSBMaW51eCBzeXN0ZW1zIG1heSBwcm9kdWNlIGFuIGFuc3dlciA2MzggZGlmZmVyZW50IGZvciB0aGUgMzB0aCBxdWFudGlsZS4nKgoKTWluZSBpcyBMaW51eCwgc28uLi4KYGBge3J9CnBhc3RlKHF1YW50aWxlKFEyLCBwcm9icyA9IDAuMykgLSA2MzgsIHF1YW50aWxlKFEyLCBwcm9icyA9IDAuOCkpCmBgYAo8YnIvPgo8ZGl2IHN0eWxlPSAiYm9yZGVyOiA1cHggZG90dGVkIGdyYXk7IHBhZGRpbmc6IDEwcHggMjBweDsgYmFja2dyb3VuZC1jb2xvcjojZThlOGU4OyBib3gtc2hhZG93OiAwIDFweCA1cHggcmdiYSgwLCAwLCAwLCAwLjI1KTsiPgoqKk9wdGlvbnM6KioKCmEuIDx1PioqLTE1MjU5MTUwIC0xMDU3NTQxNioqPC91PgoKYi4gLTEwOTA0MTE4IC0xMDU3NTQxNgoKYy4gMTA5MDQxMTggLTU5NDUyNAoKZC4gLTE2Nzc2NDMwIC0xNTM5MDE2NQoKPC9kaXY+Cgo8YnIvPgoKLS0tCgo8YnIgLz4KCiMjIFF1ZXN0aW9uIDMKCkxvYWQgdGhlIEdyb3NzIERvbWVzdGljIFByb2R1Y3QgZGF0YSBmb3IgdGhlIDE5MCByYW5rZWQgY291bnRyaWVzIGluIHRoaXMgZGF0YSBzZXQ6CgpodHRwczovL2QzOTZxdXN6YTQwb3JjLmNsb3VkZnJvbnQubmV0L2dldGRhdGElMkZkYXRhJTJGR0RQLmNzdgoKTG9hZCB0aGUgZWR1Y2F0aW9uYWwgZGF0YSBmcm9tIHRoaXMgZGF0YSBzZXQ6CgpodHRwczovL2QzOTZxdXN6YTQwb3JjLmNsb3VkZnJvbnQubmV0L2dldGRhdGElMkZkYXRhJTJGRURTVEFUU19Db3VudHJ5LmNzdgoKTWF0Y2ggdGhlIGRhdGEgYmFzZWQgb24gdGhlIGNvdW50cnkgc2hvcnRjb2RlLiBIb3cgbWFueSBvZiB0aGUgSURzIG1hdGNoPwoKU29ydCB0aGUgZGF0YSBmcmFtZSBpbiBkZXNjZW5kaW5nIG9yZGVyIGJ5IEdEUCByYW5rIChzbyBVbml0ZWQgU3RhdGVzIGlzIGxhc3QpLiBXaGF0IGlzIHRoZSAxM3RoIGNvdW50cnkgaW4gdGhlIHJlc3VsdGluZyBkYXRhIGZyYW1lPwoKT3JpZ2luYWwgZGF0YSBzb3VyY2VzOgoKaHR0cDovL2RhdGEud29ybGRiYW5rLm9yZy9kYXRhLWNhdGFsb2cvR0RQLXJhbmtpbmctdGFibGUKCmh0dHA6Ly9kYXRhLndvcmxkYmFuay5vcmcvZGF0YS1jYXRhbG9nL2VkLXN0YXRzCgo8YnIgLz4KCiMjIyBBbnN3ZXIKCjxici8+CkxvYWRpbmcgcGFja2FnZXMuLi4KYGBge3J9CmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoZGF0YS50YWJsZSkKYGBgCgo8YnIvPgpEb3dubG9hZCBmaWxlLi4uCmBgYHtyfQpRM0dEUF9VcmwgPC0gImh0dHBzOi8vZDM5NnF1c3phNDBvcmMuY2xvdWRmcm9udC5uZXQvZ2V0ZGF0YSUyRmRhdGElMkZHRFAuY3N2IgpRM0dEUF9QYXRoIDwtICIvaG9tZS9jYWJ1bmljL0RhdGEgU2NpZW5jZS9Db3Vyc2VyYS8zIC0gR2V0dGluZyBhbmQgQ2xlYW5pbmcgRGF0YS9XZWVrIDMvUTNHRFAuY3N2IgpRM0VkdV9VcmwgPC0gImh0dHBzOi8vZDM5NnF1c3phNDBvcmMuY2xvdWRmcm9udC5uZXQvZ2V0ZGF0YSUyRmRhdGElMkZFRFNUQVRTX0NvdW50cnkuY3N2IgpRM0VkdV9QYXRoIDwtICIvaG9tZS9jYWJ1bmljL0RhdGEgU2NpZW5jZS9Db3Vyc2VyYS8zIC0gR2V0dGluZyBhbmQgQ2xlYW5pbmcgRGF0YS9XZWVrIDMvUTNFZHUuY3N2IgoKZG93bmxvYWQuZmlsZShRM0dEUF9VcmwsIFEzR0RQX1BhdGgsIG1ldGhvZCA9ICJjdXJsIikKZG93bmxvYWQuZmlsZShRM0VkdV9VcmwsIFEzRWR1X1BhdGgsIG1ldGhvZCA9ICJjdXJsIikKYGBgCjxici8+CkFuYWx5emUgdGhlIGRhdGEuLi4KYGBge3J9ClEzR0RQIDwtIGZyZWFkKFEzR0RQX1BhdGgsIHNraXAgPSA1LCBucm93cyA9IDE5MCwgc2VsZWN0ID0gYygxLCAyLCA0LCA1KSwgY29sLm5hbWVzID0gYygiQ291bnRyeUNvZGUiLCAiUmFuayIsICJFY29ub215IiwgIlRvdGFsIikpClEzRWR1IDwtIGZyZWFkKFEzRWR1X1BhdGgpCgpRM0dEUApRM0VkdQpgYGAKPGJyLz4KTWVyZ2luZyBhbmQgc29ydGluZyBkYXRhLi4uCmBgYHtyfQpRM19NZXJnZSA8LSBtZXJnZShRM0dEUCwgUTNFZHUsIGJ5ID0gJ0NvdW50cnlDb2RlJykKUTNfTWVyZ2UgPC0gUTNfTWVyZ2UgJT4lIGFycmFuZ2UoZGVzYyhSYW5rKSkKUTNfTWVyZ2UKYGBgCjxici8+CkdlbmVyYXRpbmcgc29sdXRpb24uLi4KYGBge3J9CnBhc3RlKG5yb3coUTNfTWVyZ2UpLCAiIG1hdGNoZXMsIDEzdGggY291bnRyeSBpcyAiLCBRM19NZXJnZSRFY29ub215WzEzXSkKYGBgCgo8YnIvPgoKPGRpdiBzdHlsZT0gImJvcmRlcjogNXB4IGRvdHRlZCBncmF5OyBwYWRkaW5nOiAxMHB4IDIwcHg7IGJhY2tncm91bmQtY29sb3I6I2U4ZThlODsgYm94LXNoYWRvdzogMCAxcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7Ij4KKipPcHRpb25zOioqCgphLiAxODkgbWF0Y2hlcywgMTN0aCBjb3VudHJ5IGlzIFNwYWluCgpiLiAyMzQgbWF0Y2hlcywgMTN0aCBjb3VudHJ5IGlzIFN0LiBLaXR0cyBhbmQgTmV2aXMKCmMuIDE5MCBtYXRjaGVzLCAxM3RoIGNvdW50cnkgaXMgU3QuIEtpdHRzIGFuZCBOZXZpcwoKZC4gMTkwIG1hdGNoZXMsIDEzdGggY291bnRyeSBpcyBTcGFpbgoKZS4gPHU+KioxODkgbWF0Y2hlcywgMTN0aCBjb3VudHJ5IGlzIFN0LiBLaXR0cyBhbmQgTmV2aXMqKjwvdT4KCmYuIDIzNCBtYXRjaGVzLCAxM3RoIGNvdW50cnkgaXMgU3BhaW4KCjwvZGl2PgoKPGJyLz4KCi0tLQoKPGJyIC8+CgojIyBRdWVzdGlvbiA0CgpXaGF0IGlzIHRoZSBhdmVyYWdlIEdEUCByYW5raW5nIGZvciB0aGUgIkhpZ2ggaW5jb21lOiBPRUNEIiBhbmQgIkhpZ2ggaW5jb21lOiBub25PRUNEIiBncm91cD8gCgo8YnIgLz4KCiMjIyBBbnN3ZXIKCjxici8+CkNvbXB1dGluZyBzb2x1dGlvbi4uLgpgYGB7cn0KUTNfTWVyZ2UgJT4lIGdyb3VwX2J5KGBJbmNvbWUgR3JvdXBgKSAlPiUKICAgIGZpbHRlcigiSGlnaCBpbmNvbWU6IE9FQ0QiICVpbiUgYEluY29tZSBHcm91cGAgfCAiSGlnaCBpbmNvbWU6IG5vbk9FQ0QiICVpbiUgYEluY29tZSBHcm91cGApICU+JQogICAgc3VtbWFyaXplKEF2ZXJhZ2UgPSBtZWFuKFJhbmssIG5hLnJtID0gVCkpICU+JQogICAgYXJyYW5nZShkZXNjKGBJbmNvbWUgR3JvdXBgKSkKYGBgCgoKPGJyLz4KCjxkaXYgc3R5bGU9ICJib3JkZXI6IDVweCBkb3R0ZWQgZ3JheTsgcGFkZGluZzogMTBweCAyMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7IGJveC1zaGFkb3c6IDAgMXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMjUpOyI+CioqT3B0aW9uczoqKgoKYS4gPHU+KiozMi45NjY2NywgOTEuOTEzMDQqKjwvdT4KCmIuIDEzMy43Mjk3MywgMzIuOTY2NjcKCmMuIDIzLCA0NQoKZC4gMzAsIDM3CgpmLiAyMy45NjY2NjcsIDMwLjkxMzA0CgpnLiAyMywgMzAKCjwvZGl2PgoKPGJyLz4KCi0tLQoKPGJyIC8+CgojIyBRdWVzdGlvbiA1CgpDdXQgdGhlIEdEUCByYW5raW5nIGludG8gNSBzZXBhcmF0ZSBxdWFudGlsZSBncm91cHMuIE1ha2UgYSB0YWJsZSB2ZXJzdXMgSW5jb21lLkdyb3VwLiBIb3cgbWFueSBjb3VudHJpZXMgYXJlIExvd2VyIG1pZGRsZSBpbmNvbWUgYnV0IGFtb25nIHRoZSAzOCBuYXRpb25zIHdpdGggaGlnaGVzdCBHRFA/Cgo8YnIgLz4KCiMjIyBBbnN3ZXIKCjxici8+CkNvbXB1dGluZyBzb2x1dGlvbi4uLgpgYGB7cn0KUTNfTWVyZ2UkUmFua0dyb3VwcyA8LSBjdXQoUTNfTWVyZ2UkUmFuaywgYnJlYWtzID0gNSkKdnMgPC0gdGFibGUoUTNfTWVyZ2UkUmFua0dyb3VwcywgUTNfTWVyZ2UkYEluY29tZSBHcm91cGApCnZzCmBgYApgYGB7cn0KdnNbMSwgIkxvd2VyIG1pZGRsZSBpbmNvbWUiXQpgYGAKPGJyLz4KCjxkaXYgc3R5bGU9ICJib3JkZXI6IDVweCBkb3R0ZWQgZ3JheTsgcGFkZGluZzogMTBweCAyMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7IGJveC1zaGFkb3c6IDAgMXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMjUpOyI+CioqT3B0aW9uczoqKgoKYS4gMAoKYi4gMTgKCmMuIDMKCmQuIDx1PioqNSoqPC91PgoKPC9kaXY+Cgo8YnIvPgoKLS0tCgo8Y2VudGVyPioqRU5EKio8L2NlbnRlcj4KCi0tLQ==