1 PEMPROSESAN DATA PEMBUNUHAN DAN GANGGUAN MENTAL DI USA PERIODE 1990 - 2009

#Packages

## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
## Warning: package 'Hmisc' was built under R version 3.6.3
## Loading required package: lattice
## Loading required package: survival
## Warning: package 'survival' was built under R version 3.6.3
## Loading required package: Formula
## Loading required package: ggplot2
## 
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:dplyr':
## 
##     src, summarize
## The following objects are masked from 'package:base':
## 
##     format.pval, units
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
## Warning: package 'forecast' was built under R version 3.6.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
## 
## Attaching package: 'lubridate'
## The following object is masked from 'package:base':
## 
##     date
## Warning: package 'psychometric' was built under R version 3.6.3
## Loading required package: multilevel
## Warning: package 'multilevel' was built under R version 3.6.3
## Loading required package: nlme
## 
## Attaching package: 'nlme'
## The following object is masked from 'package:forecast':
## 
##     getResponse
## The following object is masked from 'package:dplyr':
## 
##     collapse
## Loading required package: MASS
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
## 
## Attaching package: 'psychometric'
## The following object is masked from 'package:ggplot2':
## 
##     alpha

2 Data

Pembunuhan : https://ourworldindata.org/grapher/homicides-per-100000-people-per-year Gangguan Mental : https://ourworldindata.org/grapher/people-with-mental-health-disorders Popukasi : https://ourworldindata.org/grapher/population

#Import Data

## 'data.frame':    20 obs. of  4 variables:
##  $ Negara          : chr  "United States" "United States" "United States" "United States" ...
##  $ Kode            : chr  "USA" "USA" "USA" "USA" ...
##  $ Tahun           : int  1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 ...
##  $ Angka_Pembunuhan: num  24959880 26472057 25442110 25953200 24650653 ...
##          Negara Kode Tahun Angka_Pembunuhan
## 1 United States  USA  1990         24959880
## 2 United States  USA  1991         26472057
## 3 United States  USA  1992         25442110
## 4 United States  USA  1993         25953200
## 5 United States  USA  1994         24650653
## 6 United States  USA  1995         22804104
## 'data.frame':    20 obs. of  4 variables:
##  $ Negara         : chr  "United States" "United States" "United States" "United States" ...
##  $ Kode           : chr  "USA" "USA" "USA" "USA" ...
##  $ Tahun          : int  1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 ...
##  $ Gangguan_Mental: num  36714377 37177571 37697832 38202852 38705887 ...
## 'data.frame':    20 obs. of  4 variables:
##  $ Negara        : chr  "United States" "United States" "United States" "United States" ...
##  $ Kode          : chr  "USA" "USA" "USA" "USA" ...
##  $ Tahun         : int  1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 ...
##  $ Total_Populasi: int  252120000 254539008 256991008 259532000 262240992 265164000 268335008 271713984 275175008 278548000 ...

#Combine Data

##          Negara Kode Tahun Angka_Pembunuhan Gangguan_Mental Total_Populasi
## 1 United States  USA  1990         24959880        36714377      252120000
## 2 United States  USA  1991         26472057        37177571      254539008
## 3 United States  USA  1992         25442110        37697832      256991008
## 4 United States  USA  1993         25953200        38202852      259532000
## 5 United States  USA  1994         24650653        38705887      262240992
## 6 United States  USA  1995         22804104        39220805      265164000

#Struktur

## 'data.frame':    20 obs. of  6 variables:
##  $ Negara          : chr  "United States" "United States" "United States" "United States" ...
##  $ Kode            : chr  "USA" "USA" "USA" "USA" ...
##  $ Tahun           : int  1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 ...
##  $ Angka_Pembunuhan: num  24959880 26472057 25442110 25953200 24650653 ...
##  $ Gangguan_Mental : num  36714377 37177571 37697832 38202852 38705887 ...
##  $ Total_Populasi  : int  252120000 254539008 256991008 259532000 262240992 265164000 268335008 271713984 275175008 278548000 ...
## [1] "factor"
## [1] "factor"
## [1] "integer"
## [1] "integer"

#Merapikan Data

## # A tibble: 1 x 3
##   Negara        avg_Angka_Pembunuhan avg_person_mental_disorder
##   <fct>                        <dbl>                      <dbl>
## 1 United States            20206733.                  41972066.
##          Negara Tahun Angka_Pembunuhan Gangguan_Mental Total_Populasi
## 1 United States  1990         24959880        36714376      252120000
## 2 United States  1991         26472057        37177570      254539008
## 3 United States  1992         25442110        37697832      256991008
## 4 United States  1993         25953200        38202852      259532000
## 5 United States  1994         24650653        38705887      262240992
## 6 United States  1995         22804104        39220805      265164000

#Memanipulasi Data

##          Negara Tahun Angka_Pembunuhan Gangguan_Mental Total_Populasi
## 1 United States  1990         24959880        36714376      252120000
## 2 United States  1991         26472057        37177570      254539008
## 3 United States  1992         25442110        37697832      256991008
## 4 United States  1993         25953200        38202852      259532000
## 5 United States  1994         24650653        38705887      262240992
## 6 United States  1995         22804104        39220805      265164000
##   Gangguan_Mental_rate
## 1             14562.26
## 2             14605.84
## 3             14668.93
## 4             14719.90
## 5             14759.66
## 6             14791.15
##          Negara Tahun Angka_Pembunuhan Gangguan_Mental Total_Populasi
## 1 United States  1990         24959880        36714376      252120000
## 2 United States  1991         26472057        37177570      254539008
## 3 United States  1992         25442110        37697832      256991008
## 4 United States  1993         25953200        38202852      259532000
## 5 United States  1994         24650653        38705887      262240992
## 6 United States  1995         22804104        39220805      265164000
##   Gangguan_Mental_rate percentage
## 1             14562.26   171401.1
## 2             14605.84   181242.9
## 3             14668.93   173442.2
## 4             14719.90   176313.7
## 5             14759.66   167013.7
## 6             14791.15   154174.0

4 Pemindaian II

##  Angka_Pembunuhan   Gangguan_Mental    Total_Populasi     
##  Min.   :16540632   Min.   :36714376   Min.   :252120000  
##  1st Qu.:17504745   1st Qu.:39092076   1st Qu.:264433248  
##  Median :18399073   Median :42595030   Median :280129504  
##  Mean   :20206733   Mean   :41972066   Mean   :279164152  
##  3rd Qu.:23265741   3rd Qu.:44782734   3rd Qu.:293014752  
##  Max.   :26472057   Max.   :46131343   Max.   :306308000  
##  Gangguan_Mental_rate   percentage    
##  Min.   :14562        Min.   :108944  
##  1st Qu.:14783        1st Qu.:114614  
##  Median :15095        Median :120949  
##  Mean   :15022        Mean   :134896  
##  3rd Qu.:15259        3rd Qu.:157384  
##  Max.   :15289        Max.   :181243
## [1] 0
##  Angka_Pembunuhan   Gangguan_Mental    Total_Populasi     
##  Min.   :16540632   Min.   :36714376   Min.   :252120000  
##  1st Qu.:17504745   1st Qu.:39092076   1st Qu.:264433248  
##  Median :18399073   Median :42595030   Median :280129504  
##  Mean   :20206733   Mean   :41972066   Mean   :279164152  
##  3rd Qu.:23265741   3rd Qu.:44782734   3rd Qu.:293014752  
##  Max.   :26472057   Max.   :46131343   Max.   :306308000  
##  Gangguan_Mental_rate   percentage    
##  Min.   :14562        Min.   :108944  
##  1st Qu.:14783        1st Qu.:114614  
##  Median :15095        Median :120949  
##  Mean   :15022        Mean   :134896  
##  3rd Qu.:15259        3rd Qu.:157384  
##  Max.   :15289        Max.   :181243

6 Analisis

Untuk mengetahui hubungan antara Angka Pembunuhan dengan angka gangguan kesehatan jiwa, dilakukan uji paired t-test dengan asumsi bahwa data berdistribusi normal.

## 
##  Paired t-test
## 
## data:  joined_data_capped$Angka_Pembunuhan and joined_data_capped$Gangguan_Mental_rate
## t = 25.818, df = 19, p-value = 2.937e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  18554824 21828597
## sample estimates:
## mean of the differences 
##                20191710

6.1 Tafsiran

Hipotesis nol: Tidak ada hubungan antara tingkat Pembunuhan dan tingkat gangguan kesehatan mental. Hipotesis alternatif: Ada hubungan antara Angka Pembunuhan dengan angka gangguan kesehatan jiwa. Temuan dari hasil uji hipotesis dengan memperoleh nilai p dan interval kepercayaan.

Uji-t sampel berpasangan dilakukan untuk analisis. Uji-t menghasilkan nilai p dengan nilai p <2.937e-16 lebih kecil dari nilai alpha 0.05. Perbedaan rata-rata tidak termasuk dalam 95% CI. Hasilnya signifikan secara statistik. Jadi, hasil kami mendukung Hipotesis alternatif Oleh karena itu kami sampai pada kesimpulan bahwa:

Uji-t sampel berpasangan menemukan hubungan yang signifikan secara statistik antara tingkat Pembunuhan dan tingkat gangguan kesehatan mental

6.2 Opini:

Analisisnya akan lebih baik jika dilakukan lagi penelitian kepada orang yang berbeda usia dan keadaan yang berbeda seperti masalah ekonomi, tingkat kriminalitas, tingkat konsumsi alkohol, gender, aturan yang berlaku di tiap negara bagian.

LS0tDQp0aXRsZTogIlVBUyBNRVRPRE9MT0dJIFJJU0VUIg0KYXV0aG9yOiAiWWVoZXpraWVsIExhemFydXMiDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgaGlnaGxpZ2h0OiBweWdtZW50cw0KICAgIHRoZW1lOiBzcGFjZWxhYg0KICAgIG51bWJlcl9zZWN0aW9uczogeWVzDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZmxvYXQ6IHllcw0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCiMgUEVNUFJPU0VTQU4gREFUQSBQRU1CVU5VSEFOIERBTiBHQU5HR1VBTiBNRU5UQUwgREkgVVNBIFBFUklPREUgMTk5MCAtIDIwMDkNCg0KI1BhY2thZ2VzDQoNCmBgYHtyfQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoSG1pc2MpDQpsaWJyYXJ5KGtuaXRyKQ0KbGlicmFyeShrYWJsZUV4dHJhKSANCmxpYnJhcnkocm1hcmtkb3duKQ0KbGlicmFyeSh0aWR5cikgDQpsaWJyYXJ5KGZvcmVjYXN0KSANCmxpYnJhcnkobHVicmlkYXRlKQ0KbGlicmFyeShwc3ljaG9tZXRyaWMpDQpsaWJyYXJ5KG91dGxpZXJzKQ0KYGBgDQoNCiMgRGF0YQ0KDQpQZW1idW51aGFuICAgICAgOiBodHRwczovL291cndvcmxkaW5kYXRhLm9yZy9ncmFwaGVyL2hvbWljaWRlcy1wZXItMTAwMDAwLXBlb3BsZS1wZXIteWVhcg0KR2FuZ2d1YW4gTWVudGFsIDogaHR0cHM6Ly9vdXJ3b3JsZGluZGF0YS5vcmcvZ3JhcGhlci9wZW9wbGUtd2l0aC1tZW50YWwtaGVhbHRoLWRpc29yZGVycw0KUG9wdWthc2kgICAgICAgIDogaHR0cHM6Ly9vdXJ3b3JsZGluZGF0YS5vcmcvZ3JhcGhlci9wb3B1bGF0aW9uDQoNCiNJbXBvcnQgRGF0YQ0KDQpgYGB7cn0NCkFuZ2thX1BlbWJ1bnVoYW4gPC1yZWFkLmNzdigiS2FzdXMgUGVtYnVudWhhbi5jc3YiLGhlYWRlciA9IFRSVUUsIA0KICAgICAgICAgICAgICAgICAgICBzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICAgIGNvbC5uYW1lcyA9IGMoIk5lZ2FyYSIsIktvZGUiLCJUYWh1biIsIkFuZ2thX1BlbWJ1bnVoYW4iKSkNCnN0cihBbmdrYV9QZW1idW51aGFuKQ0KYGBgDQoNCmBgYHtyfQ0KaGVhZChBbmdrYV9QZW1idW51aGFuKQ0KYGBgDQoNCmBgYHtyfQ0KIEdhbmdndWFuX01lbnRhbCA8LXJlYWQuY3N2KCJHYW5nZ3VhbiBNZW50YWwuY3N2IiwgaGVhZGVyID0gVFJVRSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFLA0KICAgICAgICAgICAgICAgICAgICBjb2wubmFtZXMgPSBjKCJOZWdhcmEiLCJLb2RlIiwiVGFodW4iLCJHYW5nZ3Vhbl9NZW50YWwiKSApDQpzdHIoIEdhbmdndWFuX01lbnRhbCkNCmBgYA0KDQpgYGB7cn0NClBvcHVsYXNpIDwtcmVhZC5jc3YoIlBvcHVsYXNpLmNzdiIsICBoZWFkZXIgPSBUUlVFLA0KICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSwNCiAgICAgICAgICAgICAgICAgICBjb2wubmFtZXMgPSBjKCJOZWdhcmEiLCJLb2RlIiwiVGFodW4iLCJUb3RhbF9Qb3B1bGFzaSIpICkNCnN0cihQb3B1bGFzaSkNCmBgYA0KDQojQ29tYmluZSBEYXRhDQoNCmBgYHtyfQ0KIyBqb2luaW5nIEFuZ2thIFBlbWJ1bnVoYW4gZGFuIEdhbmdndWFuIE1lbnRhbA0Kam9pbmVkX3JhdGVzX2RhdGEgPC0gcmlnaHRfam9pbihBbmdrYV9QZW1idW51aGFuLCAgR2FuZ2d1YW5fTWVudGFsLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9IGMoJ05lZ2FyYScsJ0tvZGUnLCdUYWh1bicpKQ0KDQojIGpvaW5pbmcgIGpvaW5lZF9yYXRlc19kYXRhIGFuZCBQb3B1bGFzaSANCmpvaW5lZF9yYXRlc19kYXRhIDwtIGxlZnRfam9pbihqb2luZWRfcmF0ZXNfZGF0YSwgUG9wdWxhc2ksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnk9IGMoJ05lZ2FyYScsJ0tvZGUnLCdUYWh1bicpKQ0KDQoNCmhlYWQoam9pbmVkX3JhdGVzX2RhdGEpDQpgYGANCg0KI1N0cnVrdHVyDQoNCmBgYHtyfQ0Kc3RyKGpvaW5lZF9yYXRlc19kYXRhKQ0KYGBgDQoNCmBgYHtyfQ0KIyBBcHBseWluZyB0eXBlIGNvbnZlcnNpb24NCg0Kam9pbmVkX3JhdGVzX2RhdGEkTmVnYXJhIDwtIGFzLmZhY3Rvcihqb2luZWRfcmF0ZXNfZGF0YSROZWdhcmEpDQpqb2luZWRfcmF0ZXNfZGF0YSRLb2RlIDwtIGFzLmZhY3Rvcihqb2luZWRfcmF0ZXNfZGF0YSRLb2RlKQ0Kam9pbmVkX3JhdGVzX2RhdGEkR2FuZ2d1YW5fTWVudGFsIDwtIGFzLmludGVnZXIoam9pbmVkX3JhdGVzX2RhdGEkR2FuZ2d1YW5fTWVudGFsKQ0Kam9pbmVkX3JhdGVzX2RhdGEkVG90YWxfUG9wdWxhc2kgPC0gYXMuaW50ZWdlcihqb2luZWRfcmF0ZXNfZGF0YSRUb3RhbF9Qb3B1bGFzaSkNCg0KIyBWZXJpZnlpbmcgdHlwZSBvZiB2YXJpYWJsZXMNCmNsYXNzKGpvaW5lZF9yYXRlc19kYXRhJE5lZ2FyYSkNCmBgYA0KDQpgYGB7cn0NCmNsYXNzKGpvaW5lZF9yYXRlc19kYXRhJEtvZGUpDQpgYGANCg0KYGBge3J9DQpjbGFzcyhqb2luZWRfcmF0ZXNfZGF0YSRHYW5nZ3Vhbl9NZW50YWwpDQpgYGANCg0KYGBge3J9DQpjbGFzcyhqb2luZWRfcmF0ZXNfZGF0YSRUb3RhbF9Qb3B1bGFzaSkNCmBgYA0KDQojTWVyYXBpa2FuIERhdGENCg0KYGBge3J9DQojIHJlbW92aW5nIGNvdW50eV9jb2RlIGNvbHVtbg0KDQpqb2luZWRfcmF0ZXNfZGF0YSA8LSBzdWJzZXQoam9pbmVkX3JhdGVzX2RhdGEsIA0KICAgICAgICAgICAgICAgICAgICAgc2VsZWN0PSBjKCdOZWdhcmEnLCdUYWh1bicsJ0FuZ2thX1BlbWJ1bnVoYW4nLCdHYW5nZ3Vhbl9NZW50YWwnLCdUb3RhbF9Qb3B1bGFzaScpKQ0Kam9pbmVkX3JhdGVzX2RhdGElPiUgZ3JvdXBfYnkoTmVnYXJhKSAlPiUgc3VtbWFyaXNlKGF2Z19BbmdrYV9QZW1idW51aGFuID0gcm91bmQobWVhbihBbmdrYV9QZW1idW51aGFuKSwzKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZnX3BlcnNvbl9tZW50YWxfZGlzb3JkZXIgPSByb3VuZChtZWFuKEdhbmdndWFuX01lbnRhbCxuYS5ybSA9IFRSVUUpLDMpKSAgDQoNCmBgYA0KDQpgYGB7cn0NCmhlYWQoam9pbmVkX3JhdGVzX2RhdGEpDQpgYGANCg0KI01lbWFuaXB1bGFzaSBEYXRhDQoNCmBgYHtyfQ0KIyBNdXRhdGluZyAgR2FuZ2d1YW5fTWVudGFsX3JhdGUNCmpvaW5lZF9yYXRlc19kYXRhIDwtIG11dGF0ZShqb2luZWRfcmF0ZXNfZGF0YSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FuZ2d1YW5fTWVudGFsX3JhdGUgPSgoR2FuZ2d1YW5fTWVudGFsL1RvdGFsX1BvcHVsYXNpKSoxMDAwMDApKQ0KDQpoZWFkKGpvaW5lZF9yYXRlc19kYXRhKQ0KYGBgDQoNCmBgYHtyfQ0KI011dGF0aW5nIHBlcmNlbnRhZ2UNCmpvaW5lZF9yYXRlc19kYXRhIDwtIG11dGF0ZShqb2luZWRfcmF0ZXNfZGF0YSwgcGVyY2VudGFnZSA9IChBbmdrYV9QZW1idW51aGFuLyBHYW5nZ3Vhbl9NZW50YWxfcmF0ZSkqMTAwKQ0KDQoNCmhlYWQoam9pbmVkX3JhdGVzX2RhdGEpDQpgYGANCg0KIyBQZW1pbmRhaWFuIEkNCg0KYGBge3J9DQojRmluZGluZyBzdW0gb2YgbWlzc2luZyB2YWx1ZXMgaW4gZWFjaCBjb2x1bW4NCmNvbFN1bXMoaXMubmEoam9pbmVkX3JhdGVzX2RhdGEpKQ0KYGBgDQoNCmBgYHtyfQ0KIyBtZWFuIGltcHV0YXRpb24gKGZvciBudW1lcmljYWwgdmFyaWFibGVzKQ0KDQoNCmpvaW5lZF9yYXRlc19kYXRhJFRvdGFsX1BvcHVsYXNpPC0gaW1wdXRlKGpvaW5lZF9yYXRlc19kYXRhJFRvdGFsX1BvcHVsYXNpLCBmdW4gPSBtZWFuKQ0KDQoNCg0Kam9pbmVkX3JhdGVzX2RhdGEgPC0gbXV0YXRlKGpvaW5lZF9yYXRlc19kYXRhLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FuZ2d1YW5fTWVudGFsX3JhdGUgPSBpZmVsc2UoaXMubmEoIEdhbmdndWFuX01lbnRhbF9yYXRlKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICggR2FuZ2d1YW5fTWVudGFsL1RvdGFsX1BvcHVsYXNpKSoxMDAwMDAsICBHYW5nZ3Vhbl9NZW50YWxfcmF0ZSkpDQoNCg0Kam9pbmVkX3JhdGVzX2RhdGEgPC0gbXV0YXRlKGpvaW5lZF9yYXRlc19kYXRhLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2UgPSBpZmVsc2UoaXMubmEocGVyY2VudGFnZSksKEFuZ2thX1BlbWJ1bnVoYW4vIEdhbmdndWFuX01lbnRhbF9yYXRlKSoxMDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudGFnZSkpDQoNCiNyZSB2ZXJpZnlpbmcgZm9yIG5hIHZhbHVlcw0Kc3VtKGlzLm5hKGpvaW5lZF9yYXRlc19kYXRhJFRvdGFsX1BvcHVsYXNpKSkNCmBgYA0KDQpgYGB7cn0NCnN1bShpcy5uYShqb2luZWRfcmF0ZXNfZGF0YSQgR2FuZ2d1YW5fTWVudGFsX3JhdGUpKQ0KYGBgDQoNCmBgYHtyfQ0Kc3VtKGlzLm5hKGpvaW5lZF9yYXRlc19kYXRhJHBlcmNlbnRhZ2UpKQ0KYGBgDQoNCmBgYHtyfQ0KIyBzcGVjaWFsIGZ1bmN0aW9uIHRvIGZpbmQgTmFOIGFuZCBpbmNvbnNpc3RlbnQgdmFsdWVzDQppcy5zcGVjaWFsIDwtIGZ1bmN0aW9uKHgpew0KIGlmIChpcy5udW1lcmljKHgpKSAoaXMuaW5maW5pdGUoeCkgfCBpcy5uYW4oeCkpDQp9DQoNCiAjZmluZGluZyBudW1iZXIgb2YgaW5jb25zaXN0ZW50IHZhbHVlcyBpbiBkYXRhDQpzYXBwbHkoam9pbmVkX3JhdGVzX2RhdGEsIGZ1bmN0aW9uKHgpIHN1bShpcy5zcGVjaWFsKHgpKSkNCmBgYA0KDQoNCiMgUGVtaW5kYWlhbiBJSQ0KDQpgYGB7cn0NCiMgU3Vic2V0dGluZyBqb2luZWRfcmF0ZXNfZGF0YQ0Kam9pbmVkX2RhdGFfc3ViIDwtIGpvaW5lZF9yYXRlc19kYXRhICU+JSBkcGx5cjo6IHNlbGVjdChBbmdrYV9QZW1idW51aGFuLEdhbmdndWFuX01lbnRhbCxUb3RhbF9Qb3B1bGFzaSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdhbmdndWFuX01lbnRhbF9yYXRlLHBlcmNlbnRhZ2UpIA0KDQpzdW1tYXJ5KGpvaW5lZF9kYXRhX3N1YikgIA0KYGBgDQoNCmBgYHtyfQ0KI3otc2NvcmUgbWV0aG9kIGZvciBkZXRlY3Rpbmcgb3VsaWVycw0Kei5zY29yZXMgPC0gam9pbmVkX2RhdGFfc3ViICAlPiUgc2NvcmVzKHR5cGUgPSAieiIpDQpsZW5ndGgod2hpY2goIGFicyh6LnNjb3JlcykgPjMgKSkNCmBgYA0KDQpgYGB7cn0NCiMgY2FwcGluZyBmb3IgaW1wdXRpbmcgb3V0bGllcnMNCmNhcCA8LSBmdW5jdGlvbih4KXsNCnF1YW50aWxlcyA8LSBxdWFudGlsZSggeCwgYyguMDUsIDAuMjUsIDAuNzUsIC45NSApKQ0KeFsgeCA8IHF1YW50aWxlc1syXSAtIDEuNSpJUVIoeCkgXSA8LSBxdWFudGlsZXNbMV0NCnhbIHggPiBxdWFudGlsZXNbM10gKyAxLjUqSVFSKHgpIF0gPC0gcXVhbnRpbGVzWzRdDQp4DQp9DQoNCiMgQXBwbHkgYSB1c2VyIGRlZmluZWQgZnVuY3Rpb24gImNhcCIgdG8gYSBkYXRhIGZyYW1lDQpqb2luZWRfZGF0YV9jYXBwZWQgPC0gIGFzLmRhdGEuZnJhbWUoc2FwcGx5KGpvaW5lZF9kYXRhX3N1YiwgRlVOID0gY2FwICkpDQpzdW1tYXJ5KGpvaW5lZF9kYXRhX2NhcHBlZCkNCg0KYGBgDQoNCiMgUGVydWJhaGFuDQoNCmBgYHtyfQ0KIyBIaXN0b2dyYW0gDQpBbmdrYV9QZW1idW51aGFuIDwtIGpvaW5lZF9kYXRhX2NhcHBlZCRBbmdrYV9QZW1idW51aGFuDQpoaXN0KEFuZ2thX1BlbWJ1bnVoYW4gKQ0KYGBgDQoNCmBgYHtyfQ0KI1NxdWFyZSByb290IFRyYW5zZm9ybWF0aW9uDQpBbmdrYV9QZW1idW51aGFuX3RyYW5zZm9ybWVkPC0gc3FydChqb2luZWRfZGF0YV9jYXBwZWQkQW5na2FfUGVtYnVudWhhbikNCmhpc3QoQW5na2FfUGVtYnVudWhhbl90cmFuc2Zvcm1lZCkgDQpgYGANCg0KYGBge3J9DQojIEhpc3RvZ3JhbSANCnBlcmNlbnRhZ2UgPC0gam9pbmVkX2RhdGFfY2FwcGVkJCBwZXJjZW50YWdlDQpoaXN0KCBwZXJjZW50YWdlKQ0KYGBgDQoNCmBgYHtyfQ0KI1NxdWFyZSByb290IFRyYW5zZm9ybWF0aW9uDQpwZXJjZW50YWdlX3RyYW5zZm9ybWVkIDwtIHNxcnQoam9pbmVkX2RhdGFfY2FwcGVkJCBwZXJjZW50YWdlKQ0KaGlzdChwZXJjZW50YWdlX3RyYW5zZm9ybWVkKSANCmBgYA0KDQojIEFuYWxpc2lzDQoNClVudHVrIG1lbmdldGFodWkgaHVidW5nYW4gYW50YXJhIEFuZ2thIFBlbWJ1bnVoYW4gZGVuZ2FuIGFuZ2thIGdhbmdndWFuIGtlc2VoYXRhbiBqaXdhLCBkaWxha3VrYW4gdWppIHBhaXJlZCB0LXRlc3QgZGVuZ2FuIGFzdW1zaSBiYWh3YSBkYXRhIGJlcmRpc3RyaWJ1c2kgbm9ybWFsLg0KDQpgYGB7cn0NCnB0dGVzdCA8LSB0LnRlc3Qoam9pbmVkX2RhdGFfY2FwcGVkJEFuZ2thX1BlbWJ1bnVoYW4sIGpvaW5lZF9kYXRhX2NhcHBlZCQgR2FuZ2d1YW5fTWVudGFsX3JhdGUsDQogICAgICAgICAgICAgICAgIHBhaXJlZCA9IFRSVUUsYWx0ZXJuYXRpdmUgPSAidHdvLnNpZGVkIixjb25mLmxldmVsID0gLjk1KQ0KcHR0ZXN0DQpgYGANCg0KIyMgVGFmc2lyYW4NCg0KSGlwb3Rlc2lzIG5vbDogVGlkYWsgYWRhIGh1YnVuZ2FuIGFudGFyYSB0aW5na2F0IFBlbWJ1bnVoYW4gZGFuIHRpbmdrYXQgZ2FuZ2d1YW4ga2VzZWhhdGFuIG1lbnRhbC4NCkhpcG90ZXNpcyBhbHRlcm5hdGlmOiBBZGEgaHVidW5nYW4gYW50YXJhIEFuZ2thIFBlbWJ1bnVoYW4gZGVuZ2FuIGFuZ2thIGdhbmdndWFuIGtlc2VoYXRhbiBqaXdhLg0KVGVtdWFuIGRhcmkgaGFzaWwgdWppIGhpcG90ZXNpcyBkZW5nYW4gbWVtcGVyb2xlaCBuaWxhaSBwIGRhbiBpbnRlcnZhbCBrZXBlcmNheWFhbi4NCg0KVWppLXQgc2FtcGVsIGJlcnBhc2FuZ2FuIGRpbGFrdWthbiB1bnR1ayBhbmFsaXNpcy4NClVqaS10IG1lbmdoYXNpbGthbiBuaWxhaSBwIGRlbmdhbiBuaWxhaSBwIDwyLjkzN2UtMTYgbGViaWgga2VjaWwgZGFyaSBuaWxhaSBhbHBoYSAwLjA1Lg0KUGVyYmVkYWFuIHJhdGEtcmF0YSB0aWRhayB0ZXJtYXN1ayBkYWxhbSA5NSUgQ0kuDQpIYXNpbG55YSBzaWduaWZpa2FuIHNlY2FyYSBzdGF0aXN0aWsuIEphZGksIGhhc2lsIGthbWkgbWVuZHVrdW5nIEhpcG90ZXNpcyBhbHRlcm5hdGlmDQpPbGVoIGthcmVuYSBpdHUga2FtaSBzYW1wYWkgcGFkYSBrZXNpbXB1bGFuIGJhaHdhOg0KDQpVamktdCBzYW1wZWwgYmVycGFzYW5nYW4gbWVuZW11a2FuIGh1YnVuZ2FuIHlhbmcgc2lnbmlmaWthbiBzZWNhcmEgc3RhdGlzdGlrIGFudGFyYSB0aW5na2F0IFBlbWJ1bnVoYW4gZGFuIHRpbmdrYXQgZ2FuZ2d1YW4ga2VzZWhhdGFuIG1lbnRhbA0KDQojIyBPcGluaToNCg0KQW5hbGlzaXNueWEgYWthbiBsZWJpaCBiYWlrIGppa2EgIGRpbGFrdWthbiBsYWdpIHBlbmVsaXRpYW4ga2VwYWRhIG9yYW5nIHlhbmcgYmVyYmVkYSB1c2lhIGRhbiBrZWFkYWFuIHlhbmcgYmVyYmVkYSBzZXBlcnRpIG1hc2FsYWggZWtvbm9taSwgdGluZ2thdCBrcmltaW5hbGl0YXMsIHRpbmdrYXQga29uc3Vtc2kgYWxrb2hvbCwgZ2VuZGVyLCBhdHVyYW4geWFuZyBiZXJsYWt1IGRpIHRpYXAgbmVnYXJhIGJhZ2lhbi4NCg0K