##
## 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 'ggplot2' was built under R version 4.3.3
## Warning: package 'psych' was built under R version 4.3.3
##
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
## Warning: package 'DescTools' was built under R version 4.3.3
##
## Attaching package: 'DescTools'
## The following objects are masked from 'package:psych':
##
## AUC, ICC, SD
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ lubridate 1.9.3 ✔ tibble 3.2.1
## ✔ purrr 1.0.2 ✔ tidyr 1.3.0
## ✔ readr 2.1.5
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ psych::%+%() masks ggplot2::%+%()
## ✖ psych::alpha() masks ggplot2::alpha()
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
##
## Attaching package: 'scales'
##
##
## The following object is masked from 'package:purrr':
##
## discard
##
##
## The following object is masked from 'package:readr':
##
## col_factor
##
##
## The following objects are masked from 'package:psych':
##
## alpha, rescale
## Warning: package 'AER' was built under R version 4.3.3
## Loading required package: car
## Warning: package 'car' was built under R version 4.3.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.3.3
##
## Attaching package: 'car'
##
## The following object is masked from 'package:purrr':
##
## some
##
## The following object is masked from 'package:DescTools':
##
## Recode
##
## The following object is masked from 'package:psych':
##
## logit
##
## The following object is masked from 'package:dplyr':
##
## recode
##
## Loading required package: lmtest
## Warning: package 'lmtest' was built under R version 4.3.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.3.3
##
## Attaching package: 'zoo'
##
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## Loading required package: sandwich
## Warning: package 'sandwich' was built under R version 4.3.3
## Loading required package: survival
##
## Attaching package: 'survival'
##
## The following object is masked from 'package:epitools':
##
## ratetable
## Warning: package 'datarium' was built under R version 4.3.3
## Warning: package 'Ecdat' was built under R version 4.3.3
## Loading required package: Ecfun
## Warning: package 'Ecfun' was built under R version 4.3.3
##
## Attaching package: 'Ecfun'
##
## The following object is masked from 'package:DescTools':
##
## BoxCox
##
## The following object is masked from 'package:base':
##
## sign
##
##
## Attaching package: 'Ecdat'
##
## The following object is masked from 'package:carData':
##
## Mroz
##
## The following object is masked from 'package:datasets':
##
## Orange
## Warning: package 'ISLR' was built under R version 4.3.3
Bộ dữ liệu
Credit
Bộ dữ liệu Credit chứa thông tin về khách hàng vay tín dụng từ một
ngân hàng, với mục tiêu chính là dự đoán khả năng vỡ nợ của khách hàng
dựa trên các đặc điểm nhân khẩu học và tài chính của họ. Đây là một bộ
dữ liệu lý tưởng để nghiên cứu về rủi ro tín dụng, hành vi vay mượn của
người tiêu dùng, và phân tích tài chính cá nhân.
Bộ dữ liệu này có tổng cộng 400 quan sát và 11 biến.
Các biến định tính (Qualitative/Categorical Variables) nổi
bật:
Gender: Giới tính của khách hàng
(Male/Female).
Student: Tình trạng sinh viên (Yes/No). Sinh viên
thường có hành vi chi tiêu và thu nhập khác biệt.
Married: Tình trạng hôn nhân (Yes/No). Tình trạng
hôn nhân có thể ảnh hưởng đến khả năng tài chính và quyết định vay
mượn.
Ethnicity: Dân tộc của khách hàng
(Caucasian/Asian/African American). Biến này có thể được sử dụng để kiểm
tra sự khác biệt trong việc cấp tín dụng giữa các nhóm dân tộc, hoặc
liệu có sự phân biệt đối xử hay không.
Các biến định lượng (Quantitative/Numerical Variables) nổi
bật:
Income: Thu nhập hàng năm của khách hàng (tính bằng
ngàn đô la). Đây là một yếu tố quan trọng ảnh hưởng đến khả năng trả
nợ.
Limit: Hạn mức tín dụng của khách hàng (tính bằng đô
la).
Rating: Điểm tín dụng của khách hàng (thường là một
thước đo của uy tín tài chính).
Cards: Số lượng thẻ tín dụng mà khách hàng đang sở
hữu.
Age: Tuổi của khách hàng.
Education: Số năm học vấn của khách hàng.
Balance: Số dư nợ tín dụng trung bình hàng tháng của
khách hàng (tính bằng đô la). Đây thường là biến phụ thuộc chính khi dự
đoán khả năng vỡ nợ hoặc rủi ro tín dụng.
d <- Credit
datatable(d)
str(d)
## 'data.frame': 400 obs. of 12 variables:
## $ ID : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Income : num 14.9 106 104.6 148.9 55.9 ...
## $ Limit : int 3606 6645 7075 9504 4897 8047 3388 7114 3300 6819 ...
## $ Rating : int 283 483 514 681 357 569 259 512 266 491 ...
## $ Cards : int 2 3 4 3 2 4 2 2 5 3 ...
## $ Age : int 34 82 71 36 68 77 37 87 66 41 ...
## $ Education: int 11 15 11 11 16 10 12 9 13 19 ...
## $ Gender : Factor w/ 2 levels " Male","Female": 1 2 1 2 1 1 2 1 2 2 ...
## $ Student : Factor w/ 2 levels "No","Yes": 1 2 1 1 1 1 1 1 1 2 ...
## $ Married : Factor w/ 2 levels "No","Yes": 2 2 1 1 2 1 1 1 1 2 ...
## $ Ethnicity: Factor w/ 3 levels "African American",..: 3 2 2 2 3 3 1 2 3 1 ...
## $ Balance : int 333 903 580 964 331 1151 203 872 279 1350 ...
Bộ dữ liệu Credit được sử dụng trong nghiên cứu này chứa thông tin
của 400 khách hàng vay tín dụng, với tổng cộng 12 biến. Cấu trúc của bộ
dữ liệu (str(d)) cho thấy sự kết hợp của cả biến định lượng và định
tính. Các biến định lượng bao gồm ID, Income, Limit, Rating, Cards, Age,
Education, và Balance (đều là kiểu số nguyên hoặc số thực), cung cấp
thông tin về tài chính và nhân khẩu học. Trong khi đó, các biến định
tính bao gồm Gender, Student, Married, và Ethnicity (đều được định dạng
là yếu tố với các cấp độ tương ứng), đại diện cho các đặc điểm phân loại
của khách hàng. Sự đa dạng trong cấu trúc biến này tạo nền tảng vững
chắc cho việc phân tích toàn diện các yếu tố ảnh hưởng đến rủi ro tín
dụng và hành vi tài chính.
- Lọc các biến định lượng của bộ dữ liệu Credit
d1 <- subset(d,select=-c(Income, Limit, Rating, Cards, Age, Education, Balance))
datatable(d1)
- Kiểm tra dữ liệu bị thiếu
a <-is.na(d1)
datatable(a)
sum(is.na(d1))
## [1] 0
which(is.na(d1))
## integer(0)
Để đảm bảo chất lượng dữ liệu, quá trình kiểm tra dữ liệu bị thiếu
(missing data) đã được tiến hành trên bộ dữ liệu Credit. Bằng cách sử
dụng các hàm kiểm tra trong R như is.na() và sum(is.na()), kết quả cho
thấy toàn bộ bộ dữ liệu không chứa bất kỳ giá trị NA nào. Cụ thể, tổng
số giá trị thiếu được xác định là 0, đồng thời không có chỉ số nào được
trả về cho các vị trí có dữ liệu thiếu. Điều này khẳng định bộ dữ liệu
Credit là hoàn chỉnh và không yêu cầu bất kỳ bước xử lý dữ liệu thiếu
nào, giúp quá trình phân tích tiếp theo được thực hiện trên nền tảng dữ
liệu đáng tin cậy.
Phân tích mô tả
các biến định tính
Biến
Gender
Thống kê mô tả biến Gender thông qua bảng tần số, tần suất và đồ
thị.
Bảng tần số:
table(d1$Gender)
##
## Male Female
## 193 207
Bảng tần suất:
a2 <- table(d1$Gender)/sum(nrow(d1))
a2
##
## Male Female
## 0.4825 0.5175
Vậy trong bộ dữ liệu này có 48.25% nam và 51.75% nữ.
Đồ thị biểu diễn tỷ lệ phần trăm giới tính khách hàng vay tín
dụng từ một ngân hàng:
pie(a2,
labels = paste(names(a2), round(a2, 2), "%"),
main = "Biểu đồ tròn: Tỷ lệ Gender")

Biến
Student
Thống kê mô tả biến Student thông qua bảng tần số, tần suất và đồ
thị.
Bảng tần số:
table(d1$Student)
##
## No Yes
## 360 40
Bảng tần suất:
a3 <- table(d1$Student)/sum(nrow(d1))
a3
##
## No Yes
## 0.9 0.1
Vậy trong bộ dữ liệu này có 90% không phải sinh viên và 10% sinh
viên.
Đồ thị biểu diễn tỷ lệ phần trăm sinh viên vay tín dụng từ một
ngân hàng:
pie(a3,
labels = paste(names(a3), round(a3, 2), "%"),
main = "Biểu đồ tròn: Tỷ lệ Student")

Nhận xét về biến Student trong bộ dữ liệu Credit:
Phân tích biến Student (Tình trạng sinh viên) trong tập dữ liệu khách
hàng vay tín dụng cho thấy một tỷ lệ rất nhỏ khách hàng là sinh viên. Cụ
thể, trong tổng số 400 khách hàng, có tới 360 khách hàng không phải là
sinh viên (No), chiếm 90% tổng số mẫu. Ngược lại, chỉ có 40 khách hàng
là sinh viên (Yes), tương ứng với 10% dân số mẫu. Biểu đồ tròn càng làm
nổi bật sự chênh lệch lớn này, với phần lớn biểu đồ đại diện cho nhóm
“Không phải sinh viên”. Điều này gợi ý rằng đối tượng khách hàng chính
của ngân hàng trong bộ dữ liệu này không phải là sinh viên, và các phân
tích về hành vi vay tín dụng có thể sẽ tập trung chủ yếu vào nhóm khách
hàng không phải sinh viên. Sự phân bố này có thể ảnh hưởng đến các chiến
lược đánh giá rủi ro và tiếp thị sản phẩm tín dụng của ngân
hàng.
Biến
Married
Thống kê mô tả biến Married thông qua bảng tần số, tần suất và đồ
thị.
Bảng tần số:
table(d1$Married)
##
## No Yes
## 155 245
Bảng tần suất:
a4 <- table(d1$Married)/sum(nrow(d1))
a4
##
## No Yes
## 0.3875 0.6125
Vậy trong bộ dữ liệu này có 38.75% chưa kết hơn và 61.25% đã kết hôn.
Đồ thị biểu diễn tỷ lệ phần trăm tình trạng hôn nhân của khách hàng
vay tín dụng từ một ngân hàng:
pie(a4,
labels = paste(names(a4), round(a4, 2), "%"),
main = "Biểu đồ tròn: Tỷ lệ Married")

Nhận xét về biến Married trong bộ dữ liệu Credit:
Dựa trên kết quả phân tích biến “Married” (Tình trạng hôn nhân) từ bộ
dữ liệu Credit, chúng ta thấy rằng trong số những khách hàng vay tín
dụng, nhóm đã kết hôn chiếm tỷ lệ lớn hơn (61.25%) so với nhóm chưa kết
hôn (38.75%), được thể hiện rõ ràng qua bảng tần số, tần suất và biểu đồ
tròn. Điều này có thể gợi ý rằng các tổ chức tín dụng có thể có xu hướng
ưu tiên hoặc đánh giá cao hơn đối với các cá nhân đã kết hôn khi xét
duyệt khoản vay, có thể do giả định về sự ổn định tài chính và trách
nhiệm cao hơn.
Biến
Ethnicity
Thống kê mô tả biến Ethnicity thông qua bảng tần số, tần suất và đồ
thị.
Bảng tần số:
table(d1$Ethnicity)
##
## African American Asian Caucasian
## 99 102 199
Bảng tần suất:
a5 <- table(d1$Ethnicity)/sum(nrow(d1))
a5
##
## African American Asian Caucasian
## 0.2475 0.2550 0.4975
Vậy trong bộ dữ liệu này có 24.75% African American và 25.5% Asian,
49.75% Caucasian.
Đồ thị biểu diễn tỷ lệ phần trăm tình trạng dân tộc của khách
hàng vay tín dụng từ một ngân hàng:
pie(a5,
labels = paste(names(a5), round(a5, 2), "%"),
main = "Biểu đồ tròn: Tỷ lệ Ethnicity")

Nhận xét về biến Ethnicity trong bộ dữ liệu Credit:
Dựa trên các kết quả phân tích biến “Ethnicity” (Dân tộc) từ bộ dữ
liệu Credit, ta có thể nhận thấy rõ sự phân bố không đồng đều về dân tộc
trong số các khách hàng vay tín dụng. Cụ thể, nhóm Caucasian chiếm tỷ lệ
áp đảo với 49.75% (gần một nửa), trong khi nhóm Asian chiếm 25.5% và
African American chiếm 24.75%. Sự chênh lệch đáng kể này có thể cho thấy
một xu hướng tiềm ẩn trong việc cấp tín dụng, nơi mà các tổ chức tài
chính có thể có nhiều khách hàng thuộc nhóm Caucasian hơn, hoặc các
chính sách/tiêu chí xét duyệt có thể vô tình dẫn đến sự phân bổ dân tộc
như vậy.
Ước lượng
khoảng và kiểm định giả thuyết tỷ lệ
Biến
Gender
Xác định hạng mục quan tâm: nhóm người có giới tính
nữ (Female) trong biến Gender.
Ước lượng khoảng tin cậy: ước lượng tỷ lệ người có
giới tính nữ trong tổng thể với độ tin cậy 95%.
#số lượng quan sát của hạng mục Female
b1 <- sum(d1$Gender == "F")
#Tổng số quan sát
total <- nrow(d1)
# ước lượng
prop.test(b1, total, conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: b1 out of total, null probability 0.5
## X-squared = 398, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.000000 0.011858
## sample estimates:
## p
## 0
Dựa trên kết quả kiểm định tỷ lệ 1 mẫu với hiệu chỉnh liên tục, ta có thể nhận thấy rằng tỷ lệ người có giới tính nữ trong tổng thể rất thấp, với ước tính tỷ lệ mẫu (p) bằng 0. Khoảng tin cậy 95% cho tỷ lệ thực của nữ giới là từ 0.000000 đến 0.011858. Giá trị p-value nhỏ hơn 2.2e-16 cho thấy sự khác biệt đáng kể so với giả thuyết không (tỷ lệ bằng 0.5), không có đủ bằng chứng thống kê để kết luận rằng tỷ lệ nữ là 0.5 và khẳng định tỷ lệ nữ thực sự khác 0.5, cụ thể là gần bằng 0.
Kiểm định giả thuyết tỷ lệ
Đặt giả thuyết:
\[
\begin{cases}
H_0: \text{Tỷ lệ người có giới tính nữ trong tổng thể là 40%.} \\
H_1: \text{Tỷ lệ người có giới tính nữ trong tổng thể là khác 40%.}
\end{cases}
\]
#Kiểm định hai phía
prop.test(b1, total, p=0.4, alternative = "two.sided")
##
## 1-sample proportions test with continuity correction
##
## data: b1 out of total, null probability 0.4
## X-squared = 265, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.4
## 95 percent confidence interval:
## 0.000000 0.011858
## sample estimates:
## p
## 0
Dựa trên kết quả kiểm định giả thuyết tỷ lệ hai phía, với giả thuyết
\(H_0\) là tỷ lệ người có giới tính nữ
trong tổng thể là 40% (p=0.4) và giả thuyết \(H_1\) là tỷ lệ này khác 40%, ta có các kết
quả sau:
Giá trị p-value rất nhỏ
(<2.2e-16), thấp hơn đáng kể so với mức ý nghĩa thông
thường (ví dụ: 0.05). Điều này cung cấp bằng chứng mạnh mẽ để bác bỏ giả
thuyết \(H_0\).
Tỷ lệ mẫu ước tính (p) là 0, cho thấy trong mẫu
khảo sát không có người mang giới tính nữ nào.
Khoảng tin cậy 95% cho tỷ lệ thực của người có
giới tính nữ là từ 0.000000 đến 0.011858. Khoảng này không chứa giá trị
0.4 (tức 40%), càng khẳng định việc bác bỏ giả thuyết \(H_0\).
Tóm lại, có đủ bằng chứng thống kê để kết luận rằng tỷ lệ người có
giới tính nữ trong tổng thể khác 40%, và thực tế tỷ lệ này rất thấp, gần
như bằng 0.
Biến
Student
Xác định hạng mục quan tâm: nhóm người là sinh viên
(Yes) trong biến Student.
Ước lượng khoảng tin cậy: ước lượng tỷ lệ người là
sinh viên trong tổng thể với độ tin cậy 95%.
#số lượng quan sát của hạng mục Yes
b2 <- sum(d1$Student == 'Yes')
# ước lượng
prop.test(b2, total, conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: b2 out of total, null probability 0.5
## X-squared = 254.4, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.0732215 0.1347077
## sample estimates:
## p
## 0.1
Dựa trên kết quả kiểm định tỷ lệ 1 mẫu với hiệu chỉnh liên tục cho biến "Student", tỷ lệ người là sinh viên trong mẫu được ước tính là 10%. Với độ tin cậy 95%, khoảng tin cậy cho tỷ lệ thực của sinh viên trong tổng thể là từ 7.32% đến 13.47%. Giá trị p-value nhỏ hơn 2.2e-16 cung cấp bằng chứng mạnh mẽ để kết luận rằng tỷ lệ người là sinh viên trong tổng thể khác 50% và thực tế tỷ lệ này thấp hơn đáng kể so với 50%.
Kiểm định giả thuyết tỷ lệ
Đặt giả thuyết:
\[
\begin{cases}
H_0: \text{Tỷ lệ người là sinh viên trong tổng thể là 5%.} \\
H_1: \text{Tỷ lệ người là sinh viên trong tổng thể là khác 5%.}
\end{cases}
\]
#Kiểm định hai phía
prop.test(b2, total, p=0.05, alternative = "two.sided")
##
## 1-sample proportions test with continuity correction
##
## data: b2 out of total, null probability 0.05
## X-squared = 20.013, df = 1, p-value = 7.691e-06
## alternative hypothesis: true p is not equal to 0.05
## 95 percent confidence interval:
## 0.0732215 0.1347077
## sample estimates:
## p
## 0.1
Dựa trên kết quả kiểm định giả thuyết tỷ lệ hai phía cho biến "Student", với giả thuyết $H_0$ là tỷ lệ người là sinh viên trong tổng thể là 5% (p=0.05) và giả thuyết $H_1$ là tỷ lệ này khác 5%, ta có giá trị p-value là `7.691e-06`. Giá trị p-value này rất nhỏ (nhỏ hơn 0.05), cung cấp bằng chứng mạnh mẽ để bác bỏ giả thuyết $H_0$. Điều này cho thấy tỷ lệ người là sinh viên trong tổng thể không phải là 5%. Ước tính **tỷ lệ mẫu** là 0.1 (tức 10%), và **khoảng tin cậy 95%** là từ 0.0732215 đến 0.1347077, không chứa giá trị 0.05. Điều này củng cố kết luận rằng tỷ lệ sinh viên thực tế cao hơn đáng kể so với 5%.
Biến
Married
Xác định hạng mục quan tâm: nhóm người đã kết hôn
(Yes) trong biến Married.
Ước lượng khoảng tin cậy: ước lượng tỷ lệ người đã
kết hôn trong tổng thể với độ tin cậy 95%.
#số lượng quan sát của hạng mục Yes
b3 <- sum(d1$Married == 'Yes')
# ước lượng
prop.test(b3, total, conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: b3 out of total, null probability 0.5
## X-squared = 19.802, df = 1, p-value = 8.587e-06
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.5626369 0.6601671
## sample estimates:
## p
## 0.6125
Dựa trên kết quả kiểm định tỷ lệ 1 mẫu với hiệu chỉnh liên tục cho biến "Married", ta đã ước lượng tỷ lệ người đã kết hôn (Yes) trong tổng thể với độ tin cậy 95%. Tỷ lệ mẫu ước tính (p) là 0.6125, tức là 61.25% số người trong mẫu đã kết hôn. Khoảng tin cậy 95% cho tỷ lệ thực của người đã kết hôn trong tổng thể là từ 0.5626369 (khoảng 56.26%) đến 0.6601671 (khoảng 66.02%). Điều này cho thấy chúng ta tự tin 95% rằng tỷ lệ người đã kết hôn trong tổng thể nằm trong khoảng này. Giá trị p-value là 8.587e-06, rất nhỏ (nhỏ hơn 0.05), cung cấp bằng chứng mạnh mẽ để bác bỏ giả thuyết không (null probability 0.5), tức là tỷ lệ người đã kết hôn trong tổng thể khác 0.5. Kết quả này nhất quán với ước tính tỷ lệ mẫu, cho thấy tỷ lệ người đã kết hôn thực sự cao hơn đáng kể so với 50%.
Kiểm định giả thuyết tỷ lệ
Đặt giả thuyết:
\[
\begin{cases}
H_0: \text{Tỷ lệ người đã kết hôn trong tổng thể là 80%.} \\
H_1: \text{Tỷ lệ người đã kết hôn trong tổng thể là khác 80%.}
\end{cases}
\]
#Kiểm định hai phía
prop.test(b3, total, p=0.8, alternative = "two.sided")
##
## 1-sample proportions test with continuity correction
##
## data: b3 out of total, null probability 0.8
## X-squared = 86.723, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.8
## 95 percent confidence interval:
## 0.5626369 0.6601671
## sample estimates:
## p
## 0.6125
Dựa trên kết quả kiểm định giả thuyết tỷ lệ hai phía cho biến "Married", với giả thuyết $H_0$ là tỷ lệ người đã kết hôn trong tổng thể là 80% (p=0.8) và giả thuyết $H_1$ là tỷ lệ này khác 80%, ta có giá trị p-value nhỏ hơn `2.2e-16`. Giá trị p-value này cực kỳ nhỏ, cung cấp bằng chứng mạnh mẽ để bác bỏ giả thuyết $H_0$. Điều này cho thấy tỷ lệ người đã kết hôn trong tổng thể không phải là 80%. **Ước tính tỷ lệ mẫu** là 0.6125 (tức 61.25%), và **khoảng tin cậy 95%** là từ 0.5626369 đến 0.6601671, không chứa giá trị 0.8. Điều này củng cố kết luận rằng tỷ lệ người đã kết hôn thực tế thấp hơn đáng kể so với 80%.
Biến
Ethnicity
Xác định hạng mục quan tâm: nhóm người đến từ Asian
trong biến Ethnicity.
Ước lượng khoảng tin cậy: ước lượng tỷ lệ người đến
từ Asian trong tổng thể với độ tin cậy 95%.
#số lượng quan sát của hạng mục Asian
b4 <- sum(d1$Ethnicity == 'Asian')
# ước lượng
prop.test(b4, total, conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: b4 out of total, null probability 0.5
## X-squared = 95.062, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.2135866 0.3012100
## sample estimates:
## p
## 0.255
Dựa trên kết quả kiểm định tỷ lệ 1 mẫu với hiệu chỉnh liên tục cho biến "Ethnicity", tỷ lệ người đến từ Asian trong mẫu được ước tính là 0.255 (tức 25.5%). Với độ tin cậy 95%, khoảng tin cậy cho tỷ lệ thực của người đến từ Asian trong tổng thể là từ 0.2135866 (khoảng 21.36%) đến 0.3012100 (khoảng 30.12%). Giá trị p-value nhỏ hơn 2.2e-16 cung cấp bằng chứng mạnh mẽ để kết luận rằng tỷ lệ người đến từ Asian trong tổng thể khác 50% và thực tế tỷ lệ này thấp hơn đáng kể so với 50%.
Kiểm định giả thuyết tỷ lệ
Đặt giả thuyết:
\[
\begin{cases}
H_0: \text{Tỷ lệ người đến từ Asian trong tổng thể là 30%.} \\
H_1: \text{Tỷ lệ người đến từ Asian trong tổng thể là khác 30%.}
\end{cases}
\]
#Kiểm định hai phía
prop.test(b4, total, p=0.3, alternative = "two.sided")
##
## 1-sample proportions test with continuity correction
##
## data: b4 out of total, null probability 0.3
## X-squared = 3.6458, df = 1, p-value = 0.05621
## alternative hypothesis: true p is not equal to 0.3
## 95 percent confidence interval:
## 0.2135866 0.3012100
## sample estimates:
## p
## 0.255
Dựa trên kết quả kiểm định giả thuyết tỷ lệ hai phía cho biến "Ethnicity", với giả thuyết $H_0$ là tỷ lệ người đến từ Asian trong tổng thể là 30% (p=0.3) và giả thuyết $H_1$ là tỷ lệ này khác 30%, ta có **giá trị p-value** là `0.05621`. Mặc dù giá trị p-value này gần với mức ý nghĩa 0.05, nhưng nó lớn hơn một chút so với 0.05. Do đó, chúng ta **không có đủ bằng chứng thống kê mạnh mẽ để bác bỏ giả thuyết $H_0$** tại mức ý nghĩa 0.05. Điều này có nghĩa là, dựa trên dữ liệu hiện có, chúng ta không thể kết luận rằng tỷ lệ người đến từ Asian trong tổng thể khác 30%. **Ước tính tỷ lệ mẫu** là 0.255 (25.5%), và **khoảng tin cậy 95%** là từ 0.2135866 đến 0.3012100, trong đó giá trị 0.3 nằm ngay sát giới hạn trên của khoảng tin cậy.
Phân tích mối
quan hệ giữa hai biến định tính
Chọn ra hai cặp biến: Gender và Married; Student và
Ethnicity.
Biến Gender
và Married
Để đánh giá mối quan hệ giữa giới tính (Gender) và tình trạng hôn
nhân (Married), một yếu tố thường được xem xét là có ảnh hưởng đến quyết
định và khả năng vay tín dụng hoặc tình hình tài chính cá nhân, chúng ta
sẽ tiến hành phân tích hai biến này trong bộ dữ liệu Credit.
**Bảng tần suất chéo và trực quan dữ liệu**
*Bảng tần số chéo*
k1 <- table(d1$Gender,d1$Married)
addmargins(k1)
##
## No Yes Sum
## Male 76 117 193
## Female 79 128 207
## Sum 155 245 400
Bảng tần suất chéo theo tỷ lệ hàng
prop.table(k1,margin=1)
##
## No Yes
## Male 0.3937824 0.6062176
## Female 0.3816425 0.6183575
Trực quan hóa
# Hoặc nếu muốn hiển thị tỷ lệ
df_k1_prop <- as.data.frame(prop.table(k1, margin = 1))
colnames(df_k1_prop) <- c("Gender", "Married", "Proportion")
ggplot(df_k1_prop, aes(x = Gender, y = Proportion, fill = Married)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Tỷ lệ Tình trạng Hôn nhân theo Giới tính",
x = "Giới tính",
y = "Tỷ lệ",
fill = "Kết hôn") +
theme_minimal() +
scale_y_continuous(labels = scales::percent)

Quan sát biểu đồ “Tỷ lệ Tình trạng Hôn nhân theo Giới tính”, ta thấy
có sự khác biệt nhỏ về tỷ lệ giữa nam và nữ trong tình trạng kết hôn. Cụ
thể, tỷ lệ nam giới đã kết hôn (Yes) là khoảng 60.62%, trong khi tỷ lệ
nữ giới đã kết hôn là khoảng 61.84%. Ngược lại, tỷ lệ nam giới chưa kết
hôn (No) là khoảng 39.38%, cao hơn một chút so với tỷ lệ nữ giới chưa
kết hôn là 38.16%. Mặc dù có sự chênh lệch này, nhưng sự khác biệt giữa
hai giới tính về tỷ lệ kết hôn là không quá lớn, cho thấy tình trạng hôn
nhân phân bổ khá đồng đều giữa nam và nữ trong tập dữ liệu này.
Kiểm định thống kê Chi-bình phương
Đánh giá xem hai biến có độc lập với nhau hay không bằng cách sử dụng
Chi-square test.
Đặt giả thuyết:
\[
\begin{cases}
H_0: \text{Biến Gender và Married không có mối quan hệ.} \\
H_1: \text{Biến Gender và Married có mối quan hệ.}
\end{cases}
\]
chisq.test(k1)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: k1
## X-squared = 0.021415, df = 1, p-value = 0.8837
Để phân tích mối quan hệ giữa “Gender” và “Married”, chúng ta sử dụng
kiểm định Chi-bình phương với giả thuyết \(H_0\) là hai biến này độc lập và \(H_1\) là chúng có mối quan hệ. Kết quả kiểm
định chisq.test(k1) cho thấy giá trị \(X^2 = 0.021415\) với \(df=1\) và p-value là
0.8837. Vì p-value (0.8837) lớn hơn đáng kể so
với mức ý nghĩa thông thường (ví dụ: 0.05), chúng ta không có đủ
bằng chứng để bác bỏ giả thuyết \(H_0\). Điều này có nghĩa là
không có mối quan hệ thống kê có ý nghĩa giữa giới tính và tình
trạng hôn nhân trong tập dữ liệu này; hay nói cách khác, tình
trạng kết hôn không phụ thuộc vào giới tính.
Biến Student
và Ethnicity
Để đánh giá mối quan hệ giữa tình trạng là sinh viên (Student) và yếu
tố sắc tộc (Ethnicity), những biến này có thể ảnh hưởng đến các đặc điểm
tài chính hoặc khả năng tiếp cận tín dụng, chúng ta sẽ tiến hành phân
tích hai biến này trong bộ dữ liệu Credit. Việc này sẽ giúp chúng ta xem
xét liệu có sự khác biệt đáng kể về tình trạng là sinh viên giữa các
nhóm sắc tộc hay không, từ đó có thể suy luận về những yếu tố tiềm ẩn
liên quan đến hành vi vay tín dụng của từng nhóm.
Bảng tần suất chéo và trực quan dữ liệu
Bảng tần số chéo
k2 <- table(d1$Student,d1$Ethnicity)
addmargins(k2)
##
## African American Asian Caucasian Sum
## No 89 89 182 360
## Yes 10 13 17 40
## Sum 99 102 199 400
Bảng tần suất chéo theo tỷ lệ hàng
prop.table(k2,margin=1)
##
## African American Asian Caucasian
## No 0.2472222 0.2472222 0.5055556
## Yes 0.2500000 0.3250000 0.4250000
Trực quan hóa
library(reshape2)
## Warning: package 'reshape2' was built under R version 4.3.3
##
## Attaching package: 'reshape2'
## The following object is masked from 'package:tidyr':
##
## smiths
prop_k2 <- prop.table(k2, margin=1)
# Vẽ biểu đồ cột chồng (stacked barplot)
df_prop <- as.data.frame(prop_k2)
colnames(df_prop) <- c("Student", "Ethnicity", "Proportion")
# Kiểm tra levels
levels(df_prop$Ethnicity)
## [1] "African American" "Asian" "Caucasian"
# Vẽ biểu đồ stacked barplot tỷ lệ
ggplot(df_prop, aes(x=Student, y=Proportion, fill=Ethnicity)) +
geom_bar(stat="identity", position="dodge") + # đổi sang dodge để các cột đứng cạnh
scale_y_continuous(labels=scales::percent) +
labs(title="Tỷ lệ Ethnicity theo Student",
x="Student",
y="Tỷ lệ (%)") +
scale_fill_manual(values=c("steelblue", "orange", "seagreen")) +
theme_minimal()

Quan sát biểu đồ “Tỷ lệ Ethnicity theo Student” và các bảng tần số
chéo tương ứng, ta thấy rằng trong nhóm không phải sinh viên (No), sắc
tộc Caucasian chiếm tỷ lệ áp đảo (khoảng 50.56%), trong khi African
American và Asian có tỷ lệ tương đương nhau (khoảng 24.72%). Ngược lại,
đối với nhóm sinh viên (Yes), tỷ lệ người Asian và African American tăng
lên đáng kể (Asian khoảng 32.5%, African American khoảng 25%) so với
nhóm không phải sinh viên, trong khi tỷ lệ Caucasian giảm xuống (khoảng
42.5%). Điều này cho thấy nhóm sinh viên có sự phân bố sắc tộc đa dạng
hơn và tỷ lệ người Asian cũng như African American cao hơn so với nhóm
không phải sinh viên.
Kiểm định thống kê Chi-bình phương
Đánh giá xem hai biến có độc lập với nhau hay không bằng cách sử dụng
Chi-square test.
Đặt giả thuyết:
\[
\begin{cases}
H_0: \text{Biến Student và Ethnicity không có mối quan hệ.} \\
H_1: \text{Biến Student và Ethnicity có mối quan hệ.}
\end{cases}
\]
chisq.test(k2)
##
## Pearson's Chi-squared test
##
## data: k2
## X-squared = 1.3247, df = 2, p-value = 0.5156
Để phân tích mối quan hệ giữa “Student” và “Ethnicity”, chúng ta sử
dụng kiểm định Chi-bình phương với giả thuyết \(H_0\) là hai biến này độc lập và \(H_1\) là chúng có mối quan hệ. Kết quả kiểm
định chisq.test(k2) cho thấy giá trị \(X^2 = 1.3247\) với \(df=2\) và p-value là
0.5156. Vì p-value (0.5156) lớn hơn đáng kể so với mức ý nghĩa
thông thường (ví dụ: 0.05), chúng ta không có đủ bằng chứng để bác bỏ
giả thuyết \(H_0\). Điều này có nghĩa
là không có mối quan hệ thống kê có ý nghĩa giữa tình trạng sinh viên và
sắc tộc trong tập dữ liệu này; hay nói cách khác, tình trạng là sinh
viên không phụ thuộc vào sắc tộc.
Risk difference
và Relative risk
Biến Gender
và Married
TH1: hạng mục Female làm tham chiếu
e <- riskratio(k1,rev='b')
e
## $data
##
## Yes No Total
## Female 128 79 207
## Male 117 76 193
## Total 245 155 400
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Female 1.00000 NA NA
## Male 1.03181 0.8064772 1.3201
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Female NA NA NA
## Male 0.8041984 0.8375793 0.8033343
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Nhận xét chi tiết về Risk Ratio của Biến Gender và Married
trong bộ dữ liệu Credit:
Kết quả của hàm riskratio(k1, rev='p') đã tính toán tỷ
lệ rủi ro (risk ratio) cho khả năng kết hôn (Married = Yes)
giữa các nhóm giới tính, với nhóm “Female” (nữ giới) được đặt làm hạng
mục tham chiếu.
e1 <- riskratio(k1)
e1
## $data
##
## No Yes Total
## Male 76 117 193
## Female 79 128 207
## Total 155 245 400
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Male 1.000000 NA NA
## Female 1.020026 0.8725618 1.192411
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Male NA NA NA
## Female 0.8041984 0.8375793 0.8033343
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Nhận xét về Risk Ratio của Biến Gender và Married (Male làm
tham chiếu)
Kết quả của riskratio cho thấy khi “Male” là nhóm tham
chiếu (estimate = 1.00000), tỷ lệ người đã kết hôn ở nữ giới được ước
tính là 1.020026 lần so với nam giới. Điều này có nghĩa
là nữ giới có tỷ lệ kết hôn cao hơn khoảng 2.0% so với
nam giới trong mẫu.Tuy nhiên, khoảng tin cậy 95% cho tỷ lệ rủi ro này
(0.8725618 đến 1.192411) bao gồm giá trị 1. Giá trị
p-value (ví dụ: chi.square = 0.8033343) cũng rất lớn.Các
chỉ số này cùng nhau chỉ ra rằng không có bằng chứng thống kê
đáng kể để kết luận rằng có sự khác biệt về tỷ lệ kết hôn giữa
nam và nữ trong tổng thể.Trong bối cảnh vay tín dụng, điều này hàm ý
rằng giới tính không phải là yếu tố quan trọng trong việc dự
đoán tình trạng hôn nhân, và do đó, không ảnh hưởng đáng kể đến
việc đánh giá khả năng vay tín dụng dựa trên tình trạng hôn nhân.
Biến Student
và Ethnicity
TH1: hạng mục Yes (sinh viên) làm tham chiếu
e2 <- riskratio(k2,rev='b')
e2
## $data
##
## Caucasian Asian African American Total
## Yes 17 13 10 40
## No 182 89 89 360
## Total 199 102 99 400
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Yes 1.0000000 NA NA
## No 0.7578768 0.4865357 1.180545
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Yes NA NA NA
## No 0.2603018 0.5016251 0.5156323
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Nhận xét về Risk Ratio của Biến Student và Ethnicity (Sinh
viên làm tham chiếu) trong bộ dữ liệu Credit:
Kết quả của riskratio cho thấy khi “Yes” (sinh viên) là nhóm tham
chiếu (estimate = 1.00000), tỷ lệ người không phải sinh viên (No) so với
nhóm sinh viên (Yes) được ước tính là 0.7578768 lần khi xét đến phân bố
sắc tộc. Điều này có nghĩa là tỷ lệ người không phải sinh viên thấp hơn
khoảng 24.21% so với tỷ lệ sinh viên, một sự khác biệt có thể có ý nghĩa
đối với hồ sơ vay tín dụng. Tuy nhiên, khoảng tin cậy 95% cho tỷ lệ rủi
ro này là từ 0.4865357 đến 1.180545. Vì khoảng tin cậy này bao gồm giá
trị 1, và giá trị p-value (ví dụ: chi.square = 0.5156323) rất lớn, chúng
ta không có đủ bằng chứng thống kê đáng kể để kết luận rằng có sự khác
biệt có ý nghĩa về tỷ lệ giữa người là sinh viên và không phải sinh viên
dựa trên sắc tộc trong tổng thể. Trong bối cảnh bộ dữ liệu Credit, điều
này hàm ý rằng, mặc dù có những khác biệt về phân bố sắc tộc giữa sinh
viên và phi sinh viên trong mẫu, nhưng sự khác biệt này không đủ mạnh để
khẳng định một mối quan hệ thống kê đáng kể giữa tình trạng sinh viên và
sắc tộc, từ đó không có bằng chứng rõ ràng cho thấy một trong hai biến
này (tình trạng sinh viên hoặc sắc tộc) có thể được sử dụng độc lập để
dự đoán khả năng vay tín dụng của người còn lại.
TH2: hạng mục No (không phải sinh viên) làm tham
chiếu
e3 <- riskratio(k2)
e3
## $data
##
## African American Asian Caucasian Total
## No 89 89 182 360
## Yes 10 13 17 40
## Total 99 102 199 400
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## No 1.000000 NA NA
## Yes 1.130435 0.7673816 1.665251
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## No NA NA NA
## Yes 0.5666488 0.5016251 0.5156323
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Nhận xét về Risk Ratio của Biến Student và Ethnicity (không
phải sinh viên làm tham chiếu) trong bộ dữ liệu Credit:
Để đánh giá mối quan hệ giữa “Student” và “Ethnicity”, chúng ta đã
tiến hành phân tích tỷ lệ rủi ro (risk ratio) với hạng mục “No” (không
phải sinh viên) làm tham chiếu. Tỷ lệ người là sinh viên (Yes) so với
nhóm không phải sinh viên (No) được ước tính là 1.130435 lần. Điều này
có nghĩa là tỷ lệ sinh viên cao hơn khoảng 13.04% so với nhóm không phải
sinh viên khi xét đến phân bố sắc tộc. Tuy nhiên, khoảng tin cậy 95% cho
tỷ lệ rủi ro này là từ 0.7673816 đến 1.665251. Vì khoảng tin cậy này bao
gồm giá trị 1, và giá trị p-value (ví dụ: chi.square = 0.5156323) rất
lớn, chúng ta không có đủ bằng chứng thống kê đáng kể để kết luận rằng
có sự khác biệt có ý nghĩa về tỷ lệ giữa người là sinh viên và không
phải sinh viên dựa trên sắc tộc trong tổng thể. Trong bối cảnh bộ dữ
liệu Credit, điều này hàm ý rằng, mặc dù có vẻ như sinh viên có tỷ lệ
phân bố sắc tộc nhỉnh hơn so với người không phải sinh viên trong mẫu,
nhưng sự khác biệt này không đủ mạnh để khẳng định một mối quan hệ thống
kê đáng kể giữa tình trạng sinh viên và sắc tộc, từ đó không có bằng
chứng rõ ràng cho thấy một trong hai biến này có thể được sử dụng độc
lập để dự đoán khả năng vay tín dụng của người còn lại.
Odd
ratio
Chúng ta sẽ sử dụng odds ratio để phân tích mối liên hệ giữa hai biến
định tính nhằm xác định xem có sự khác biệt đáng kể nào giữa các nhóm
được so sánh hay không.
Biến Gender
và Married
o <- oddsratio(k1)
o
## $data
##
## No Yes Total
## Male 76 117 193
## Female 79 128 207
## Total 155 245 400
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Male 1.000000 NA NA
## Female 1.052341 0.7027552 1.575668
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Male NA NA NA
## Female 0.8041984 0.8375793 0.8033343
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Nhận xét về Odds Ratio của Biến Gender và Married trong bộ dữ
liệu Credit:
Chúng ta sử dụng Odds Ratio để phân tích mối liên hệ giữa giới tính
(Gender) và tình trạng hôn nhân (Married),
nhằm xác định xem có sự khác biệt đáng kể nào giữa các nhóm được so sánh
hay không, đặc biệt trong bối cảnh các yếu tố này có thể ảnh hưởng đến
khả năng vay tín dụng. Kết quả oddsratio(k1) hiển thị khi
“Male” (nam giới) là hạng mục tham chiếu.
Data: Bảng Data trình bày bảng tần số chéo giữa
Gender và Married. Có 117 nam giới đã kết hôn
và 76 nam giới chưa kết hôn (tổng cộng 193 nam). Đối với nữ giới, có 128
người đã kết hôn và 79 người chưa kết hôn (tổng cộng 207 nữ). Tổng số
quan sát là 400. Đây là dữ liệu cơ sở cho việc tính toán Odds
Ratio.
Measure (Odds Ratio with 95% C.I.):
Estimate (Male): 1.00000 - Đây là giá trị tham
chiếu cho nhóm nam giới. Tỷ lệ cược (odds) của nam giới đã kết hôn so
với chưa kết hôn được lấy làm cơ sở để so sánh.
Estimate (Female): 1.052341 - Giá trị này cho
biết tỷ lệ cược để một người nữ đã kết hôn (so với chưa kết hôn) cao gấp
1.052341 lần so với tỷ lệ cược tương tự ở nam giới. Điều này ngụ ý rằng
nữ giới có khả năng đã kết hôn nhỉnh hơn một chút so với nam giới trong
mẫu này. Trong bối cảnh vay tín dụng, nếu tình trạng hôn nhân “đã kết
hôn” được coi là một yếu tố ổn định tài chính, thì sự chênh lệch nhỏ này
có thể không đủ để tạo ra sự ưu tiên đáng kể cho nữ giới so với nam giới
dựa trên yếu tố hôn nhân.
Lower (Female): 0.7027552 và Upper
(Female): 1.575668 - Đây là khoảng tin cậy 95% cho Odds Ratio
của nữ giới so với nam giới. Khoảng này cho biết chúng ta tin tưởng 95%
rằng tỷ lệ cược thực sự của việc nữ giới đã kết hôn so với nam giới
trong tổng thể nằm trong khoảng từ 0.7027552 đến 1.575668.
- Ý nghĩa trong bối cảnh Credit: Vì khoảng tin cậy
này bao gồm giá trị 1 (tỷ lệ cược bằng 1 có nghĩa là không có sự khác
biệt về tỷ lệ cược giữa hai nhóm), nó chỉ ra rằng sự khác biệt về tỷ lệ
cược kết hôn giữa nam và nữ quan sát được trong mẫu (1.052341) không đủ
lớn để có ý nghĩa thống kê ở mức độ tin cậy 95%. Điều này hàm ý rằng,
trong bộ dữ liệu tín dụng này, giới tính không phải là yếu tố dự báo
đáng kể cho tình trạng hôn nhân. Do đó, khi các tổ chức tín dụng đánh
giá khả năng vay dựa trên tình trạng hôn nhân, việc phân biệt đối xử dựa
trên giới tính là không có cơ sở thống kê rõ ràng vì hai biến này không
có mối liên hệ phụ thuộc đáng kể.
p-value (two-sided):
midp.exact (Female): 0.8041984,
fisher.exact (Female): 0.8375793,
chi.square (Female): 0.8033343 - Tất cả các giá trị
p-value này đều rất lớn (đều lớn hơn 0.05).
Ý nghĩa trong bối cảnh Credit: Một
p-value cao như vậy cho thấy không có đủ bằng chứng thống kê để
bác bỏ giả thuyết \(H_0\) rằng không có
mối quan hệ giữa “Gender” và “Married” (tức là chúng độc lập). Điều này
cũng củng cố kết luận rằng, trong bộ dữ liệu Credit, tình trạng hôn nhân
không phụ thuộc vào giới tính. Do đó, các chính sách cho vay dựa trên sự
kết hợp của hai yếu tố này có thể không mang lại lợi thế dự đoán đáng
kể, và việc sử dụng giới tính để suy luận về tình trạng hôn nhân (và từ
đó ảnh hưởng đến quyết định tín dụng) là không có cơ sở thống kê vững
chắc.
Biến Student
và Ethnicity
o1 <- oddsratio(k2)
o1
## $data
##
## African American Asian Caucasian Total
## No 89 89 182 360
## Yes 10 13 17 40
## Total 99 102 199 400
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## No 1.000000 NA NA
## Yes 1.294074 0.5362395 3.212193
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## No NA NA NA
## Yes 0.5666488 0.5016251 0.5156323
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Kết quả oddsratio cho thấy khi nhóm “No” (không phải sinh viên) là
tham chiếu, tỷ lệ cược để một người là sinh viên (Yes) so với không phải
sinh viên là 1.294074 lần. Mặc dù ước tính này cho thấy tỷ lệ cược là
sinh viên cao hơn một chút, khoảng tin cậy 95% cho tỷ lệ cược (0.5362395
đến 3.212193) bao gồm giá trị 1. Kết hợp với p-value lớn (ví dụ:
chi.square = 0.5156323), chúng ta không có đủ bằng chứng thống kê để kết
luận rằng có mối liên hệ đáng kể giữa tình trạng sinh viên và sắc tộc.
Trong bối cảnh bộ dữ liệu Credit, điều này có nghĩa là sự phân bố sắc
tộc không có sự khác biệt thống kê đáng kể giữa sinh viên và người không
phải sinh viên, và do đó, việc sử dụng một trong hai biến này để suy
luận về biến còn lại nhằm đánh giá khả năng vay tín dụng là không có cơ
sở vững chắc.
LS0tDQp0aXRsZTogIk5oaeG7h20gduG7pSB0deG6p24gNCINCmF1dGhvcjogInBubWluaGNoYXUiDQpkYXRlOiAiMjAyNS0wNi0wOCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0aGVtOiAiZGVmYXVsdCINCiAgICB0b2NfZGVwdGg6IDMNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkNCmBgYA0KDQpgYGB7cixlY2hvPUZBTFNFfQ0KbGlicmFyeShEVCkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHN0YXRzKQ0KbGlicmFyeShwc3ljaCkNCmxpYnJhcnkoRGVzY1Rvb2xzKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KHNjYWxlcykNCmxpYnJhcnkoZXBpdG9vbHMpDQpsaWJyYXJ5KEFFUikNCmxpYnJhcnkoZGF0YXJpdW0pDQpsaWJyYXJ5KEVjZGF0KQ0KbGlicmFyeShJU0xSKQ0KYGBgDQoNCiMgKipC4buZIGThu68gbGnhu4d1IENyZWRpdCoqICAgDQoNCkLhu5kgZOG7ryBsaeG7h3UgQ3JlZGl0IGNo4bupYSB0aMO0bmcgdGluIHbhu4Ega2jDoWNoIGjDoG5nIHZheSB0w61uIGThu6VuZyB04burIG3hu5l0IG5nw6JuIGjDoG5nLCB24bubaSBt4bulYyB0acOqdSBjaMOtbmggbMOgIGThu7EgxJFvw6FuIGto4bqjIG7Eg25nIHbhu6EgbuG7oyBj4bunYSBraMOhY2ggaMOgbmcgZOG7sWEgdHLDqm4gY8OhYyDEkeG6t2MgxJFp4buDbSBuaMOibiBraOG6qXUgaOG7jWMgdsOgIHTDoGkgY2jDrW5oIGPhu6dhIGjhu40uIMSQw6J5IGzDoCBt4buZdCBi4buZIGThu68gbGnhu4d1IGzDvSB0xrDhu59uZyDEkeG7gyBuZ2hpw6puIGPhu6l1IHbhu4EgcuG7p2kgcm8gdMOtbiBk4bulbmcsIGjDoG5oIHZpIHZheSBtxrDhu6NuIGPhu6dhIG5nxrDhu51pIHRpw6p1IGTDuW5nLCB2w6AgcGjDom4gdMOtY2ggdMOgaSBjaMOtbmggY8OhIG5ow6JuLiAgIA0KDQpC4buZIGThu68gbGnhu4d1IG7DoHkgY8OzIHThu5VuZyBj4buZbmcgNDAwIHF1YW4gc8OhdCB2w6AgMTEgYmnhur9uLiAgIA0KDQogKkPDoWMgYmnhur9uIMSR4buLbmggdMOtbmggKFF1YWxpdGF0aXZlL0NhdGVnb3JpY2FsIFZhcmlhYmxlcykgbuG7lWkgYuG6rXQ6Kg0KDQoqIGBHZW5kZXJgOiBHaeG7m2kgdMOtbmggY+G7p2Ega2jDoWNoIGjDoG5nIChNYWxlL0ZlbWFsZSkuICAgDQoNCiogYFN0dWRlbnRgOiBUw6xuaCB0cuG6oW5nIHNpbmggdmnDqm4gKFllcy9ObykuIFNpbmggdmnDqm4gdGjGsOG7nW5nIGPDsyBow6BuaCB2aSBjaGkgdGnDqnUgdsOgIHRodSBuaOG6rXAga2jDoWMgYmnhu4d0LiAgIA0KDQoqIGBNYXJyaWVkYDogVMOsbmggdHLhuqFuZyBow7RuIG5ow6JuIChZZXMvTm8pLiBUw6xuaCB0cuG6oW5nIGjDtG4gbmjDom4gY8OzIHRo4buDIOG6o25oIGjGsOG7n25nIMSR4bq/biBraOG6oyBuxINuZyB0w6BpIGNow61uaCB2w6AgcXV54bq/dCDEkeG7i25oIHZheSBtxrDhu6NuLiAgIA0KDQoqIGBFdGhuaWNpdHlgOiBEw6JuIHThu5ljIGPhu6dhIGtow6FjaCBow6BuZyAoQ2F1Y2FzaWFuL0FzaWFuL0FmcmljYW4gQW1lcmljYW4pLiBCaeG6v24gbsOgeSBjw7MgdGjhu4MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4Mga2nhu4NtIHRyYSBz4buxIGtow6FjIGJp4buHdCB0cm9uZyB2aeG7h2MgY+G6pXAgdMOtbiBk4bulbmcgZ2nhu69hIGPDoWMgbmjDs20gZMOibiB04buZYywgaG/hurdjIGxp4buHdSBjw7Mgc+G7sSBwaMOibiBiaeG7h3QgxJHhu5FpIHjhu60gaGF5IGtow7RuZy4gICANCg0KICpDw6FjIGJp4bq/biDEkeG7i25oIGzGsOG7o25nIChRdWFudGl0YXRpdmUvTnVtZXJpY2FsIFZhcmlhYmxlcykgbuG7lWkgYuG6rXQ6Kg0KDQoqIGBJbmNvbWVgOiBUaHUgbmjhuq1wIGjDoG5nIG7Eg20gY+G7p2Ega2jDoWNoIGjDoG5nICh0w61uaCBi4bqxbmcgbmfDoG4gxJHDtCBsYSkuIMSQw6J5IGzDoCBt4buZdCB54bq/dSB04buRIHF1YW4gdHLhu41uZyDhuqNuaCBoxrDhu59uZyDEkeG6v24ga2jhuqMgbsSDbmcgdHLhuqMgbuG7oy4gICANCg0KKiBgTGltaXRgOiBI4bqhbiBt4bupYyB0w61uIGThu6VuZyBj4bunYSBraMOhY2ggaMOgbmcgKHTDrW5oIGLhurFuZyDEkcO0IGxhKS4gICANCg0KKiBgUmF0aW5nYDogxJBp4buDbSB0w61uIGThu6VuZyBj4bunYSBraMOhY2ggaMOgbmcgKHRoxrDhu51uZyBsw6AgbeG7mXQgdGjGsOG7m2MgxJFvIGPhu6dhIHV5IHTDrW4gdMOgaSBjaMOtbmgpLiAgIA0KDQoqIGBDYXJkc2A6IFPhu5EgbMaw4bujbmcgdGjhursgdMOtbiBk4bulbmcgbcOgIGtow6FjaCBow6BuZyDEkWFuZyBz4bufIGjhu691LiAgICANCg0KKiBgQWdlYDogVHXhu5VpIGPhu6dhIGtow6FjaCBow6BuZy4gICANCg0KKiBgRWR1Y2F0aW9uYDogU+G7kSBuxINtIGjhu41jIHbhuqVuIGPhu6dhIGtow6FjaCBow6BuZy4gICANCg0KKiBgQmFsYW5jZWA6IFPhu5EgZMawIG7hu6MgdMOtbiBk4bulbmcgdHJ1bmcgYsOsbmggaMOgbmcgdGjDoW5nIGPhu6dhIGtow6FjaCBow6BuZyAodMOtbmggYuG6sW5nIMSRw7QgbGEpLiDEkMOieSB0aMaw4budbmcgbMOgIGJp4bq/biBwaOG7pSB0aHXhu5ljIGNow61uaCBraGkgZOG7sSDEkW/DoW4ga2jhuqMgbsSDbmcgduG7oSBu4bujIGhv4bq3YyBy4bunaSBybyB0w61uIGThu6VuZy4gICANCg0KDQpgYGB7cixlY2hvPVRSVUV9DQoNCmQgPC0gQ3JlZGl0DQpkYXRhdGFibGUoZCkNCmBgYA0KDQoqICoqQ+G6pXUgdHLDumMgYuG7mSBk4buvIGxp4buHdSoqICAgDQpgYGB7cixlY2hvPVRSVUV9DQpzdHIoZCkNCmBgYA0KICANCiAgQuG7mSBk4buvIGxp4buHdSBDcmVkaXQgxJHGsOG7o2Mgc+G7rSBk4bulbmcgdHJvbmcgbmdoacOqbiBj4bupdSBuw6B5IGNo4bupYSB0aMO0bmcgdGluIGPhu6dhIDQwMCBraMOhY2ggaMOgbmcgdmF5IHTDrW4gZOG7pW5nLCB24bubaSB04buVbmcgY+G7mW5nIDEyIGJp4bq/bi4gQ+G6pXUgdHLDumMgY+G7p2EgYuG7mSBk4buvIGxp4buHdSAoc3RyKGQpKSBjaG8gdGjhuqV5IHPhu7Ega+G6v3QgaOG7o3AgY+G7p2EgY+G6oyBiaeG6v24gxJHhu4tuaCBsxrDhu6NuZyB2w6AgxJHhu4tuaCB0w61uaC4gQ8OhYyBiaeG6v24gxJHhu4tuaCBsxrDhu6NuZyBiYW8gZ+G7k20gSUQsIEluY29tZSwgTGltaXQsIFJhdGluZywgQ2FyZHMsIEFnZSwgRWR1Y2F0aW9uLCB2w6AgQmFsYW5jZSAoxJHhu4F1IGzDoCBraeG7g3Ugc+G7kSBuZ3V5w6puIGhv4bq3YyBz4buRIHRo4buxYyksIGN1bmcgY+G6pXAgdGjDtG5nIHRpbiB24buBIHTDoGkgY2jDrW5oIHbDoCBuaMOibiBraOG6qXUgaOG7jWMuIFRyb25nIGtoaSDEkcOzLCBjw6FjIGJp4bq/biDEkeG7i25oIHTDrW5oIGJhbyBn4buTbSBHZW5kZXIsIFN0dWRlbnQsIE1hcnJpZWQsIHbDoCBFdGhuaWNpdHkgKMSR4buBdSDEkcaw4bujYyDEkeG7i25oIGThuqFuZyBsw6AgeeG6v3UgdOG7kSB24bubaSBjw6FjIGPhuqVwIMSR4buZIHTGsMahbmcg4bupbmcpLCDEkeG6oWkgZGnhu4duIGNobyBjw6FjIMSR4bq3YyDEkWnhu4NtIHBow6JuIGxv4bqhaSBj4bunYSBraMOhY2ggaMOgbmcuIFPhu7EgxJFhIGThuqFuZyB0cm9uZyBj4bqldSB0csO6YyBiaeG6v24gbsOgeSB04bqhbyBu4buBbiB04bqjbmcgduG7r25nIGNo4bqvYyBjaG8gdmnhu4djIHBow6JuIHTDrWNoIHRvw6BuIGRp4buHbiBjw6FjIHnhur91IHThu5Eg4bqjbmggaMaw4bufbmcgxJHhur9uIHLhu6dpIHJvIHTDrW4gZOG7pW5nIHbDoCBow6BuaCB2aSB0w6BpIGNow61uaC4gICANCg0KKiAqKkzhu41jIGPDoWMgYmnhur9uIMSR4buLbmggbMaw4bujbmcgY+G7p2EgYuG7mSBk4buvIGxp4buHdSBDcmVkaXQqKiAgIA0KDQpgYGB7cixlY2hvPVRSVUV9DQpkMSA8LSBzdWJzZXQoZCxzZWxlY3Q9LWMoSW5jb21lLCBMaW1pdCwgUmF0aW5nLCBDYXJkcywgQWdlLCBFZHVjYXRpb24sIEJhbGFuY2UpKQ0KZGF0YXRhYmxlKGQxKQ0KDQpgYGANCg0KKiAqKktp4buDbSB0cmEgZOG7ryBsaeG7h3UgYuG7iyB0aGnhur91KiogICANCg0KYGBge3IsZWNobz1UUlVFfQ0KYSA8LWlzLm5hKGQxKQ0KZGF0YXRhYmxlKGEpDQpzdW0oaXMubmEoZDEpKQ0Kd2hpY2goaXMubmEoZDEpKQ0KYGBgDQoNCiAgxJDhu4MgxJHhuqNtIGLhuqNvIGNo4bqldCBsxrDhu6NuZyBk4buvIGxp4buHdSwgcXXDoSB0csOsbmgga2nhu4NtIHRyYSBk4buvIGxp4buHdSBi4buLIHRoaeG6v3UgKG1pc3NpbmcgZGF0YSkgxJHDoyDEkcaw4bujYyB0aeG6v24gaMOgbmggdHLDqm4gYuG7mSBk4buvIGxp4buHdSBDcmVkaXQuIELhurFuZyBjw6FjaCBz4butIGThu6VuZyBjw6FjIGjDoG0ga2nhu4NtIHRyYSB0cm9uZyBSIG5oxrAgaXMubmEoKSB2w6Agc3VtKGlzLm5hKCkpLCBr4bq/dCBxdeG6oyBjaG8gdGjhuqV5IHRvw6BuIGLhu5kgYuG7mSBk4buvIGxp4buHdSBraMO0bmcgY2jhu6lhIGLhuqV0IGvhu7MgZ2nDoSB0cuG7iyBOQSBuw6BvLiBD4bulIHRo4buDLCB04buVbmcgc+G7kSBnacOhIHRy4buLIHRoaeG6v3UgxJHGsOG7o2MgeMOhYyDEkeG7i25oIGzDoCAwLCDEkeG7k25nIHRo4budaSBraMO0bmcgY8OzIGNo4buJIHPhu5EgbsOgbyDEkcaw4bujYyB0cuG6oyB24buBIGNobyBjw6FjIHbhu4sgdHLDrSBjw7MgZOG7ryBsaeG7h3UgdGhp4bq/dS4gxJBp4buBdSBuw6B5IGto4bqzbmcgxJHhu4tuaCBi4buZIGThu68gbGnhu4d1IENyZWRpdCBsw6AgaG/DoG4gY2jhu4luaCB2w6Aga2jDtG5nIHnDqnUgY+G6p3UgYuG6pXQga+G7syBixrDhu5tjIHjhu60gbMO9IGThu68gbGnhu4d1IHRoaeG6v3UgbsOgbywgZ2nDunAgcXXDoSB0csOsbmggcGjDom4gdMOtY2ggdGnhur9wIHRoZW8gxJHGsOG7o2MgdGjhu7FjIGhp4buHbiB0csOqbiBu4buBbiB04bqjbmcgZOG7ryBsaeG7h3UgxJHDoW5nIHRpbiBj4bqteS4gICANCiAgDQojICoqUGjDom4gdMOtY2ggbcO0IHThuqMgY8OhYyBiaeG6v24gxJHhu4tuaCB0w61uaCoqICAgDQoNCiMjICoqQmnhur9uIEdlbmRlcioqDQoNCiAgVGjhu5FuZyBrw6ogbcO0IHThuqMgYmnhur9uIEdlbmRlciB0aMO0bmcgcXVhIGLhuqNuZyB04bqnbiBz4buRLCB04bqnbiBzdeG6pXQgdsOgIMSR4buTIHRo4buLLiAgIA0KICANCipC4bqjbmcgdOG6p24gc+G7kToqICAgDQoNCmBgYHtyLGVjaG89VFJVRX0NCnRhYmxlKGQxJEdlbmRlcikNCmBgYA0KDQoqQuG6o25nIHThuqduIHN14bqldDoqICAgDQoNCmBgYHtyLGVjaG89VFJVRX0NCmEyIDwtIHRhYmxlKGQxJEdlbmRlcikvc3VtKG5yb3coZDEpKQ0KYTINCmBgYA0KDQpW4bqteSB0cm9uZyBi4buZIGThu68gbGnhu4d1IG7DoHkgY8OzIGByIHRhYmxlKGQxJEdlbmRlcilbMV0vc3VtKG5yb3coZDEpKSoxMDBgXCUgbmFtIHbDoCAgYHIgdGFibGUoZDEkR2VuZGVyKSBbMl0vc3VtKG5yb3coZDEpKSoxMDBgXCUgbuG7ry4gICAgDQoNCirEkOG7kyB0aOG7iyBiaeG7g3UgZGnhu4VuIHThu7cgbOG7hyBwaOG6p24gdHLEg20gZ2nhu5tpIHTDrW5oIGtow6FjaCBow6BuZyB2YXkgdMOtbiBk4bulbmcgdOG7qyBt4buZdCBuZ8OibiBow6BuZzoqICAgDQoNCmBgYHtyLGVjaG89VFJVRX0NCnBpZShhMiwNCiAgICBsYWJlbHMgPSBwYXN0ZShuYW1lcyhhMiksIHJvdW5kKGEyLCAyKSwgIiUiKSwNCiAgICBtYWluID0gIkJp4buDdSDEkeG7kyB0csOybjogVOG7tyBs4buHIEdlbmRlciIpIA0KYGBgDQoNCiogTmjhuq1uIHjDqXQgduG7gSBiaeG6v24gR2VuZGVyIHRyb25nIGLhu5kgZOG7ryBsaeG7h3UgQ3JlZGl0OiAgIA0KDQogICogUGjDom4gdMOtY2ggYmnhur9uIEdlbmRlciAoR2nhu5tpIHTDrW5oKSB0cm9uZyBi4buZIGThu68gbGnhu4d1IGtow6FjaCBow6BuZyB2YXkgdMOtbiBk4bulbmcgY+G7p2EgbmfDom4gaMOgbmcgY2hvIHRo4bqleSBz4buxIHBow6JuIGLhu5UgdMawxqFuZyDEkeG7kWkgxJHhu5NuZyDEkeG7gXUgZ2nhu69hIG5hbSB2w6AgbuG7ry4gQ+G7pSB0aOG7gywgdHJvbmcgdOG7lW5nIHPhu5EgNDAwIGtow6FjaCBow6BuZywgY8OzIDE5MyBraMOhY2ggaMOgbmcgbmFtIHbDoCAyMDcga2jDoWNoIGjDoG5nIG7hu68uICAgDQogIA0KICAqIEtoaSB0w61uaCB0b8OhbiB04bqnbiBzdeG6pXQgdMawxqFuZyDEkeG7kWksIHThu7cgbOG7hyBraMOhY2ggaMOgbmcgbmFtIGNoaeG6v20ga2hv4bqjbmcgNDguMjUlLCB0cm9uZyBraGkga2jDoWNoIGjDoG5nIG7hu68gY2hp4bq/bSA1MS43NSUuIE3hurdjIGTDuSBjw7MgbeG7mXQgc+G7sSBjaMOqbmggbOG7h2NoIG5o4buPLCB24bubaSBz4buRIGzGsOG7o25nIG7hu68gZ2nhu5tpIG5oaeG7gXUgaMahbiBt4buZdCBjaMO6dCwgc+G7sSBwaMOibiBwaOG7kWkgbsOgeSB24bqrbiBjaG8gdGjhuqV5IG5nw6JuIGjDoG5nIMSRYW5nIHBo4bulYyB24bulIG3hu5l0IHThuq1wIGtow6FjaCBow6BuZyBraMOhIGPDom4gYuG6sW5nIHbhu4EgZ2nhu5tpIHTDrW5oLiAgIA0KICANCiAgKiDEkGnhu4F1IG7DoHkgY8OzIMO9IG5naMSpYSBxdWFuIHRy4buNbmcgdHJvbmcgdmnhu4djIMSR4bqjbSBi4bqjbyB0w61uaCDEkeG6oWkgZGnhu4duIGPhu6dhIGThu68gbGnhu4d1IGtoaSBwaMOibiB0w61jaCBow6BuaCB2aSB2YXkgdMOtbiBk4bulbmcgdsOgIHLhu6dpIHJvIHTDrW4gZOG7pW5nLiDEkOG7k25nIHRo4budaSwgbsOzIGPFqW5nIGfhu6NpIG3hu58ga2jhuqMgbsSDbmcga2jDtG5nIGPDsyBz4buxIHRoacOqbiBs4buHY2ggxJHDoW5nIGvhu4MgduG7gSBnaeG7m2kgdMOtbmggdHJvbmcgdOG6rXAga2jDoWNoIGjDoG5nIGhp4buHbiB04bqhaSBj4bunYSBuZ8OibiBow6BuZywgZ2nDunAgY8OhYyBtw7QgaMOsbmggZOG7sSDEkW/DoW4gdMOtbiBk4bulbmcga2jDtG5nIGLhu4sg4bqjbmggaMaw4bufbmcgcXXDoSBuaGnhu4F1IGLhu59pIHnhur91IHThu5EgZ2nhu5tpIHTDrW5oLiAgIA0KICANCg0KIyMgKipCaeG6v24gU3R1ZGVudCoqICAgDQoNClRo4buRbmcga8OqIG3DtCB04bqjIGJp4bq/biBTdHVkZW50IHRow7RuZyBxdWEgYuG6o25nIHThuqduIHPhu5EsIHThuqduIHN14bqldCB2w6AgxJHhu5MgdGjhu4suICAgDQogIA0KKkLhuqNuZyB04bqnbiBz4buROiogICANCg0KYGBge3IsZWNobz1UUlVFfQ0KdGFibGUoZDEkU3R1ZGVudCkNCmBgYA0KDQoqQuG6o25nIHThuqduIHN14bqldDoqICAgDQoNCmBgYHtyLGVjaG89VFJVRX0NCmEzIDwtIHRhYmxlKGQxJFN0dWRlbnQpL3N1bShucm93KGQxKSkNCmEzDQpgYGANCg0KVuG6rXkgdHJvbmcgYuG7mSBk4buvIGxp4buHdSBuw6B5IGPDsyBgciB0YWJsZShkMSRTdHVkZW50KVsxXS9zdW0obnJvdyhkMSkpKjEwMGBcJSBraMO0bmcgcGjhuqNpIHNpbmggdmnDqm4gdsOgICBgciB0YWJsZShkMSRTdHVkZW50KSBbMl0vc3VtKG5yb3coZDEpKSoxMDBgXCUgc2luaCB2acOqbi4gICAgICAgDQogDQoqxJDhu5MgdGjhu4sgYmnhu4N1IGRp4buFbiB04bu3IGzhu4cgcGjhuqduIHRyxINtICBzaW5oIHZpw6puIHZheSB0w61uIGThu6VuZyB04burIG3hu5l0IG5nw6JuIGjDoG5nOiogICANCg0KYGBge3IsZWNobz1UUlVFfQ0KcGllKGEzLA0KICAgIGxhYmVscyA9IHBhc3RlKG5hbWVzKGEzKSwgcm91bmQoYTMsIDIpLCAiJSIpLA0KICAgIG1haW4gPSAiQmnhu4N1IMSR4buTIHRyw7JuOiBU4bu3IGzhu4cgU3R1ZGVudCIpIA0KYGBgDQoNCiogTmjhuq1uIHjDqXQgduG7gSBiaeG6v24gU3R1ZGVudCB0cm9uZyBi4buZIGThu68gbGnhu4d1IENyZWRpdDogICANCg0KICBQaMOibiB0w61jaCBiaeG6v24gU3R1ZGVudCAoVMOsbmggdHLhuqFuZyBzaW5oIHZpw6puKSB0cm9uZyB04bqtcCBk4buvIGxp4buHdSBraMOhY2ggaMOgbmcgdmF5IHTDrW4gZOG7pW5nIGNobyB0aOG6pXkgbeG7mXQgdOG7tyBs4buHIHLhuqV0IG5o4buPIGtow6FjaCBow6BuZyBsw6Agc2luaCB2acOqbi4gQ+G7pSB0aOG7gywgdHJvbmcgdOG7lW5nIHPhu5EgNDAwIGtow6FjaCBow6BuZywgY8OzIHThu5tpIDM2MCBraMOhY2ggaMOgbmcga2jDtG5nIHBo4bqjaSBsw6Agc2luaCB2acOqbiAoTm8pLCBjaGnhur9tIDkwJSB04buVbmcgc+G7kSBt4bqrdS4gTmfGsOG7o2MgbOG6oWksIGNo4buJIGPDsyA0MCBraMOhY2ggaMOgbmcgbMOgIHNpbmggdmnDqm4gKFllcyksIHTGsMahbmcg4bupbmcgduG7m2kgMTAlIGTDom4gc+G7kSBt4bqrdS4gQmnhu4N1IMSR4buTIHRyw7JuIGPDoG5nIGzDoG0gbuG7lWkgYuG6rXQgc+G7sSBjaMOqbmggbOG7h2NoIGzhu5tuIG7DoHksIHbhu5tpIHBo4bqnbiBs4bubbiBiaeG7g3UgxJHhu5MgxJHhuqFpIGRp4buHbiBjaG8gbmjDs20gIktow7RuZyBwaOG6o2kgc2luaCB2acOqbiIuIMSQaeG7gXUgbsOgeSBn4bujaSDDvSBy4bqxbmcgxJHhu5FpIHTGsOG7o25nIGtow6FjaCBow6BuZyBjaMOtbmggY+G7p2EgbmfDom4gaMOgbmcgdHJvbmcgYuG7mSBk4buvIGxp4buHdSBuw6B5IGtow7RuZyBwaOG6o2kgbMOgIHNpbmggdmnDqm4sIHbDoCBjw6FjIHBow6JuIHTDrWNoIHbhu4EgaMOgbmggdmkgdmF5IHTDrW4gZOG7pW5nIGPDsyB0aOG7gyBz4bq9IHThuq1wIHRydW5nIGNo4bunIHnhur91IHbDoG8gbmjDs20ga2jDoWNoIGjDoG5nIGtow7RuZyBwaOG6o2kgc2luaCB2acOqbi4gU+G7sSBwaMOibiBi4buRIG7DoHkgY8OzIHRo4buDIOG6o25oIGjGsOG7n25nIMSR4bq/biBjw6FjIGNoaeG6v24gbMaw4bujYyDEkcOhbmggZ2nDoSBy4bunaSBybyB2w6AgdGnhur9wIHRo4buLIHPhuqNuIHBo4bqpbSB0w61uIGThu6VuZyBj4bunYSBuZ8OibiBow6BuZy4gICANCiAgDQoNCiMjICoqQmnhur9uIE1hcnJpZWQqKiAgIA0KDQpUaOG7kW5nIGvDqiBtw7QgdOG6oyBiaeG6v24gTWFycmllZCB0aMO0bmcgcXVhIGLhuqNuZyB04bqnbiBz4buRLCB04bqnbiBzdeG6pXQgdsOgIMSR4buTIHRo4buLLiAgIA0KICANCipC4bqjbmcgdOG6p24gc+G7kToqICAgDQoNCmBgYHtyLGVjaG89VFJVRX0NCnRhYmxlKGQxJE1hcnJpZWQpDQpgYGANCg0KKkLhuqNuZyB04bqnbiBzdeG6pXQ6KiAgIA0KDQpgYGB7cixlY2hvPVRSVUV9DQphNCA8LSB0YWJsZShkMSRNYXJyaWVkKS9zdW0obnJvdyhkMSkpDQphNA0KYGBgDQoNClbhuq15IHRyb25nIGLhu5kgZOG7ryBsaeG7h3UgbsOgeSBjw7MgYHIgdGFibGUoZDEkTWFycmllZClbMV0vc3VtKG5yb3coZDEpKSoxMDBgXCUgY2jGsGEga+G6v3QgaMahbiB2w6AgIGByIHRhYmxlKGQxJE1hcnJpZWQpIFsyXS9zdW0obnJvdyhkMSkpKjEwMGBcJSDEkcOjIGvhur90IGjDtG4uIA0KKsSQ4buTIHRo4buLIGJp4buDdSBkaeG7hW4gdOG7tyBs4buHIHBo4bqnbiB0csSDbSAgdMOsbmggdHLhuqFuZyBow7RuIG5ow6JuIGPhu6dhIGtow6FjaCBow6BuZyB2YXkgdMOtbiBk4bulbmcgdOG7qyBt4buZdCBuZ8OibiBow6BuZzoqICAgDQoNCmBgYHtyLGVjaG89VFJVRX0NCnBpZShhNCwNCiAgICBsYWJlbHMgPSBwYXN0ZShuYW1lcyhhNCksIHJvdW5kKGE0LCAyKSwgIiUiKSwNCiAgICBtYWluID0gIkJp4buDdSDEkeG7kyB0csOybjogVOG7tyBs4buHIE1hcnJpZWQiKSANCmBgYA0KDQoqIE5o4bqtbiB4w6l0IHbhu4EgYmnhur9uIE1hcnJpZWQgdHJvbmcgYuG7mSBk4buvIGxp4buHdSBDcmVkaXQ6ICAgDQoNCiAgROG7sWEgdHLDqm4ga+G6v3QgcXXhuqMgcGjDom4gdMOtY2ggYmnhur9uICJNYXJyaWVkIiAoVMOsbmggdHLhuqFuZyBow7RuIG5ow6JuKSB04burIGLhu5kgZOG7ryBsaeG7h3UgQ3JlZGl0LCBjaMO6bmcgdGEgdGjhuqV5IHLhurFuZyB0cm9uZyBz4buRIG5o4buvbmcga2jDoWNoIGjDoG5nIHZheSB0w61uIGThu6VuZywgbmjDs20gxJHDoyBr4bq/dCBow7RuIGNoaeG6v20gdOG7tyBs4buHIGzhu5tuIGjGoW4gKDYxLjI1JSkgc28gduG7m2kgbmjDs20gY2jGsGEga+G6v3QgaMO0biAoMzguNzUlKSwgxJHGsOG7o2MgdGjhu4MgaGnhu4duIHLDtSByw6BuZyBxdWEgYuG6o25nIHThuqduIHPhu5EsIHThuqduIHN14bqldCB2w6AgYmnhu4N1IMSR4buTIHRyw7JuLiDEkGnhu4F1IG7DoHkgY8OzIHRo4buDIGfhu6NpIMO9IHLhurFuZyBjw6FjIHThu5UgY2jhu6ljIHTDrW4gZOG7pW5nIGPDsyB0aOG7gyBjw7MgeHUgaMaw4bubbmcgxrB1IHRpw6puIGhv4bq3YyDEkcOhbmggZ2nDoSBjYW8gaMahbiDEkeG7kWkgduG7m2kgY8OhYyBjw6EgbmjDom4gxJHDoyBr4bq/dCBow7RuIGtoaSB4w6l0IGR1eeG7h3Qga2hv4bqjbiB2YXksIGPDsyB0aOG7gyBkbyBnaeG6oyDEkeG7i25oIHbhu4Egc+G7sSDhu5VuIMSR4buLbmggdMOgaSBjaMOtbmggdsOgIHRyw6FjaCBuaGnhu4dtIGNhbyBoxqFuLiAgICAgDQogIA0KDQojIyAqKkJp4bq/biBFdGhuaWNpdHkqKiAgICANCiAgDQpUaOG7kW5nIGvDqiBtw7QgdOG6oyBiaeG6v24gRXRobmljaXR5IHRow7RuZyBxdWEgYuG6o25nIHThuqduIHPhu5EsIHThuqduIHN14bqldCB2w6AgxJHhu5MgdGjhu4suICAgDQogIA0KKkLhuqNuZyB04bqnbiBz4buROiogICANCg0KYGBge3IsZWNobz1UUlVFfQ0KdGFibGUoZDEkRXRobmljaXR5KQ0KYGBgDQoNCipC4bqjbmcgdOG6p24gc3XhuqV0OiogICANCg0KYGBge3IsZWNobz1UUlVFfQ0KYTUgPC0gdGFibGUoZDEkRXRobmljaXR5KS9zdW0obnJvdyhkMSkpDQphNQ0KYGBgDQogVuG6rXkgdHJvbmcgYuG7mSBk4buvIGxp4buHdSBuw6B5IGPDsyBgciB0YWJsZShkMSRFdGhuaWNpdHkpWzFdL3N1bShucm93KGQxKSkqMTAwYFwlIEFmcmljYW4gQW1lcmljYW4gdsOgICBgciB0YWJsZShkMSRFdGhuaWNpdHkpIFsyXS9zdW0obnJvdyhkMSkpKjEwMGBcJSBBc2lhbiwgYHIgdGFibGUoZDEkRXRobmljaXR5KSBbM10vc3VtKG5yb3coZDEpKSoxMDBgXCUgQ2F1Y2FzaWFuLiAgICAgDQogDQoqxJDhu5MgdGjhu4sgYmnhu4N1IGRp4buFbiB04bu3IGzhu4cgcGjhuqduIHRyxINtICB0w6xuaCB0cuG6oW5nIGTDom4gdOG7mWMgY+G7p2Ega2jDoWNoIGjDoG5nIHZheSB0w61uIGThu6VuZyB04burIG3hu5l0IG5nw6JuIGjDoG5nOiogICANCg0KYGBge3IsZWNobz1UUlVFfQ0KcGllKGE1LA0KICAgIGxhYmVscyA9IHBhc3RlKG5hbWVzKGE1KSwgcm91bmQoYTUsIDIpLCAiJSIpLA0KICAgIG1haW4gPSAiQmnhu4N1IMSR4buTIHRyw7JuOiBU4bu3IGzhu4cgRXRobmljaXR5IikgDQpgYGANCg0KKiBOaOG6rW4geMOpdCB24buBIGJp4bq/biBFdGhuaWNpdHkgdHJvbmcgYuG7mSBk4buvIGxp4buHdSBDcmVkaXQ6ICAgIA0KDQogIEThu7FhIHRyw6puIGPDoWMga+G6v3QgcXXhuqMgcGjDom4gdMOtY2ggYmnhur9uICJFdGhuaWNpdHkiIChEw6JuIHThu5ljKSB04burIGLhu5kgZOG7ryBsaeG7h3UgQ3JlZGl0LCB0YSBjw7MgdGjhu4Mgbmjhuq1uIHRo4bqleSByw7Ugc+G7sSBwaMOibiBi4buRIGtow7RuZyDEkeG7k25nIMSR4buBdSB24buBIGTDom4gdOG7mWMgdHJvbmcgc+G7kSBjw6FjIGtow6FjaCBow6BuZyB2YXkgdMOtbiBk4bulbmcuIEPhu6UgdGjhu4MsIG5ow7NtIENhdWNhc2lhbiBjaGnhur9tIHThu7cgbOG7hyDDoXAgxJHhuqNvIHbhu5tpIDQ5Ljc1JSAoZ+G6p24gbeG7mXQgbuG7rWEpLCB0cm9uZyBraGkgbmjDs20gQXNpYW4gY2hp4bq/bSAyNS41JSB2w6AgQWZyaWNhbiBBbWVyaWNhbiBjaGnhur9tIDI0Ljc1JS4gU+G7sSBjaMOqbmggbOG7h2NoIMSRw6FuZyBr4buDIG7DoHkgY8OzIHRo4buDIGNobyB0aOG6pXkgbeG7mXQgeHUgaMaw4bubbmcgdGnhu4FtIOG6qW4gdHJvbmcgdmnhu4djIGPhuqVwIHTDrW4gZOG7pW5nLCBuxqFpIG3DoCBjw6FjIHThu5UgY2jhu6ljIHTDoGkgY2jDrW5oIGPDsyB0aOG7gyBjw7Mgbmhp4buBdSBraMOhY2ggaMOgbmcgdGh14buZYyBuaMOzbSBDYXVjYXNpYW4gaMahbiwgaG/hurdjIGPDoWMgY2jDrW5oIHPDoWNoL3Rpw6p1IGNow60geMOpdCBkdXnhu4d0IGPDsyB0aOG7gyB2w7QgdMOsbmggZOG6q24gxJHhur9uIHPhu7EgcGjDom4gYuG7lSBkw6JuIHThu5ljIG5oxrAgduG6rXkuICAgICANCiAgDQojICoqxq/hu5tjIGzGsOG7o25nIGtob+G6o25nIHbDoCBraeG7g20gxJHhu4tuaCBnaeG6oyB0aHV54bq/dCB04bu3IGzhu4cqKiAgIA0KDQojIyAqKkJp4bq/biBHZW5kZXIqKiAgIA0KDQogICAqKljDoWMgxJHhu4tuaCBo4bqhbmcgbeG7pWMgcXVhbiB0w6JtKio6IG5ow7NtIG5nxrDhu51pIGPDsyBnaeG7m2kgdMOtbmggbuG7ryAoRmVtYWxlKSB0cm9uZyBiaeG6v24gR2VuZGVyLiAgICAgDQogICANCiAgICoqxq/hu5tjIGzGsOG7o25nIGtob+G6o25nIHRpbiBj4bqteSoqOiDGsOG7m2MgbMaw4bujbmcgdOG7tyBs4buHIG5nxrDhu51pIGPDsyBnaeG7m2kgdMOtbmggbuG7ryB0cm9uZyB04buVbmcgdGjhu4MgduG7m2kgxJHhu5kgdGluIGPhuq15IDk1JS4gICANCiAgIA0KYGBge3IsZWNobz1UUlVFfQ0KI3Phu5EgbMaw4bujbmcgcXVhbiBzw6F0IGPhu6dhIGjhuqFuZyBt4bulYyBGZW1hbGUNCmIxIDwtIHN1bShkMSRHZW5kZXIgPT0gIkYiKQ0KI1Thu5VuZyBz4buRIHF1YW4gc8OhdCANCnRvdGFsIDwtIG5yb3coZDEpIA0KIyDGsOG7m2MgbMaw4bujbmcNCnByb3AudGVzdChiMSwgdG90YWwsIGNvbmYubGV2ZWwgPSAwLjk1KQ0KYGBgDQogICAgROG7sWEgdHLDqm4ga+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggdOG7tyBs4buHIDEgbeG6q3UgduG7m2kgaGnhu4d1IGNo4buJbmggbGnDqm4gdOG7pWMsIHRhIGPDsyB0aOG7gyBuaOG6rW4gdGjhuqV5IHLhurFuZyB04bu3IGzhu4cgbmfGsOG7nWkgY8OzIGdp4bubaSB0w61uaCBu4buvIHRyb25nIHThu5VuZyB0aOG7gyBy4bqldCB0aOG6pXAsIHbhu5tpIMaw4bubYyB0w61uaCB04bu3IGzhu4cgbeG6q3UgKHApIGLhurFuZyAwLiBLaG/huqNuZyB0aW4gY+G6rXkgOTUlIGNobyB04bu3IGzhu4cgdGjhu7FjIGPhu6dhIG7hu68gZ2nhu5tpIGzDoCB04burIDAuMDAwMDAwIMSR4bq/biAwLjAxMTg1OC4gR2nDoSB0cuG7iyBwLXZhbHVlIG5o4buPIGjGoW4gMi4yZS0xNiBjaG8gdGjhuqV5IHPhu7Ega2jDoWMgYmnhu4d0IMSRw6FuZyBr4buDIHNvIHbhu5tpIGdp4bqjIHRodXnhur90IGtow7RuZyAodOG7tyBs4buHIGLhurFuZyAwLjUpLCBraMO0bmcgY8OzIMSR4bunIGLhurFuZyBjaOG7qW5nIHRo4buRbmcga8OqIMSR4buDIGvhur90IGx14bqtbiBy4bqxbmcgdOG7tyBs4buHIG7hu68gbMOgIDAuNSB2w6Aga2jhurNuZyDEkeG7i25oIHThu7cgbOG7hyBu4buvIHRo4buxYyBz4buxIGtow6FjIDAuNSwgY+G7pSB0aOG7gyBsw6AgZ+G6p24gYuG6sW5nIDAuICAgDQoNCiAgKipLaeG7g20gxJHhu4tuaCBnaeG6oyB0aHV54bq/dCB04bu3IGzhu4cqKg0KICANCiAgxJDhurd0IGdp4bqjIHRodXnhur90OiAgIA0KICANCiAgICQkDQpcYmVnaW57Y2FzZXN9IA0KSF8wOiBcdGV4dHtU4bu3IGzhu4cgbmfGsOG7nWkgY8OzIGdp4bubaSB0w61uaCBu4buvIHRyb25nIHThu5VuZyB0aOG7gyBsw6AgNDAlLn0gXFwNCkhfMTogXHRleHR7VOG7tyBs4buHIG5nxrDhu51pIGPDsyAgZ2nhu5tpIHTDrW5oIG7hu68gdHJvbmcgdOG7lW5nIHRo4buDIGzDoCBraMOhYyA0MCUufQ0KXGVuZHtjYXNlc30NCiAgJCQNCmBgYHtyLGVjaG89VFJVRX0NCiNLaeG7g20gxJHhu4tuaCBoYWkgcGjDrWENCnByb3AudGVzdChiMSwgdG90YWwsIHA9MC40LCBhbHRlcm5hdGl2ZSA9ICJ0d28uc2lkZWQiKQ0KYGBgDQoNCkThu7FhIHRyw6puIGvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGdp4bqjIHRodXnhur90IHThu7cgbOG7hyBoYWkgcGjDrWEsIHbhu5tpIGdp4bqjIHRodXnhur90ICRIXzAkIGzDoCB04bu3IGzhu4cgbmfGsOG7nWkgY8OzIGdp4bubaSB0w61uaCBu4buvIHRyb25nIHThu5VuZyB0aOG7gyBsw6AgNDAlIChwPTAuNCkgdsOgIGdp4bqjIHRodXnhur90ICRIXzEkIGzDoCB04bu3IGzhu4cgbsOgeSBraMOhYyA0MCUsIHRhIGPDsyBjw6FjIGvhur90IHF14bqjIHNhdTogICANCg0KKiAqKkdpw6EgdHLhu4sgcC12YWx1ZSoqIHLhuqV0IG5o4buPIChgPDIuMmUtMTZgKSwgdGjhuqVwIGjGoW4gxJHDoW5nIGvhu4Mgc28gduG7m2kgbeG7qWMgw70gbmdoxKlhIHRow7RuZyB0aMaw4budbmcgKHbDrSBk4bulOiAwLjA1KS4gxJBp4buBdSBuw6B5IGN1bmcgY+G6pXAgYuG6sW5nIGNo4bupbmcgbeG6oW5oIG3hur0gxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkLiAgIA0KDQoqICoqVOG7tyBs4buHIG3huqt1IMaw4bubYyB0w61uaCoqIChwKSBsw6AgMCwgY2hvIHRo4bqleSB0cm9uZyBt4bqrdSBraOG6o28gc8OhdCBraMO0bmcgY8OzIG5nxrDhu51pIG1hbmcgZ2nhu5tpIHTDrW5oIG7hu68gbsOgby4gICAgDQoNCiogKipLaG/huqNuZyB0aW4gY+G6rXkgOTUlKiogY2hvIHThu7cgbOG7hyB0aOG7sWMgY+G7p2EgbmfGsOG7nWkgY8OzIGdp4bubaSB0w61uaCBu4buvIGzDoCB04burIDAuMDAwMDAwIMSR4bq/biAwLjAxMTg1OC4gS2hv4bqjbmcgbsOgeSBraMO0bmcgY2jhu6lhIGdpw6EgdHLhu4sgMC40ICh04bupYyA0MCUpLCBjw6BuZyBraOG6s25nIMSR4buLbmggdmnhu4djIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJC4gICANCg0KVMOzbSBs4bqhaSwgY8OzIMSR4bunIGLhurFuZyBjaOG7qW5nIHRo4buRbmcga8OqIMSR4buDIGvhur90IGx14bqtbiBy4bqxbmcgdOG7tyBs4buHIG5nxrDhu51pIGPDsyBnaeG7m2kgdMOtbmggbuG7ryB0cm9uZyB04buVbmcgdGjhu4Mga2jDoWMgNDAlLCB2w6AgdGjhu7FjIHThur8gdOG7tyBs4buHIG7DoHkgcuG6pXQgdGjhuqVwLCBn4bqnbiBuaMawIGLhurFuZyAwLiAgICANCg0KIyMgKipCaeG6v24gU3R1ZGVudCoqICAgDQoNCiAgICoqWMOhYyDEkeG7i25oIGjhuqFuZyBt4bulYyBxdWFuIHTDom0qKjogbmjDs20gbmfGsOG7nWkgbMOgIHNpbmggdmnDqm4gKFllcykgdHJvbmcgYmnhur9uIFN0dWRlbnQuICAgICANCiAgIA0KICAgKirGr+G7m2MgbMaw4bujbmcga2hv4bqjbmcgdGluIGPhuq15Kio6IMaw4bubYyBsxrDhu6NuZyB04bu3IGzhu4cgbmfGsOG7nWkgbMOgIHNpbmggdmnDqm4gdHJvbmcgdOG7lW5nIHRo4buDIHbhu5tpIMSR4buZIHRpbiBj4bqteSA5NSUuICAgDQogICANCmBgYHtyLGVjaG89VFJVRX0NCiNz4buRIGzGsOG7o25nIHF1YW4gc8OhdCBj4bunYSBo4bqhbmcgbeG7pWMgWWVzDQpiMiA8LSBzdW0oZDEkU3R1ZGVudCA9PSAnWWVzJykNCg0KIyDGsOG7m2MgbMaw4bujbmcNCnByb3AudGVzdChiMiwgdG90YWwsIGNvbmYubGV2ZWwgPSAwLjk1KQ0KYGBgDQogICAgROG7sWEgdHLDqm4ga+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggdOG7tyBs4buHIDEgbeG6q3UgduG7m2kgaGnhu4d1IGNo4buJbmggbGnDqm4gdOG7pWMgY2hvIGJp4bq/biAiU3R1ZGVudCIsIHThu7cgbOG7hyBuZ8aw4budaSBsw6Agc2luaCB2acOqbiB0cm9uZyBt4bqrdSDEkcaw4bujYyDGsOG7m2MgdMOtbmggbMOgIDEwJS4gVuG7m2kgxJHhu5kgdGluIGPhuq15IDk1JSwga2hv4bqjbmcgdGluIGPhuq15IGNobyB04bu3IGzhu4cgdGjhu7FjIGPhu6dhIHNpbmggdmnDqm4gdHJvbmcgdOG7lW5nIHRo4buDIGzDoCB04burIDcuMzIlIMSR4bq/biAxMy40NyUuIEdpw6EgdHLhu4sgcC12YWx1ZSBuaOG7jyBoxqFuIDIuMmUtMTYgY3VuZyBj4bqlcCBi4bqxbmcgY2jhu6luZyBt4bqhbmggbeG6vSDEkeG7gyBr4bq/dCBsdeG6rW4gcuG6sW5nIHThu7cgbOG7hyBuZ8aw4budaSBsw6Agc2luaCB2acOqbiB0cm9uZyB04buVbmcgdGjhu4Mga2jDoWMgNTAlIHbDoCB0aOG7sWMgdOG6vyB04bu3IGzhu4cgbsOgeSB0aOG6pXAgaMahbiDEkcOhbmcga+G7gyBzbyB24bubaSA1MCUuICAgICAgDQoNCiAgKipLaeG7g20gxJHhu4tuaCBnaeG6oyB0aHV54bq/dCB04bu3IGzhu4cqKg0KICANCiAgxJDhurd0IGdp4bqjIHRodXnhur90OiAgIA0KICANCiAgICQkDQpcYmVnaW57Y2FzZXN9IA0KSF8wOiBcdGV4dHtU4bu3IGzhu4cgbmfGsOG7nWkgbMOgIHNpbmggdmnDqm4gdHJvbmcgdOG7lW5nIHRo4buDIGzDoCA1JS59IFxcDQpIXzE6IFx0ZXh0e1Thu7cgbOG7hyBuZ8aw4budaSBsw6Agc2luaCB2acOqbiB0cm9uZyB04buVbmcgdGjhu4MgbMOgIGtow6FjIDUlLn0NClxlbmR7Y2FzZXN9DQogICQkDQpgYGB7cixlY2hvPVRSVUV9DQojS2nhu4NtIMSR4buLbmggaGFpIHBow61hDQpwcm9wLnRlc3QoYjIsIHRvdGFsLCBwPTAuMDUsIGFsdGVybmF0aXZlID0gInR3by5zaWRlZCIpDQpgYGANCg0KICAgIEThu7FhIHRyw6puIGvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGdp4bqjIHRodXnhur90IHThu7cgbOG7hyBoYWkgcGjDrWEgY2hvIGJp4bq/biAiU3R1ZGVudCIsIHbhu5tpIGdp4bqjIHRodXnhur90ICRIXzAkIGzDoCB04bu3IGzhu4cgbmfGsOG7nWkgbMOgIHNpbmggdmnDqm4gdHJvbmcgdOG7lW5nIHRo4buDIGzDoCA1JSAocD0wLjA1KSB2w6AgZ2nhuqMgdGh1eeG6v3QgJEhfMSQgbMOgIHThu7cgbOG7hyBuw6B5IGtow6FjIDUlLCB0YSBjw7MgZ2nDoSB0cuG7iyBwLXZhbHVlIGzDoCBgNy42OTFlLTA2YC4gR2nDoSB0cuG7iyBwLXZhbHVlIG7DoHkgcuG6pXQgbmjhu48gKG5o4buPIGjGoW4gMC4wNSksIGN1bmcgY+G6pXAgYuG6sW5nIGNo4bupbmcgbeG6oW5oIG3hur0gxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSB04bu3IGzhu4cgbmfGsOG7nWkgbMOgIHNpbmggdmnDqm4gdHJvbmcgdOG7lW5nIHRo4buDIGtow7RuZyBwaOG6o2kgbMOgIDUlLiDGr+G7m2MgdMOtbmggKip04bu3IGzhu4cgbeG6q3UqKiBsw6AgMC4xICh04bupYyAxMCUpLCB2w6AgKipraG/huqNuZyB0aW4gY+G6rXkgOTUlKiogbMOgIHThu6sgMC4wNzMyMjE1IMSR4bq/biAwLjEzNDcwNzcsIGtow7RuZyBjaOG7qWEgZ2nDoSB0cuG7iyAwLjA1LiDEkGnhu4F1IG7DoHkgY+G7p25nIGPhu5Ega+G6v3QgbHXhuq1uIHLhurFuZyB04bu3IGzhu4cgc2luaCB2acOqbiB0aOG7sWMgdOG6vyBjYW8gaMahbiDEkcOhbmcga+G7gyBzbyB24bubaSA1JS4gICANCg0KIyMgKipCaeG6v24gTWFycmllZCoqICAgDQoNCiAgICoqWMOhYyDEkeG7i25oIGjhuqFuZyBt4bulYyBxdWFuIHTDom0qKjogbmjDs20gbmfGsOG7nWkgxJHDoyBr4bq/dCBow7RuIChZZXMpIHRyb25nIGJp4bq/biBNYXJyaWVkLiAgICAgDQogICANCiAgICoqxq/hu5tjIGzGsOG7o25nIGtob+G6o25nIHRpbiBj4bqteSoqOiDGsOG7m2MgbMaw4bujbmcgdOG7tyBs4buHIG5nxrDhu51pIMSRw6Mga+G6v3QgaMO0biB0cm9uZyB04buVbmcgdGjhu4MgduG7m2kgxJHhu5kgdGluIGPhuq15IDk1JS4gICANCiAgIA0KYGBge3IsZWNobz1UUlVFfQ0KI3Phu5EgbMaw4bujbmcgcXVhbiBzw6F0IGPhu6dhIGjhuqFuZyBt4bulYyBZZXMNCmIzIDwtIHN1bShkMSRNYXJyaWVkID09ICdZZXMnKQ0KDQojIMaw4bubYyBsxrDhu6NuZw0KcHJvcC50ZXN0KGIzLCB0b3RhbCwgY29uZi5sZXZlbCA9IDAuOTUpDQpgYGANCiAgICBE4buxYSB0csOqbiBr4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCB04bu3IGzhu4cgMSBt4bqrdSB24bubaSBoaeG7h3UgY2jhu4luaCBsacOqbiB04bulYyBjaG8gYmnhur9uICJNYXJyaWVkIiwgdGEgxJHDoyDGsOG7m2MgbMaw4bujbmcgdOG7tyBs4buHIG5nxrDhu51pIMSRw6Mga+G6v3QgaMO0biAoWWVzKSB0cm9uZyB04buVbmcgdGjhu4MgduG7m2kgxJHhu5kgdGluIGPhuq15IDk1JS4gVOG7tyBs4buHIG3huqt1IMaw4bubYyB0w61uaCAocCkgbMOgIDAuNjEyNSwgdOG7qWMgbMOgIDYxLjI1JSBz4buRIG5nxrDhu51pIHRyb25nIG3huqt1IMSRw6Mga+G6v3QgaMO0bi4gS2hv4bqjbmcgdGluIGPhuq15IDk1JSBjaG8gdOG7tyBs4buHIHRo4buxYyBj4bunYSBuZ8aw4budaSDEkcOjIGvhur90IGjDtG4gdHJvbmcgdOG7lW5nIHRo4buDIGzDoCB04burIDAuNTYyNjM2OSAoa2hv4bqjbmcgNTYuMjYlKSDEkeG6v24gMC42NjAxNjcxIChraG/huqNuZyA2Ni4wMiUpLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSBjaMO6bmcgdGEgdOG7sSB0aW4gOTUlIHLhurFuZyB04bu3IGzhu4cgbmfGsOG7nWkgxJHDoyBr4bq/dCBow7RuIHRyb25nIHThu5VuZyB0aOG7gyBu4bqxbSB0cm9uZyBraG/huqNuZyBuw6B5LiBHacOhIHRy4buLIHAtdmFsdWUgbMOgIDguNTg3ZS0wNiwgcuG6pXQgbmjhu48gKG5o4buPIGjGoW4gMC4wNSksIGN1bmcgY+G6pXAgYuG6sW5nIGNo4bupbmcgbeG6oW5oIG3hur0gxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90IGtow7RuZyAobnVsbCBwcm9iYWJpbGl0eSAwLjUpLCB04bupYyBsw6AgdOG7tyBs4buHIG5nxrDhu51pIMSRw6Mga+G6v3QgaMO0biB0cm9uZyB04buVbmcgdGjhu4Mga2jDoWMgMC41LiBL4bq/dCBxdeG6oyBuw6B5IG5o4bqldCBxdcOhbiB24bubaSDGsOG7m2MgdMOtbmggdOG7tyBs4buHIG3huqt1LCBjaG8gdGjhuqV5IHThu7cgbOG7hyBuZ8aw4budaSDEkcOjIGvhur90IGjDtG4gdGjhu7FjIHPhu7EgY2FvIGjGoW4gxJHDoW5nIGvhu4Mgc28gduG7m2kgNTAlLiAgICAgICAgIA0KDQogICoqS2nhu4NtIMSR4buLbmggZ2nhuqMgdGh1eeG6v3QgdOG7tyBs4buHKioNCiAgDQogIMSQ4bq3dCBnaeG6oyB0aHV54bq/dDogICANCiAgDQogICAkJA0KXGJlZ2lue2Nhc2VzfSANCkhfMDogXHRleHR7VOG7tyBs4buHIG5nxrDhu51pIMSRw6Mga+G6v3QgaMO0biB0cm9uZyB04buVbmcgdGjhu4MgbMOgIDgwJS59IFxcDQpIXzE6IFx0ZXh0e1Thu7cgbOG7hyBuZ8aw4budaSDEkcOjIGvhur90IGjDtG4gdHJvbmcgdOG7lW5nIHRo4buDIGzDoCBraMOhYyA4MCUufQ0KXGVuZHtjYXNlc30NCiAgJCQNCmBgYHtyLGVjaG89VFJVRX0NCiNLaeG7g20gxJHhu4tuaCBoYWkgcGjDrWENCnByb3AudGVzdChiMywgdG90YWwsIHA9MC44LCBhbHRlcm5hdGl2ZSA9ICJ0d28uc2lkZWQiKQ0KYGBgDQoNCiAgICBE4buxYSB0csOqbiBr4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBnaeG6oyB0aHV54bq/dCB04bu3IGzhu4cgaGFpIHBow61hIGNobyBiaeG6v24gIk1hcnJpZWQiLCB24bubaSBnaeG6oyB0aHV54bq/dCAkSF8wJCBsw6AgdOG7tyBs4buHIG5nxrDhu51pIMSRw6Mga+G6v3QgaMO0biB0cm9uZyB04buVbmcgdGjhu4MgbMOgIDgwJSAocD0wLjgpIHbDoCBnaeG6oyB0aHV54bq/dCAkSF8xJCBsw6AgdOG7tyBs4buHIG7DoHkga2jDoWMgODAlLCB0YSBjw7MgZ2nDoSB0cuG7iyBwLXZhbHVlIG5o4buPIGjGoW4gYDIuMmUtMTZgLiBHacOhIHRy4buLIHAtdmFsdWUgbsOgeSBj4buxYyBr4buzIG5o4buPLCBjdW5nIGPhuqVwIGLhurFuZyBjaOG7qW5nIG3huqFuaCBt4bq9IMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJC4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgdOG7tyBs4buHIG5nxrDhu51pIMSRw6Mga+G6v3QgaMO0biB0cm9uZyB04buVbmcgdGjhu4Mga2jDtG5nIHBo4bqjaSBsw6AgODAlLiAqKsav4bubYyB0w61uaCB04bu3IGzhu4cgbeG6q3UqKiBsw6AgMC42MTI1ICh04bupYyA2MS4yNSUpLCB2w6AgKipraG/huqNuZyB0aW4gY+G6rXkgOTUlKiogbMOgIHThu6sgMC41NjI2MzY5IMSR4bq/biAwLjY2MDE2NzEsIGtow7RuZyBjaOG7qWEgZ2nDoSB0cuG7iyAwLjguIMSQaeG7gXUgbsOgeSBj4bunbmcgY+G7kSBr4bq/dCBsdeG6rW4gcuG6sW5nIHThu7cgbOG7hyBuZ8aw4budaSDEkcOjIGvhur90IGjDtG4gdGjhu7FjIHThur8gdGjhuqVwIGjGoW4gxJHDoW5nIGvhu4Mgc28gduG7m2kgODAlLiAgICAgIA0KDQojIyAqKkJp4bq/biBFdGhuaWNpdHkqKiAgIA0KDQogICAqKljDoWMgxJHhu4tuaCBo4bqhbmcgbeG7pWMgcXVhbiB0w6JtKio6IG5ow7NtIG5nxrDhu51pIMSR4bq/biB04burIEFzaWFuIHRyb25nIGJp4bq/biBFdGhuaWNpdHkuICAgICANCiAgIA0KICAgKirGr+G7m2MgbMaw4bujbmcga2hv4bqjbmcgdGluIGPhuq15Kio6IMaw4bubYyBsxrDhu6NuZyB04bu3IGzhu4cgbmfGsOG7nWkgxJHhur9uIHThu6sgQXNpYW4gdHJvbmcgdOG7lW5nIHRo4buDIHbhu5tpIMSR4buZIHRpbiBj4bqteSA5NSUuICAgDQogICANCmBgYHtyLGVjaG89VFJVRX0NCiNz4buRIGzGsOG7o25nIHF1YW4gc8OhdCBj4bunYSBo4bqhbmcgbeG7pWMgQXNpYW4NCmI0IDwtIHN1bShkMSRFdGhuaWNpdHkgPT0gJ0FzaWFuJykNCg0KIyDGsOG7m2MgbMaw4bujbmcNCnByb3AudGVzdChiNCwgdG90YWwsIGNvbmYubGV2ZWwgPSAwLjk1KQ0KYGBgDQogICAgROG7sWEgdHLDqm4ga+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggdOG7tyBs4buHIDEgbeG6q3UgduG7m2kgaGnhu4d1IGNo4buJbmggbGnDqm4gdOG7pWMgY2hvIGJp4bq/biAiRXRobmljaXR5IiwgdOG7tyBs4buHIG5nxrDhu51pIMSR4bq/biB04burIEFzaWFuIHRyb25nIG3huqt1IMSRxrDhu6NjIMaw4bubYyB0w61uaCBsw6AgMC4yNTUgKHThu6ljIDI1LjUlKS4gVuG7m2kgxJHhu5kgdGluIGPhuq15IDk1JSwga2hv4bqjbmcgdGluIGPhuq15IGNobyB04bu3IGzhu4cgdGjhu7FjIGPhu6dhIG5nxrDhu51pIMSR4bq/biB04burIEFzaWFuIHRyb25nIHThu5VuZyB0aOG7gyBsw6AgdOG7qyAwLjIxMzU4NjYgKGtob+G6o25nIDIxLjM2JSkgxJHhur9uIDAuMzAxMjEwMCAoa2hv4bqjbmcgMzAuMTIlKS4gR2nDoSB0cuG7iyBwLXZhbHVlIG5o4buPIGjGoW4gMi4yZS0xNiBjdW5nIGPhuqVwIGLhurFuZyBjaOG7qW5nIG3huqFuaCBt4bq9IMSR4buDIGvhur90IGx14bqtbiBy4bqxbmcgdOG7tyBs4buHIG5nxrDhu51pIMSR4bq/biB04burIEFzaWFuIHRyb25nIHThu5VuZyB0aOG7gyBraMOhYyA1MCUgdsOgIHRo4buxYyB04bq/IHThu7cgbOG7hyBuw6B5IHRo4bqlcCBoxqFuIMSRw6FuZyBr4buDIHNvIHbhu5tpIDUwJS4gICAgICAgICAgICANCg0KICAqKktp4buDbSDEkeG7i25oIGdp4bqjIHRodXnhur90IHThu7cgbOG7hyoqDQogIA0KICDEkOG6t3QgZ2nhuqMgdGh1eeG6v3Q6ICAgDQogIA0KICAgJCQNClxiZWdpbntjYXNlc30gDQpIXzA6IFx0ZXh0e1Thu7cgbOG7hyBuZ8aw4budaSDEkeG6v24gdOG7qyBBc2lhbiB0cm9uZyB04buVbmcgdGjhu4MgbMOgIDMwJS59IFxcDQpIXzE6IFx0ZXh0e1Thu7cgbOG7hyBuZ8aw4budaSDEkeG6v24gdOG7qyBBc2lhbiB0cm9uZyB04buVbmcgdGjhu4MgbMOgIGtow6FjIDMwJS59DQpcZW5ke2Nhc2VzfQ0KICAkJA0KYGBge3IsZWNobz1UUlVFfQ0KI0tp4buDbSDEkeG7i25oIGhhaSBwaMOtYQ0KcHJvcC50ZXN0KGI0LCB0b3RhbCwgcD0wLjMsIGFsdGVybmF0aXZlID0gInR3by5zaWRlZCIpDQpgYGANCg0KICAgIEThu7FhIHRyw6puIGvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGdp4bqjIHRodXnhur90IHThu7cgbOG7hyBoYWkgcGjDrWEgY2hvIGJp4bq/biAiRXRobmljaXR5IiwgduG7m2kgZ2nhuqMgdGh1eeG6v3QgJEhfMCQgbMOgIHThu7cgbOG7hyBuZ8aw4budaSDEkeG6v24gdOG7qyBBc2lhbiB0cm9uZyB04buVbmcgdGjhu4MgbMOgIDMwJSAocD0wLjMpIHbDoCBnaeG6oyB0aHV54bq/dCAkSF8xJCBsw6AgdOG7tyBs4buHIG7DoHkga2jDoWMgMzAlLCB0YSBjw7MgKipnacOhIHRy4buLIHAtdmFsdWUqKiBsw6AgYDAuMDU2MjFgLiBN4bq3YyBkw7kgZ2nDoSB0cuG7iyBwLXZhbHVlIG7DoHkgZ+G6p24gduG7m2kgbeG7qWMgw70gbmdoxKlhIDAuMDUsIG5oxrBuZyBuw7MgbOG7m24gaMahbiBt4buZdCBjaMO6dCBzbyB24bubaSAwLjA1LiBEbyDEkcOzLCBjaMO6bmcgdGEgKipraMO0bmcgY8OzIMSR4bunIGLhurFuZyBjaOG7qW5nIHRo4buRbmcga8OqIG3huqFuaCBt4bq9IMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJCoqIHThuqFpIG3hu6ljIMO9IG5naMSpYSAwLjA1LiDEkGnhu4F1IG7DoHkgY8OzIG5naMSpYSBsw6AsIGThu7FhIHRyw6puIGThu68gbGnhu4d1IGhp4buHbiBjw7MsIGNow7puZyB0YSBraMO0bmcgdGjhu4Mga+G6v3QgbHXhuq1uIHLhurFuZyB04bu3IGzhu4cgbmfGsOG7nWkgxJHhur9uIHThu6sgQXNpYW4gdHJvbmcgdOG7lW5nIHRo4buDIGtow6FjIDMwJS4gKirGr+G7m2MgdMOtbmggdOG7tyBs4buHIG3huqt1KiogbMOgIDAuMjU1ICgyNS41JSksIHbDoCAqKmtob+G6o25nIHRpbiBj4bqteSA5NSUqKiBsw6AgdOG7qyAwLjIxMzU4NjYgxJHhur9uIDAuMzAxMjEwMCwgdHJvbmcgxJHDsyBnacOhIHRy4buLIDAuMyBu4bqxbSBuZ2F5IHPDoXQgZ2nhu5tpIGjhuqFuIHRyw6puIGPhu6dhIGtob+G6o25nIHRpbiBj4bqteS4gICANCiAgICANCiMgKipQaMOibiB0w61jaCBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIGhhaSBiaeG6v24gxJHhu4tuaCB0w61uaCoqDQoNCiAqKkNo4buNbiByYSBoYWkgY+G6t3AgYmnhur9uOioqIEdlbmRlciB2w6AgTWFycmllZDsgU3R1ZGVudCB2w6AgRXRobmljaXR5LiAgIA0KIA0KIyMgKipCaeG6v24gR2VuZGVyIHbDoCBNYXJyaWVkKioNCg0KICAgxJDhu4MgxJHDoW5oIGdpw6EgbeG7kWkgcXVhbiBo4buHIGdp4buvYSBnaeG7m2kgdMOtbmggKEdlbmRlcikgdsOgIHTDrG5oIHRy4bqhbmcgaMO0biBuaMOibiAoTWFycmllZCksIG3hu5l0IHnhur91IHThu5EgdGjGsOG7nW5nIMSRxrDhu6NjIHhlbSB4w6l0IGzDoCBjw7Mg4bqjbmggaMaw4bufbmcgxJHhur9uIHF1eeG6v3QgxJHhu4tuaCB2w6Aga2jhuqMgbsSDbmcgdmF5IHTDrW4gZOG7pW5nIGhv4bq3YyB0w6xuaCBow6xuaCB0w6BpIGNow61uaCBjw6EgbmjDom4sIGNow7puZyB0YSBz4bq9IHRp4bq/biBow6BuaCBwaMOibiB0w61jaCBoYWkgYmnhur9uIG7DoHkgdHJvbmcgYuG7mSBk4buvIGxp4buHdSBDcmVkaXQuICAgDQoNCiAgICAqKkLhuqNuZyB04bqnbiBzdeG6pXQgY2jDqW8gdsOgIHRy4buxYyBxdWFuIGThu68gbGnhu4d1KiogICAgICANCiAgICAqQuG6o25nIHThuqduIHPhu5EgY2jDqW8qICAgDQpgYGB7cixlY2hvPVRSVUV9DQprMSA8LSB0YWJsZShkMSRHZW5kZXIsZDEkTWFycmllZCkNCmFkZG1hcmdpbnMoazEpDQpgYGANCiAgICpC4bqjbmcgdOG6p24gc3XhuqV0IGNow6lvIHRoZW8gdOG7tyBs4buHIGjDoG5nKiAgIA0KYGBge3IsZWNobz1UUlVFfQ0KcHJvcC50YWJsZShrMSxtYXJnaW49MSkNCmBgYA0KICAgKlRy4buxYyBxdWFuIGjDs2EqICAgDQpgYGB7cixlY2hvPVRSVUV9DQojIEhv4bq3YyBu4bq/dSBtdeG7kW4gaGnhu4NuIHRo4buLIHThu7cgbOG7hw0KZGZfazFfcHJvcCA8LSBhcy5kYXRhLmZyYW1lKHByb3AudGFibGUoazEsIG1hcmdpbiA9IDEpKQ0KY29sbmFtZXMoZGZfazFfcHJvcCkgPC0gYygiR2VuZGVyIiwgIk1hcnJpZWQiLCAiUHJvcG9ydGlvbiIpDQoNCmdncGxvdChkZl9rMV9wcm9wLCBhZXMoeCA9IEdlbmRlciwgeSA9IFByb3BvcnRpb24sIGZpbGwgPSBNYXJyaWVkKSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSAiZG9kZ2UiKSArDQogIGxhYnModGl0bGUgPSAiVOG7tyBs4buHIFTDrG5oIHRy4bqhbmcgSMO0biBuaMOibiB0aGVvIEdp4bubaSB0w61uaCIsDQogICAgICAgeCA9ICJHaeG7m2kgdMOtbmgiLA0KICAgICAgIHkgPSAiVOG7tyBs4buHIiwNCiAgICAgICBmaWxsID0gIkvhur90IGjDtG4iKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnQpDQpgYGANCg0KICAgUXVhbiBzw6F0IGJp4buDdSDEkeG7kyAiVOG7tyBs4buHIFTDrG5oIHRy4bqhbmcgSMO0biBuaMOibiB0aGVvIEdp4bubaSB0w61uaCIsIHRhIHRo4bqleSBjw7Mgc+G7sSBraMOhYyBiaeG7h3Qgbmjhu48gduG7gSB04bu3IGzhu4cgZ2nhu69hIG5hbSB2w6AgbuG7ryB0cm9uZyB0w6xuaCB0cuG6oW5nIGvhur90IGjDtG4uIEPhu6UgdGjhu4MsIHThu7cgbOG7hyBuYW0gZ2nhu5tpIMSRw6Mga+G6v3QgaMO0biAoWWVzKSBsw6Aga2hv4bqjbmcgNjAuNjIlLCB0cm9uZyBraGkgdOG7tyBs4buHIG7hu68gZ2nhu5tpIMSRw6Mga+G6v3QgaMO0biBsw6Aga2hv4bqjbmcgNjEuODQlLiBOZ8aw4bujYyBs4bqhaSwgdOG7tyBs4buHIG5hbSBnaeG7m2kgY2jGsGEga+G6v3QgaMO0biAoTm8pIGzDoCBraG/huqNuZyAzOS4zOCUsIGNhbyBoxqFuIG3hu5l0IGNow7p0IHNvIHbhu5tpIHThu7cgbOG7hyBu4buvIGdp4bubaSBjaMawYSBr4bq/dCBow7RuIGzDoCAzOC4xNiUuIE3hurdjIGTDuSBjw7Mgc+G7sSBjaMOqbmggbOG7h2NoIG7DoHksIG5oxrBuZyBz4buxIGtow6FjIGJp4buHdCBnaeG7r2EgaGFpIGdp4bubaSB0w61uaCB24buBIHThu7cgbOG7hyBr4bq/dCBow7RuIGzDoCBraMO0bmcgcXXDoSBs4bubbiwgY2hvIHRo4bqleSB0w6xuaCB0cuG6oW5nIGjDtG4gbmjDom4gcGjDom4gYuG7lSBraMOhIMSR4buTbmcgxJHhu4F1IGdp4buvYSBuYW0gdsOgIG7hu68gdHJvbmcgdOG6rXAgZOG7ryBsaeG7h3UgbsOgeS4gICANCiAgIA0KICAgKktp4buDbSDEkeG7i25oIHRo4buRbmcga8OqIENoaS1iw6xuaCBwaMawxqFuZyogICANCiAgIA0KICAgxJDDoW5oIGdpw6EgeGVtIGhhaSBiaeG6v24gY8OzIMSR4buZYyBs4bqtcCB24bubaSBuaGF1IGhheSBraMO0bmcgYuG6sW5nIGPDoWNoIHPhu60gZOG7pW5nIENoaS1zcXVhcmUgdGVzdC4gICAgDQogICANCiAgIMSQ4bq3dCBnaeG6oyB0aHV54bq/dDogICANCiAgICQkDQpcYmVnaW57Y2FzZXN9IA0KSF8wOiBcdGV4dHtCaeG6v24gR2VuZGVyIHbDoCBNYXJyaWVkIGtow7RuZyBjw7MgbeG7kWkgcXVhbiBo4buHLn0gXFwNCkhfMTogXHRleHR7Qmnhur9uIEdlbmRlciB2w6AgTWFycmllZCBjw7MgbeG7kWkgcXVhbiBo4buHLn0NClxlbmR7Y2FzZXN9DQogICQkDQpgYGB7cixlY2hvPVRSVUV9DQpjaGlzcS50ZXN0KGsxKQ0KYGBgDQogICANCiAgIMSQ4buDIHBow6JuIHTDrWNoIG3hu5FpIHF1YW4gaOG7hyBnaeG7r2EgIkdlbmRlciIgdsOgICJNYXJyaWVkIiwgY2jDum5nIHRhIHPhu60gZOG7pW5nIGtp4buDbSDEkeG7i25oIENoaS1iw6xuaCBwaMawxqFuZyB24bubaSBnaeG6oyB0aHV54bq/dCAkSF8wJCBsw6AgaGFpIGJp4bq/biBuw6B5IMSR4buZYyBs4bqtcCB2w6AgJEhfMSQgbMOgIGNow7puZyBjw7MgbeG7kWkgcXVhbiBo4buHLiBL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBgY2hpc3EudGVzdChrMSlgIGNobyB0aOG6pXkgZ2nDoSB0cuG7iyAkWF4yID0gMC4wMjE0MTUkIHbhu5tpICRkZj0xJCB2w6AgKipwLXZhbHVlIGzDoCAwLjg4MzcqKi4gVsOsICoqcC12YWx1ZSoqICgwLjg4MzcpIGzhu5tuIGjGoW4gxJHDoW5nIGvhu4Mgc28gduG7m2kgbeG7qWMgw70gbmdoxKlhIHRow7RuZyB0aMaw4budbmcgKHbDrSBk4bulOiAwLjA1KSwgY2jDum5nIHRhICoqa2jDtG5nIGPDsyDEkeG7pyBi4bqxbmcgY2jhu6luZyDEkeG7gyBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgJEhfMCQqKi4gxJBp4buBdSBuw6B5IGPDsyBuZ2jEqWEgbMOgICoqa2jDtG5nIGPDsyBt4buRaSBxdWFuIGjhu4cgdGjhu5FuZyBrw6ogY8OzIMO9IG5naMSpYSBnaeG7r2EgZ2nhu5tpIHTDrW5oIHbDoCB0w6xuaCB0cuG6oW5nIGjDtG4gbmjDom4qKiB0cm9uZyB04bqtcCBk4buvIGxp4buHdSBuw6B5OyBoYXkgbsOzaSBjw6FjaCBraMOhYywgdMOsbmggdHLhuqFuZyBr4bq/dCBow7RuIGtow7RuZyBwaOG7pSB0aHXhu5ljIHbDoG8gZ2nhu5tpIHTDrW5oLiAgIA0KICAgDQojIyAqKkJp4bq/biBTdHVkZW50IHbDoCBFdGhuaWNpdHkqKiAgIA0KDQogICDEkOG7gyDEkcOhbmggZ2nDoSBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIHTDrG5oIHRy4bqhbmcgbMOgIHNpbmggdmnDqm4gKFN0dWRlbnQpIHbDoCB54bq/dSB04buRIHPhuq9jIHThu5ljIChFdGhuaWNpdHkpLCBuaOG7r25nIGJp4bq/biBuw6B5IGPDsyB0aOG7gyDhuqNuaCBoxrDhu59uZyDEkeG6v24gY8OhYyDEkeG6t2MgxJFp4buDbSB0w6BpIGNow61uaCBob+G6t2Mga2jhuqMgbsSDbmcgdGnhur9wIGPhuq1uIHTDrW4gZOG7pW5nLCBjaMO6bmcgdGEgc+G6vSB0aeG6v24gaMOgbmggcGjDom4gdMOtY2ggaGFpIGJp4bq/biBuw6B5IHRyb25nIGLhu5kgZOG7ryBsaeG7h3UgQ3JlZGl0LiBWaeG7h2MgbsOgeSBz4bq9IGdpw7pwIGNow7puZyB0YSB4ZW0geMOpdCBsaeG7h3UgY8OzIHPhu7Ega2jDoWMgYmnhu4d0IMSRw6FuZyBr4buDIHbhu4EgdMOsbmggdHLhuqFuZyBsw6Agc2luaCB2acOqbiBnaeG7r2EgY8OhYyBuaMOzbSBz4bqvYyB04buZYyBoYXkga2jDtG5nLCB04burIMSRw7MgY8OzIHRo4buDIHN1eSBsdeG6rW4gduG7gSBuaOG7r25nIHnhur91IHThu5EgdGnhu4FtIOG6qW4gbGnDqm4gcXVhbiDEkeG6v24gaMOgbmggdmkgdmF5IHTDrW4gZOG7pW5nIGPhu6dhIHThu6tuZyBuaMOzbS4gICANCiAgIA0KICAgKipC4bqjbmcgdOG6p24gc3XhuqV0IGNow6lvIHbDoCB0cuG7sWMgcXVhbiBk4buvIGxp4buHdSoqICAgICAgDQogICAgKkLhuqNuZyB04bqnbiBz4buRIGNow6lvKiAgIA0KYGBge3IsZWNobz1UUlVFfQ0KazIgPC0gdGFibGUoZDEkU3R1ZGVudCxkMSRFdGhuaWNpdHkpDQphZGRtYXJnaW5zKGsyKQ0KYGBgDQogICAqQuG6o25nIHThuqduIHN14bqldCBjaMOpbyB0aGVvIHThu7cgbOG7hyBow6BuZyogICANCmBgYHtyLGVjaG89VFJVRX0NCnByb3AudGFibGUoazIsbWFyZ2luPTEpDQpgYGANCiAgICpUcuG7sWMgcXVhbiBow7NhKiANCiAgIA0KYGBge3IsZWNobz1UUlVFfQ0KbGlicmFyeShyZXNoYXBlMikNCnByb3BfazIgPC0gcHJvcC50YWJsZShrMiwgbWFyZ2luPTEpDQoNCiMgVuG6vSBiaeG7g3UgxJHhu5MgY+G7mXQgY2jhu5NuZyAoc3RhY2tlZCBiYXJwbG90KQ0KZGZfcHJvcCA8LSBhcy5kYXRhLmZyYW1lKHByb3BfazIpDQpjb2xuYW1lcyhkZl9wcm9wKSA8LSBjKCJTdHVkZW50IiwgIkV0aG5pY2l0eSIsICJQcm9wb3J0aW9uIikNCg0KIyBLaeG7g20gdHJhIGxldmVscw0KbGV2ZWxzKGRmX3Byb3AkRXRobmljaXR5KQ0KDQojIFbhur0gYmnhu4N1IMSR4buTIHN0YWNrZWQgYmFycGxvdCB04bu3IGzhu4cNCmdncGxvdChkZl9wcm9wLCBhZXMoeD1TdHVkZW50LCB5PVByb3BvcnRpb24sIGZpbGw9RXRobmljaXR5KSkgKw0KICBnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIsIHBvc2l0aW9uPSJkb2RnZSIpICsgICMgxJHhu5VpIHNhbmcgZG9kZ2UgxJHhu4MgY8OhYyBj4buZdCDEkeG7qW5nIGPhuqFuaA0KICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzPXNjYWxlczo6cGVyY2VudCkgKw0KICBsYWJzKHRpdGxlPSJU4bu3IGzhu4cgRXRobmljaXR5IHRoZW8gU3R1ZGVudCIsDQogICAgICAgeD0iU3R1ZGVudCIsDQogICAgICAgeT0iVOG7tyBs4buHICglKSIpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoInN0ZWVsYmx1ZSIsICJvcmFuZ2UiLCAic2VhZ3JlZW4iKSkgKw0KICB0aGVtZV9taW5pbWFsKCkNCmBgYA0KDQogICBRdWFuIHPDoXQgYmnhu4N1IMSR4buTICJU4bu3IGzhu4cgRXRobmljaXR5IHRoZW8gU3R1ZGVudCIgdsOgIGPDoWMgYuG6o25nIHThuqduIHPhu5EgY2jDqW8gdMawxqFuZyDhu6luZywgdGEgdGjhuqV5IHLhurFuZyB0cm9uZyBuaMOzbSBraMO0bmcgcGjhuqNpIHNpbmggdmnDqm4gKE5vKSwgc+G6r2MgdOG7mWMgQ2F1Y2FzaWFuIGNoaeG6v20gdOG7tyBs4buHIMOhcCDEkeG6o28gKGtob+G6o25nIDUwLjU2JSksIHRyb25nIGtoaSBBZnJpY2FuIEFtZXJpY2FuIHbDoCBBc2lhbiBjw7MgdOG7tyBs4buHIHTGsMahbmcgxJHGsMahbmcgbmhhdSAoa2hv4bqjbmcgMjQuNzIlKS4gTmfGsOG7o2MgbOG6oWksIMSR4buRaSB24bubaSBuaMOzbSBzaW5oIHZpw6puIChZZXMpLCB04bu3IGzhu4cgbmfGsOG7nWkgQXNpYW4gdsOgIEFmcmljYW4gQW1lcmljYW4gdMSDbmcgbMOqbiDEkcOhbmcga+G7gyAoQXNpYW4ga2hv4bqjbmcgMzIuNSUsIEFmcmljYW4gQW1lcmljYW4ga2hv4bqjbmcgMjUlKSBzbyB24bubaSBuaMOzbSBraMO0bmcgcGjhuqNpIHNpbmggdmnDqm4sIHRyb25nIGtoaSB04bu3IGzhu4cgQ2F1Y2FzaWFuIGdp4bqjbSB4deG7kW5nIChraG/huqNuZyA0Mi41JSkuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IG5ow7NtIHNpbmggdmnDqm4gY8OzIHPhu7EgcGjDom4gYuG7kSBz4bqvYyB04buZYyDEkWEgZOG6oW5nIGjGoW4gdsOgIHThu7cgbOG7hyBuZ8aw4budaSBBc2lhbiBjxaluZyBuaMawIEFmcmljYW4gQW1lcmljYW4gY2FvIGjGoW4gc28gduG7m2kgbmjDs20ga2jDtG5nIHBo4bqjaSBzaW5oIHZpw6puLiAgIA0KICAgDQogICAqS2nhu4NtIMSR4buLbmggdGjhu5FuZyBrw6ogQ2hpLWLDrG5oIHBoxrDGoW5nKiAgIA0KICAgDQogICDEkMOhbmggZ2nDoSB4ZW0gaGFpIGJp4bq/biBjw7MgxJHhu5ljIGzhuq1wIHbhu5tpIG5oYXUgaGF5IGtow7RuZyBi4bqxbmcgY8OhY2ggc+G7rSBk4bulbmcgQ2hpLXNxdWFyZSB0ZXN0LiAgICANCiAgIA0KICAgxJDhurd0IGdp4bqjIHRodXnhur90OiAgIA0KICAgJCQNClxiZWdpbntjYXNlc30gDQpIXzA6IFx0ZXh0e0Jp4bq/biBTdHVkZW50IHbDoCBFdGhuaWNpdHkga2jDtG5nIGPDsyBt4buRaSBxdWFuIGjhu4cufSBcXA0KSF8xOiBcdGV4dHtCaeG6v24gU3R1ZGVudCB2w6AgRXRobmljaXR5IGPDsyBt4buRaSBxdWFuIGjhu4cufQ0KXGVuZHtjYXNlc30NCiAgJCQNCmBgYHtyLGVjaG89VFJVRX0NCmNoaXNxLnRlc3QoazIpDQpgYGANCiAgIA0KICAgxJDhu4MgcGjDom4gdMOtY2ggbeG7kWkgcXVhbiBo4buHIGdp4buvYSAiU3R1ZGVudCIgdsOgICJFdGhuaWNpdHkiLCBjaMO6bmcgdGEgc+G7rSBk4bulbmcga2nhu4NtIMSR4buLbmggQ2hpLWLDrG5oIHBoxrDGoW5nIHbhu5tpIGdp4bqjIHRodXnhur90ICRIXzAkIGzDoCBoYWkgYmnhur9uIG7DoHkgxJHhu5ljIGzhuq1wIHbDoCAkSF8xJCBsw6AgY2jDum5nIGPDsyBt4buRaSBxdWFuIGjhu4cuIEvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIGBjaGlzcS50ZXN0KGsyKWAgY2hvIHRo4bqleSBnacOhIHRy4buLICRYXjIgPSAxLjMyNDckIHbhu5tpICRkZj0yJCB2w6AgKipwLXZhbHVlIGzDoCAwLjUxNTYqKi4gVsOsIHAtdmFsdWUgKDAuNTE1NikgbOG7m24gaMahbiDEkcOhbmcga+G7gyBzbyB24bubaSBt4bupYyDDvSBuZ2jEqWEgdGjDtG5nIHRoxrDhu51uZyAodsOtIGThu6U6IDAuMDUpLCBjaMO6bmcgdGEga2jDtG5nIGPDsyDEkeG7pyBi4bqxbmcgY2jhu6luZyDEkeG7gyBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgJEhfMCQuIMSQaeG7gXUgbsOgeSBjw7MgbmdoxKlhIGzDoCBraMO0bmcgY8OzIG3hu5FpIHF1YW4gaOG7hyB0aOG7kW5nIGvDqiBjw7Mgw70gbmdoxKlhIGdp4buvYSB0w6xuaCB0cuG6oW5nIHNpbmggdmnDqm4gdsOgIHPhuq9jIHThu5ljIHRyb25nIHThuq1wIGThu68gbGnhu4d1IG7DoHk7IGhheSBuw7NpIGPDoWNoIGtow6FjLCB0w6xuaCB0cuG6oW5nIGzDoCBzaW5oIHZpw6puIGtow7RuZyBwaOG7pSB0aHXhu5ljIHbDoG8gc+G6r2MgdOG7mWMuICAgICAgDQogICANCiAgIA0KIyAqKlJpc2sgZGlmZmVyZW5jZSB2w6AgUmVsYXRpdmUgcmlzayoqICAgDQoNCiMjICoqQmnhur9uIEdlbmRlciB2w6AgTWFycmllZCoqICAgDQoNCiAgICoqVEgxOiBo4bqhbmcgbeG7pWMgRmVtYWxlIGzDoG0gdGhhbSBjaGnhur91KiogICANCmBgYHtyLGVjaG89VFJVRX0NCmUgPC0gcmlza3JhdGlvKGsxLHJldj0nYicpDQplDQpgYGANCiAqKk5o4bqtbiB4w6l0IGNoaSB0aeG6v3QgduG7gSBSaXNrIFJhdGlvIGPhu6dhIEJp4bq/biBHZW5kZXIgdsOgIE1hcnJpZWQgdHJvbmcgYuG7mSBk4buvIGxp4buHdSBDcmVkaXQ6KiogICANCg0KICAgS+G6v3QgcXXhuqMgY+G7p2EgaMOgbSBgcmlza3JhdGlvKGsxLCByZXY9J3AnKWAgxJHDoyB0w61uaCB0b8OhbiB04bu3IGzhu4cgcuG7p2kgcm8gKHJpc2sgcmF0aW8pIGNobyBraOG6oyBuxINuZyBr4bq/dCBow7RuIChgTWFycmllZCA9IFllc2ApIGdp4buvYSBjw6FjIG5ow7NtIGdp4bubaSB0w61uaCwgduG7m2kgbmjDs20gIkZlbWFsZSIgKG7hu68gZ2nhu5tpKSDEkcaw4bujYyDEkeG6t3QgbMOgbSBo4bqhbmcgbeG7pWMgdGhhbSBjaGnhur91LiAgIA0KDQoqICoqRGF0YToqKiAgIA0KDQogICogQuG6o25nIERhdGEgaGnhu4NuIHRo4buLIGLhuqNuZyB04bqnbiBz4buRIGNow6lvIGPhu6dhIGBHZW5kZXJgIHbDoCBgTWFycmllZGAuIFRhIHRo4bqleSBjw7MgMTI4IG7hu68gZ2nhu5tpIMSRw6Mga+G6v3QgaMO0biB2w6AgNzkgbuG7ryBnaeG7m2kgY2jGsGEga+G6v3QgaMO0biAodOG7lW5nIGPhu5luZyAyMDcgbuG7rykuIFTGsMahbmcgdOG7sSwgY8OzIDExNyBuYW0gZ2nhu5tpIMSRw6Mga+G6v3QgaMO0biB2w6AgNzYgbmFtIGdp4bubaSBjaMawYSBr4bq/dCBow7RuICh04buVbmcgY+G7mW5nIDE5MyBuYW0pLiBU4buVbmcgc+G7kSBxdWFuIHPDoXQgbMOgIDQwMC4gxJDDonkgbMOgIGThu68gbGnhu4d1IGfhu5FjIG3DoCB04burIMSRw7MgYHJpc2tyYXRpb2AgxJHGsOG7o2MgdMOtbmggdG/DoW4uICAgIA0KICANCiogKipNZWFzdXJlIChSaXNrIFJhdGlvIHdpdGggOTUlIEMuSS4pOioqICAgDQoNCiAgKiAqKkVzdGltYXRlIChGZW1hbGUpOiAxLjAwMDAwKiogLSDEkMOieSBsw6AgZ2nDoSB0cuG7iyB0aGFtIGNoaeG6v3UgY2hvIG5ow7NtIG7hu68gZ2nhu5tpLiDEkGnhu4F1IG7DoHkgY8OzIG5naMSpYSBsw6AgdOG7tyBs4buHIGvhur90IGjDtG4gY+G7p2EgbuG7ryBnaeG7m2kgxJHGsOG7o2MgbOG6pXkgbMOgbSBjxqEgc+G7nyDEkeG7gyBzbyBzw6FuaC4gICANCiAgDQogICogKipFc3RpbWF0ZSAoTWFsZSk6IDEuMDMxODEqKiAtIEdpw6EgdHLhu4sgbsOgeSBjaG8gYmnhur90IHThu7cgbOG7hyBuZ8aw4budaSDEkcOjIGvhur90IGjDtG4g4bufIG5hbSBnaeG7m2kgY2FvIGfhuqVwIDEuMDMxODEgbOG6p24gc28gduG7m2kgbuG7ryBnaeG7m2kuIE7Ds2kgY8OhY2gga2jDoWMsIG5hbSBnaeG7m2kgY8OzIGto4bqjIG7Eg25nIGvhur90IGjDtG4gY2FvIGjGoW4ga2hv4bqjbmcgMy4xOCUgc28gduG7m2kgbuG7ryBnaeG7m2kgdHJvbmcgbeG6q3UgbsOgeS4gVHJvbmcgYuG7kWkgY+G6o25oIHZheSB0w61uIGThu6VuZywgxJFp4buBdSBuw6B5IGPDsyB0aOG7gyBn4bujaSDDvSBy4bqxbmcgbmFtIGdp4bubaSBjw7MgdGjhu4MgY8OzIG3hu5l0IGNow7p0IGzhu6NpIHRo4bq/IGjGoW4gduG7gSB54bq/dSB04buRICLEkcOjIGvhur90IGjDtG4iIGtoaSDEkcOhbmggZ2nDoSBraOG6oyBuxINuZyB0w6BpIGNow61uaCwgbuG6v3UgdMOsbmggdHLhuqFuZyBow7RuIG5ow6JuIMSRxrDhu6NjIGNvaSBsw6AgbeG7mXQgeeG6v3UgdOG7kSDhu5VuIMSR4buLbmggdMOgaSBjaMOtbmguICAgDQogIA0KICAqICoqTG93ZXIgKE1hbGUpOiAwLjgwNjQ3NzIqKiB2w6AgKipVcHBlciAoTWFsZSk6IDEuMzIwMSoqIC0gxJDDonkgbMOgIGtob+G6o25nIHRpbiBj4bqteSA5NSUgY2hvIHThu7cgbOG7hyBy4bunaSBybyBj4bunYSBuYW0gZ2nhu5tpIHNvIHbhu5tpIG7hu68gZ2nhu5tpLiBLaG/huqNuZyBuw6B5IGNobyBiaeG6v3QgcuG6sW5nIGNow7puZyB0YSB0aW4gdMaw4bufbmcgOTUlIHLhurFuZyB04bu3IGzhu4cga+G6v3QgaMO0biB0aOG7sWMgc+G7sSBj4bunYSBuYW0gZ2nhu5tpIHNvIHbhu5tpIG7hu68gZ2nhu5tpIHRyb25nIHThu5VuZyB0aOG7gyBu4bqxbSB0cm9uZyBraG/huqNuZyB04burIDAuODA2NDc3MiDEkeG6v24gMS4zMjAxLiAgIA0KICANCiAgICAqICoqw50gbmdoxKlhIHRyb25nIGLhu5FpIGPhuqNuaCBDcmVkaXQ6KiogVsOsIGtob+G6o25nIHRpbiBj4bqteSBuw6B5IGJhbyBn4buTbSBnacOhIHRy4buLIDEgKHThu7cgbOG7hyBy4bunaSBybyBi4bqxbmcgMSBjw7MgbmdoxKlhIGzDoCBraMO0bmcgY8OzIHPhu7Ega2jDoWMgYmnhu4d0IGdp4buvYSBoYWkgbmjDs20pLCBuw7MgY2jhu4kgcmEgcuG6sW5nIHPhu7Ega2jDoWMgYmnhu4d0IG5o4buPIHbhu4EgdOG7tyBs4buHIGvhur90IGjDtG4gbmFtIHbDoCBu4buvIHF1YW4gc8OhdCDEkcaw4bujYyB0cm9uZyBt4bqrdSAoMS4wMzE4MSkga2jDtG5nIMSR4bunIGzhu5tuIMSR4buDIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6og4bufIG3hu6ljIMSR4buZIHRpbiBj4bqteSA5NSUuIMSQaeG7gXUgbsOgeSBow6BtIMO9IHLhurFuZywgdHJvbmcgYuG7mSBk4buvIGxp4buHdSB0w61uIGThu6VuZyBuw6B5LCBnaeG7m2kgdMOtbmgga2jDtG5nIHBo4bqjaSBsw6AgeeG6v3UgdOG7kSBk4buxIGLDoW8gxJHDoW5nIGvhu4MgY2hvIHTDrG5oIHRy4bqhbmcgaMO0biBuaMOibi4gRG8gxJHDsywgbuG6v3UgInTDrG5oIHRy4bqhbmcga+G6v3QgaMO0biIgbMOgIG3hu5l0IHnhur91IHThu5EgcXVhbiB0cuG7jW5nIHRyb25nIHZp4buHYyDEkcOhbmggZ2nDoSBraOG6oyBuxINuZyB2YXkgdMOtbiBk4bulbmcsIHRow6wgImdp4bubaSB0w61uaCIgZMaw4budbmcgbmjGsCBraMO0bmcgdOG6oW8gcmEgc+G7sSBraMOhYyBiaeG7h3QgxJHDoW5nIGvhu4MgbsOgbyB0cm9uZyB2aeG7h2MgbeG7mXQgbmfGsOG7nWkgY8OzIGvhur90IGjDtG4gaGF5IGtow7RuZy4gICANCiAgICANCiogKipwLXZhbHVlICh0d28tc2lkZWQpOioqICAgDQoNCiAgKiBgbWlkcC5leGFjdCAoTWFsZSk6IDAuODA0MTk4NGAsIGBmaXNoZXIuZXhhY3QgKE1hbGUpOiAwLjgzNzU3OTNgLCBgY2hpLnNxdWFyZSAoTWFsZSk6IDAuODAzMzM0M2AgLSBDw6FjIGdpw6EgdHLhu4sgKnAqLXZhbHVlIG7DoHkgxJHhu4F1IHLhuqV0IGzhu5tuICjEkeG7gXUgbOG7m24gaMahbiAwLjA1KS4gxJDhurdjIGJp4buHdCwgZ2nDoSB0cuG7iyAqcCotdmFsdWUgdOG7qyBraeG7g20gxJHhu4tuaCBDaGktc3F1YXJlIGzDoCAwLjgwMzMzNDMsIHLhuqV0IGfhuqduIHbhu5tpICpwKi12YWx1ZSB04burIGBjaGlzcS50ZXN0KGsxKWAgKDAuODgzNykgbcOgIGLhuqFuIMSRw6MgY3VuZyBj4bqlcCB0csaw4bubYyDEkcOzLiAgIA0KICANCiAgKiAqKsOdIG5naMSpYSB0cm9uZyBi4buRaSBj4bqjbmggQ3JlZGl0OioqIE3hu5l0ICpwKi12YWx1ZSBjYW8gY2hvIHRo4bqleSBraMO0bmcgY8OzIMSR4bunIGLhurFuZyBjaOG7qW5nIHRo4buRbmcga8OqIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJCBy4bqxbmcga2jDtG5nIGPDsyBt4buRaSBxdWFuIGjhu4cgZ2nhu69hICJHZW5kZXIiIHbDoCAiTWFycmllZCIuIEvhur90IGjhu6NwIHbhu5tpIGtob+G6o25nIHRpbiBj4bqteSBiYW8gZ+G7k20gMSwgY8OhYyAqcCotdmFsdWUgbsOgeSBj4bunbmcgY+G7kSBt4bqhbmggbeG6vSBr4bq/dCBsdeG6rW4gcuG6sW5nIHTDrG5oIHRy4bqhbmcga+G6v3QgaMO0biBraMO0bmcgY8OzIHPhu7Ega2jDoWMgYmnhu4d0IMSRw6FuZyBr4buDIHbhu4EgbeG6t3QgdGjhu5FuZyBrw6ogZ2nhu69hIG5hbSB2w6AgbuG7ryB0cm9uZyBi4buZIGThu68gbGnhu4d1IENyZWRpdCBuw6B5LiBEbyDEkcOzLCBraGkgeGVtIHjDqXQgY8OhYyB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIMSR4bq/biBxdXnhur90IMSR4buLbmggdmF5IHTDrW4gZOG7pW5nLCB2aeG7h2MgcGjDom4gYmnhu4d0IGThu7FhIHRyw6puIGdp4bubaSB0w61uaCB0cm9uZyBt4buRaSBsacOqbiBo4buHIHbhu5tpIHTDrG5oIHRy4bqhbmcgaMO0biBuaMOibiBsw6Aga2jDtG5nIGPhuqduIHRoaeG6v3QgdsOsIGNow7puZyBraMO0bmcgY8OzIG3hu5FpIHF1YW4gaOG7hyBwaOG7pSB0aHXhu5ljIHLDtSByw6BuZy4gICANCiAgDQogICoqVEgyOiBI4bqhbmcgbeG7pWMgTWFsZSBsw6BtIHRoYW0gY2hp4bq/dSoqICAgDQpgYGB7cixlY2hvPVRSVUV9DQplMSA8LSByaXNrcmF0aW8oazEpDQplMQ0KYGBgIA0KICoqTmjhuq1uIHjDqXQgduG7gSBSaXNrIFJhdGlvIGPhu6dhIEJp4bq/biBHZW5kZXIgdsOgIE1hcnJpZWQgKE1hbGUgbMOgbSB0aGFtIGNoaeG6v3UpKioNCg0KICAgS+G6v3QgcXXhuqMgY+G7p2EgYHJpc2tyYXRpb2AgY2hvIHRo4bqleSBraGkgIk1hbGUiIGzDoCBuaMOzbSB0aGFtIGNoaeG6v3UgKGVzdGltYXRlID0gMS4wMDAwMCksIHThu7cgbOG7hyBuZ8aw4budaSDEkcOjIGvhur90IGjDtG4g4bufIG7hu68gZ2nhu5tpIMSRxrDhu6NjIMaw4bubYyB0w61uaCBsw6AgKioxLjAyMDAyNiBs4bqnbioqIHNvIHbhu5tpIG5hbSBnaeG7m2kuIMSQaeG7gXUgbsOgeSBjw7MgbmdoxKlhIGzDoCBu4buvIGdp4bubaSBjw7MgdOG7tyBs4buHIGvhur90IGjDtG4gY2FvIGjGoW4ga2hv4bqjbmcgKioyLjAlKiogc28gduG7m2kgbmFtIGdp4bubaSB0cm9uZyBt4bqrdS5UdXkgbmhpw6puLCBraG/huqNuZyB0aW4gY+G6rXkgOTUlIGNobyB04bu3IGzhu4cgcuG7p2kgcm8gbsOgeSAoKiowLjg3MjU2MTggxJHhur9uIDEuMTkyNDExKiopIGJhbyBn4buTbSBnacOhIHRy4buLIDEuIEdpw6EgdHLhu4sgcC12YWx1ZSAodsOtIGThu6U6IGBjaGkuc3F1YXJlID0gMC44MDMzMzQzYCkgY8WpbmcgcuG6pXQgbOG7m24uQ8OhYyBjaOG7iSBz4buRIG7DoHkgY8O5bmcgbmhhdSBjaOG7iSByYSBy4bqxbmcgKipraMO0bmcgY8OzIGLhurFuZyBjaOG7qW5nIHRo4buRbmcga8OqIMSRw6FuZyBr4buDKiogxJHhu4Mga+G6v3QgbHXhuq1uIHLhurFuZyBjw7Mgc+G7sSBraMOhYyBiaeG7h3QgduG7gSB04bu3IGzhu4cga+G6v3QgaMO0biBnaeG7r2EgbmFtIHbDoCBu4buvIHRyb25nIHThu5VuZyB0aOG7gy5Ucm9uZyBi4buRaSBj4bqjbmggdmF5IHTDrW4gZOG7pW5nLCDEkWnhu4F1IG7DoHkgaMOgbSDDvSBy4bqxbmcgKipnaeG7m2kgdMOtbmgga2jDtG5nIHBo4bqjaSBsw6AgeeG6v3UgdOG7kSBxdWFuIHRy4buNbmcgdHJvbmcgdmnhu4djIGThu7EgxJFvw6FuIHTDrG5oIHRy4bqhbmcgaMO0biBuaMOibioqLCB2w6AgZG8gxJHDsywga2jDtG5nIOG6o25oIGjGsOG7n25nIMSRw6FuZyBr4buDIMSR4bq/biB2aeG7h2MgxJHDoW5oIGdpw6Ega2jhuqMgbsSDbmcgdmF5IHTDrW4gZOG7pW5nIGThu7FhIHRyw6puIHTDrG5oIHRy4bqhbmcgaMO0biBuaMOibi4gICAgIA0KICAgDQojIyAqKkJp4bq/biBTdHVkZW50IHbDoCBFdGhuaWNpdHkqKiAgIA0KDQogICAqKlRIMTogaOG6oW5nIG3hu6VjIFllcyAoc2luaCB2acOqbikgbMOgbSB0aGFtIGNoaeG6v3UqKiAgIA0KYGBge3IsZWNobz1UUlVFfQ0KZTIgPC0gcmlza3JhdGlvKGsyLHJldj0nYicpDQplMg0KYGBgDQogICAqKk5o4bqtbiB4w6l0IHbhu4EgUmlzayBSYXRpbyBj4bunYSBCaeG6v24gU3R1ZGVudCB2w6AgRXRobmljaXR5IChTaW5oIHZpw6puIGzDoG0gdGhhbSBjaGnhur91KSB0cm9uZyBi4buZIGThu68gbGnhu4d1IENyZWRpdDoqKiAgIA0KICAgDQogICBL4bq/dCBxdeG6oyBj4bunYSByaXNrcmF0aW8gY2hvIHRo4bqleSBraGkgIlllcyIgKHNpbmggdmnDqm4pIGzDoCBuaMOzbSB0aGFtIGNoaeG6v3UgKGVzdGltYXRlID0gMS4wMDAwMCksIHThu7cgbOG7hyBuZ8aw4budaSBraMO0bmcgcGjhuqNpIHNpbmggdmnDqm4gKE5vKSBzbyB24bubaSBuaMOzbSBzaW5oIHZpw6puIChZZXMpIMSRxrDhu6NjIMaw4bubYyB0w61uaCBsw6AgMC43NTc4NzY4IGzhuqduIGtoaSB4w6l0IMSR4bq/biBwaMOibiBi4buRIHPhuq9jIHThu5ljLiDEkGnhu4F1IG7DoHkgY8OzIG5naMSpYSBsw6AgdOG7tyBs4buHIG5nxrDhu51pIGtow7RuZyBwaOG6o2kgc2luaCB2acOqbiB0aOG6pXAgaMahbiBraG/huqNuZyAyNC4yMSUgc28gduG7m2kgdOG7tyBs4buHIHNpbmggdmnDqm4sIG3hu5l0IHPhu7Ega2jDoWMgYmnhu4d0IGPDsyB0aOG7gyBjw7Mgw70gbmdoxKlhIMSR4buRaSB24bubaSBo4buTIHPGoSB2YXkgdMOtbiBk4bulbmcuIFR1eSBuaGnDqm4sIGtob+G6o25nIHRpbiBj4bqteSA5NSUgY2hvIHThu7cgbOG7hyBy4bunaSBybyBuw6B5IGzDoCB04burIDAuNDg2NTM1NyDEkeG6v24gMS4xODA1NDUuIFbDrCBraG/huqNuZyB0aW4gY+G6rXkgbsOgeSBiYW8gZ+G7k20gZ2nDoSB0cuG7iyAxLCB2w6AgZ2nDoSB0cuG7iyBwLXZhbHVlICh2w60gZOG7pTogY2hpLnNxdWFyZSA9IDAuNTE1NjMyMykgcuG6pXQgbOG7m24sIGNow7puZyB0YSBraMO0bmcgY8OzIMSR4bunIGLhurFuZyBjaOG7qW5nIHRo4buRbmcga8OqIMSRw6FuZyBr4buDIMSR4buDIGvhur90IGx14bqtbiBy4bqxbmcgY8OzIHPhu7Ega2jDoWMgYmnhu4d0IGPDsyDDvSBuZ2jEqWEgduG7gSB04bu3IGzhu4cgZ2nhu69hIG5nxrDhu51pIGzDoCBzaW5oIHZpw6puIHbDoCBraMO0bmcgcGjhuqNpIHNpbmggdmnDqm4gZOG7sWEgdHLDqm4gc+G6r2MgdOG7mWMgdHJvbmcgdOG7lW5nIHRo4buDLiBUcm9uZyBi4buRaSBj4bqjbmggYuG7mSBk4buvIGxp4buHdSBDcmVkaXQsIMSRaeG7gXUgbsOgeSBow6BtIMO9IHLhurFuZywgbeG6t2MgZMO5IGPDsyBuaOG7r25nIGtow6FjIGJp4buHdCB24buBIHBow6JuIGLhu5Egc+G6r2MgdOG7mWMgZ2nhu69hIHNpbmggdmnDqm4gdsOgIHBoaSBzaW5oIHZpw6puIHRyb25nIG3huqt1LCBuaMawbmcgc+G7sSBraMOhYyBiaeG7h3QgbsOgeSBraMO0bmcgxJHhu6cgbeG6oW5oIMSR4buDIGto4bqzbmcgxJHhu4tuaCBt4buZdCBt4buRaSBxdWFuIGjhu4cgdGjhu5FuZyBrw6ogxJHDoW5nIGvhu4MgZ2nhu69hIHTDrG5oIHRy4bqhbmcgc2luaCB2acOqbiB2w6Agc+G6r2MgdOG7mWMsIHThu6sgxJHDsyBraMO0bmcgY8OzIGLhurFuZyBjaOG7qW5nIHLDtSByw6BuZyBjaG8gdGjhuqV5IG3hu5l0IHRyb25nIGhhaSBiaeG6v24gbsOgeSAodMOsbmggdHLhuqFuZyBzaW5oIHZpw6puIGhv4bq3YyBz4bqvYyB04buZYykgY8OzIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buZYyBs4bqtcCDEkeG7gyBk4buxIMSRb8OhbiBraOG6oyBuxINuZyB2YXkgdMOtbiBk4bulbmcgY+G7p2EgbmfGsOG7nWkgY8OybiBs4bqhaS4gICAgDQogICANCiAgICoqVEgyOiBo4bqhbmcgbeG7pWMgTm8gKGtow7RuZyBwaOG6o2kgc2luaCB2acOqbikgbMOgbSB0aGFtIGNoaeG6v3UqKiAgIA0KYGBge3IsZWNobz1UUlVFfQ0KZTMgPC0gcmlza3JhdGlvKGsyKQ0KZTMNCmBgYA0KICAgKipOaOG6rW4geMOpdCB24buBIFJpc2sgUmF0aW8gY+G7p2EgQmnhur9uIFN0dWRlbnQgdsOgIEV0aG5pY2l0eSAoa2jDtG5nIHBo4bqjaSBzaW5oIHZpw6puIGzDoG0gdGhhbSBjaGnhur91KSB0cm9uZyBi4buZIGThu68gbGnhu4d1IENyZWRpdDoqKiAgIA0KICAgDQogICDEkOG7gyDEkcOhbmggZ2nDoSBt4buRaSBxdWFuIGjhu4cgZ2nhu69hICJTdHVkZW50IiB2w6AgIkV0aG5pY2l0eSIsIGNow7puZyB0YSDEkcOjIHRp4bq/biBow6BuaCBwaMOibiB0w61jaCB04bu3IGzhu4cgcuG7p2kgcm8gKHJpc2sgcmF0aW8pIHbhu5tpIGjhuqFuZyBt4bulYyAiTm8iIChraMO0bmcgcGjhuqNpIHNpbmggdmnDqm4pIGzDoG0gdGhhbSBjaGnhur91LiBU4bu3IGzhu4cgbmfGsOG7nWkgbMOgIHNpbmggdmnDqm4gKFllcykgc28gduG7m2kgbmjDs20ga2jDtG5nIHBo4bqjaSBzaW5oIHZpw6puIChObykgxJHGsOG7o2MgxrDhu5tjIHTDrW5oIGzDoCAxLjEzMDQzNSBs4bqnbi4gxJBp4buBdSBuw6B5IGPDsyBuZ2jEqWEgbMOgIHThu7cgbOG7hyBzaW5oIHZpw6puIGNhbyBoxqFuIGtob+G6o25nIDEzLjA0JSBzbyB24bubaSBuaMOzbSBraMO0bmcgcGjhuqNpIHNpbmggdmnDqm4ga2hpIHjDqXQgxJHhur9uIHBow6JuIGLhu5Egc+G6r2MgdOG7mWMuIFR1eSBuaGnDqm4sIGtob+G6o25nIHRpbiBj4bqteSA5NSUgY2hvIHThu7cgbOG7hyBy4bunaSBybyBuw6B5IGzDoCB04burIDAuNzY3MzgxNiDEkeG6v24gMS42NjUyNTEuIFbDrCBraG/huqNuZyB0aW4gY+G6rXkgbsOgeSBiYW8gZ+G7k20gZ2nDoSB0cuG7iyAxLCB2w6AgZ2nDoSB0cuG7iyBwLXZhbHVlICh2w60gZOG7pTogY2hpLnNxdWFyZSA9IDAuNTE1NjMyMykgcuG6pXQgbOG7m24sIGNow7puZyB0YSBraMO0bmcgY8OzIMSR4bunIGLhurFuZyBjaOG7qW5nIHRo4buRbmcga8OqIMSRw6FuZyBr4buDIMSR4buDIGvhur90IGx14bqtbiBy4bqxbmcgY8OzIHPhu7Ega2jDoWMgYmnhu4d0IGPDsyDDvSBuZ2jEqWEgduG7gSB04bu3IGzhu4cgZ2nhu69hIG5nxrDhu51pIGzDoCBzaW5oIHZpw6puIHbDoCBraMO0bmcgcGjhuqNpIHNpbmggdmnDqm4gZOG7sWEgdHLDqm4gc+G6r2MgdOG7mWMgdHJvbmcgdOG7lW5nIHRo4buDLiBUcm9uZyBi4buRaSBj4bqjbmggYuG7mSBk4buvIGxp4buHdSBDcmVkaXQsIMSRaeG7gXUgbsOgeSBow6BtIMO9IHLhurFuZywgbeG6t2MgZMO5IGPDsyB24bq7IG5oxrAgc2luaCB2acOqbiBjw7MgdOG7tyBs4buHIHBow6JuIGLhu5Egc+G6r2MgdOG7mWMgbmjhu4luaCBoxqFuIHNvIHbhu5tpIG5nxrDhu51pIGtow7RuZyBwaOG6o2kgc2luaCB2acOqbiB0cm9uZyBt4bqrdSwgbmjGsG5nIHPhu7Ega2jDoWMgYmnhu4d0IG7DoHkga2jDtG5nIMSR4bunIG3huqFuaCDEkeG7gyBraOG6s25nIMSR4buLbmggbeG7mXQgbeG7kWkgcXVhbiBo4buHIHRo4buRbmcga8OqIMSRw6FuZyBr4buDIGdp4buvYSB0w6xuaCB0cuG6oW5nIHNpbmggdmnDqm4gdsOgIHPhuq9jIHThu5ljLCB04burIMSRw7Mga2jDtG5nIGPDsyBi4bqxbmcgY2jhu6luZyByw7UgcsOgbmcgY2hvIHRo4bqleSBt4buZdCB0cm9uZyBoYWkgYmnhur9uIG7DoHkgY8OzIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buZYyBs4bqtcCDEkeG7gyBk4buxIMSRb8OhbiBraOG6oyBuxINuZyB2YXkgdMOtbiBk4bulbmcgY+G7p2EgbmfGsOG7nWkgY8OybiBs4bqhaS4gICAgDQogICANCiMgKipPZGQgcmF0aW8qKiAgIA0KDQogICBDaMO6bmcgdGEgc+G6vSBz4butIGThu6VuZyBvZGRzIHJhdGlvIMSR4buDIHBow6JuIHTDrWNoIG3hu5FpIGxpw6puIGjhu4cgZ2nhu69hIGhhaSBiaeG6v24gxJHhu4tuaCB0w61uaCBuaOG6sW0geMOhYyDEkeG7i25oIHhlbSBjw7Mgc+G7sSBraMOhYyBiaeG7h3QgxJHDoW5nIGvhu4MgbsOgbyBnaeG7r2EgY8OhYyBuaMOzbSDEkcaw4bujYyBzbyBzw6FuaCBoYXkga2jDtG5nLiAgIA0KICAgDQojIyAqKkJp4bq/biBHZW5kZXIgdsOgIE1hcnJpZWQqKiAgIA0KDQpgYGB7cixlY2hvPVRSVUV9DQpvIDwtIG9kZHNyYXRpbyhrMSkNCm8NCmBgYA0KICAqKk5o4bqtbiB4w6l0IHbhu4EgT2RkcyBSYXRpbyBj4bunYSBCaeG6v24gR2VuZGVyIHbDoCBNYXJyaWVkIHRyb25nIGLhu5kgZOG7ryBsaeG7h3UgQ3JlZGl0OioqICAgDQoNCiAgIENow7puZyB0YSBz4butIGThu6VuZyBPZGRzIFJhdGlvIMSR4buDIHBow6JuIHTDrWNoIG3hu5FpIGxpw6puIGjhu4cgZ2nhu69hIGdp4bubaSB0w61uaCAoYEdlbmRlcmApIHbDoCB0w6xuaCB0cuG6oW5nIGjDtG4gbmjDom4gKGBNYXJyaWVkYCksIG5o4bqxbSB4w6FjIMSR4buLbmggeGVtIGPDsyBz4buxIGtow6FjIGJp4buHdCDEkcOhbmcga+G7gyBuw6BvIGdp4buvYSBjw6FjIG5ow7NtIMSRxrDhu6NjIHNvIHPDoW5oIGhheSBraMO0bmcsIMSR4bq3YyBiaeG7h3QgdHJvbmcgYuG7kWkgY+G6o25oIGPDoWMgeeG6v3UgdOG7kSBuw6B5IGPDsyB0aOG7gyDhuqNuaCBoxrDhu59uZyDEkeG6v24ga2jhuqMgbsSDbmcgdmF5IHTDrW4gZOG7pW5nLiBL4bq/dCBxdeG6oyBgb2Rkc3JhdGlvKGsxKWAgaGnhu4NuIHRo4buLIGtoaSAiTWFsZSIgKG5hbSBnaeG7m2kpIGzDoCBo4bqhbmcgbeG7pWMgdGhhbSBjaGnhur91LiAgIA0KDQoqICoqRGF0YToqKiBC4bqjbmcgRGF0YSB0csOsbmggYsOgeSBi4bqjbmcgdOG6p24gc+G7kSBjaMOpbyBnaeG7r2EgYEdlbmRlcmAgdsOgIGBNYXJyaWVkYC4gQ8OzIDExNyBuYW0gZ2nhu5tpIMSRw6Mga+G6v3QgaMO0biB2w6AgNzYgbmFtIGdp4bubaSBjaMawYSBr4bq/dCBow7RuICh04buVbmcgY+G7mW5nIDE5MyBuYW0pLiDEkOG7kWkgduG7m2kgbuG7ryBnaeG7m2ksIGPDsyAxMjggbmfGsOG7nWkgxJHDoyBr4bq/dCBow7RuIHbDoCA3OSBuZ8aw4budaSBjaMawYSBr4bq/dCBow7RuICh04buVbmcgY+G7mW5nIDIwNyBu4buvKS4gVOG7lW5nIHPhu5EgcXVhbiBzw6F0IGzDoCA0MDAuIMSQw6J5IGzDoCBk4buvIGxp4buHdSBjxqEgc+G7nyBjaG8gdmnhu4djIHTDrW5oIHRvw6FuIE9kZHMgUmF0aW8uICAgIA0KDQoqICoqTWVhc3VyZSAoT2RkcyBSYXRpbyB3aXRoIDk1JSBDLkkuKToqKiAgIA0KDQogICogKipFc3RpbWF0ZSAoTWFsZSk6IDEuMDAwMDAqKiAtIMSQw6J5IGzDoCBnacOhIHRy4buLIHRoYW0gY2hp4bq/dSBjaG8gbmjDs20gbmFtIGdp4bubaS4gVOG7tyBs4buHIGPGsOG7o2MgKG9kZHMpIGPhu6dhIG5hbSBnaeG7m2kgxJHDoyBr4bq/dCBow7RuIHNvIHbhu5tpIGNoxrBhIGvhur90IGjDtG4gxJHGsOG7o2MgbOG6pXkgbMOgbSBjxqEgc+G7nyDEkeG7gyBzbyBzw6FuaC4gICANCiAgDQogICogKipFc3RpbWF0ZSAoRmVtYWxlKTogMS4wNTIzNDEqKiAtIEdpw6EgdHLhu4sgbsOgeSBjaG8gYmnhur90IHThu7cgbOG7hyBjxrDhu6NjIMSR4buDIG3hu5l0IG5nxrDhu51pIG7hu68gxJHDoyBr4bq/dCBow7RuIChzbyB24bubaSBjaMawYSBr4bq/dCBow7RuKSBjYW8gZ+G6pXAgMS4wNTIzNDEgbOG6p24gc28gduG7m2kgdOG7tyBs4buHIGPGsOG7o2MgdMawxqFuZyB04buxIOG7nyBuYW0gZ2nhu5tpLiDEkGnhu4F1IG7DoHkgbmfhu6Ugw70gcuG6sW5nIG7hu68gZ2nhu5tpIGPDsyBraOG6oyBuxINuZyDEkcOjIGvhur90IGjDtG4gbmjhu4luaCBoxqFuIG3hu5l0IGNow7p0IHNvIHbhu5tpIG5hbSBnaeG7m2kgdHJvbmcgbeG6q3UgbsOgeS4gVHJvbmcgYuG7kWkgY+G6o25oIHZheSB0w61uIGThu6VuZywgbuG6v3UgdMOsbmggdHLhuqFuZyBow7RuIG5ow6JuICLEkcOjIGvhur90IGjDtG4iIMSRxrDhu6NjIGNvaSBsw6AgbeG7mXQgeeG6v3UgdOG7kSDhu5VuIMSR4buLbmggdMOgaSBjaMOtbmgsIHRow6wgc+G7sSBjaMOqbmggbOG7h2NoIG5o4buPIG7DoHkgY8OzIHRo4buDIGtow7RuZyDEkeG7pyDEkeG7gyB04bqhbyByYSBz4buxIMawdSB0acOqbiDEkcOhbmcga+G7gyBjaG8gbuG7ryBnaeG7m2kgc28gduG7m2kgbmFtIGdp4bubaSBk4buxYSB0csOqbiB54bq/dSB04buRIGjDtG4gbmjDom4uICAgDQogIA0KICAqICoqTG93ZXIgKEZlbWFsZSk6IDAuNzAyNzU1MioqIHbDoCAqKlVwcGVyIChGZW1hbGUpOiAxLjU3NTY2OCoqIC0gxJDDonkgbMOgIGtob+G6o25nIHRpbiBj4bqteSA5NSUgY2hvIE9kZHMgUmF0aW8gY+G7p2EgbuG7ryBnaeG7m2kgc28gduG7m2kgbmFtIGdp4bubaS4gS2hv4bqjbmcgbsOgeSBjaG8gYmnhur90IGNow7puZyB0YSB0aW4gdMaw4bufbmcgOTUlIHLhurFuZyB04bu3IGzhu4cgY8aw4bujYyB0aOG7sWMgc+G7sSBj4bunYSB2aeG7h2MgbuG7ryBnaeG7m2kgxJHDoyBr4bq/dCBow7RuIHNvIHbhu5tpIG5hbSBnaeG7m2kgdHJvbmcgdOG7lW5nIHRo4buDIG7hurFtIHRyb25nIGtob+G6o25nIHThu6sgMC43MDI3NTUyIMSR4bq/biAxLjU3NTY2OC4gICANCiAgDQogICAgKiAqKsOdIG5naMSpYSB0cm9uZyBi4buRaSBj4bqjbmggQ3JlZGl0OioqIFbDrCBraG/huqNuZyB0aW4gY+G6rXkgbsOgeSBiYW8gZ+G7k20gZ2nDoSB0cuG7iyAxICh04bu3IGzhu4cgY8aw4bujYyBi4bqxbmcgMSBjw7MgbmdoxKlhIGzDoCBraMO0bmcgY8OzIHPhu7Ega2jDoWMgYmnhu4d0IHbhu4EgdOG7tyBs4buHIGPGsOG7o2MgZ2nhu69hIGhhaSBuaMOzbSksIG7DsyBjaOG7iSByYSBy4bqxbmcgc+G7sSBraMOhYyBiaeG7h3QgduG7gSB04bu3IGzhu4cgY8aw4bujYyBr4bq/dCBow7RuIGdp4buvYSBuYW0gdsOgIG7hu68gcXVhbiBzw6F0IMSRxrDhu6NjIHRyb25nIG3huqt1ICgxLjA1MjM0MSkga2jDtG5nIMSR4bunIGzhu5tuIMSR4buDIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6og4bufIG3hu6ljIMSR4buZIHRpbiBj4bqteSA5NSUuIMSQaeG7gXUgbsOgeSBow6BtIMO9IHLhurFuZywgdHJvbmcgYuG7mSBk4buvIGxp4buHdSB0w61uIGThu6VuZyBuw6B5LCBnaeG7m2kgdMOtbmgga2jDtG5nIHBo4bqjaSBsw6AgeeG6v3UgdOG7kSBk4buxIGLDoW8gxJHDoW5nIGvhu4MgY2hvIHTDrG5oIHRy4bqhbmcgaMO0biBuaMOibi4gRG8gxJHDsywga2hpIGPDoWMgdOG7lSBjaOG7qWMgdMOtbiBk4bulbmcgxJHDoW5oIGdpw6Ega2jhuqMgbsSDbmcgdmF5IGThu7FhIHRyw6puIHTDrG5oIHRy4bqhbmcgaMO0biBuaMOibiwgdmnhu4djIHBow6JuIGJp4buHdCDEkeG7kWkgeOG7rSBk4buxYSB0csOqbiBnaeG7m2kgdMOtbmggbMOgIGtow7RuZyBjw7MgY8ahIHPhu58gdGjhu5FuZyBrw6ogcsO1IHLDoG5nIHbDrCBoYWkgYmnhur9uIG7DoHkga2jDtG5nIGPDsyBt4buRaSBsacOqbiBo4buHIHBo4bulIHRodeG7mWMgxJHDoW5nIGvhu4MuICAgDQogICAgDQoqICoqcC12YWx1ZSAodHdvLXNpZGVkKToqKiAgIA0KDQogICogYG1pZHAuZXhhY3QgKEZlbWFsZSk6IDAuODA0MTk4NGAsIGBmaXNoZXIuZXhhY3QgKEZlbWFsZSk6IDAuODM3NTc5M2AsIGBjaGkuc3F1YXJlIChGZW1hbGUpOiAwLjgwMzMzNDNgIC0gVOG6pXQgY+G6oyBjw6FjIGdpw6EgdHLhu4sgKnAqLXZhbHVlIG7DoHkgxJHhu4F1IHLhuqV0IGzhu5tuICjEkeG7gXUgbOG7m24gaMahbiAwLjA1KS4gICANCiAgDQogICogKirDnSBuZ2jEqWEgdHJvbmcgYuG7kWkgY+G6o25oIENyZWRpdDoqKiBN4buZdCAqcCotdmFsdWUgY2FvIG5oxrAgduG6rXkgY2hvIHRo4bqleSBraMO0bmcgY8OzIMSR4bunIGLhurFuZyBjaOG7qW5nIHRo4buRbmcga8OqIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJCBy4bqxbmcga2jDtG5nIGPDsyBt4buRaSBxdWFuIGjhu4cgZ2nhu69hICJHZW5kZXIiIHbDoCAiTWFycmllZCIgKHThu6ljIGzDoCBjaMO6bmcgxJHhu5ljIGzhuq1wKS4gxJBp4buBdSBuw6B5IGPFqW5nIGPhu6duZyBj4buRIGvhur90IGx14bqtbiBy4bqxbmcsIHRyb25nIGLhu5kgZOG7ryBsaeG7h3UgQ3JlZGl0LCB0w6xuaCB0cuG6oW5nIGjDtG4gbmjDom4ga2jDtG5nIHBo4bulIHRodeG7mWMgdsOgbyBnaeG7m2kgdMOtbmguIERvIMSRw7MsIGPDoWMgY2jDrW5oIHPDoWNoIGNobyB2YXkgZOG7sWEgdHLDqm4gc+G7sSBr4bq/dCBo4bujcCBj4bunYSBoYWkgeeG6v3UgdOG7kSBuw6B5IGPDsyB0aOG7gyBraMO0bmcgbWFuZyBs4bqhaSBs4bujaSB0aOG6vyBk4buxIMSRb8OhbiDEkcOhbmcga+G7gywgdsOgIHZp4buHYyBz4butIGThu6VuZyBnaeG7m2kgdMOtbmggxJHhu4Mgc3V5IGx14bqtbiB24buBIHTDrG5oIHRy4bqhbmcgaMO0biBuaMOibiAodsOgIHThu6sgxJHDsyDhuqNuaCBoxrDhu59uZyDEkeG6v24gcXV54bq/dCDEkeG7i25oIHTDrW4gZOG7pW5nKSBsw6Aga2jDtG5nIGPDsyBjxqEgc+G7nyB0aOG7kW5nIGvDqiB24buvbmcgY2jhuq9jLiAgICANCiAgDQogIA0KIyMgKipCaeG6v24gU3R1ZGVudCB2w6AgRXRobmljaXR5KiogICANCg0KYGBge3IsZWNobz1UUlVFfQ0KbzEgPC0gb2Rkc3JhdGlvKGsyKQ0KbzENCmBgYA0KICAgDQogICBL4bq/dCBxdeG6oyBvZGRzcmF0aW8gY2hvIHRo4bqleSBraGkgbmjDs20gIk5vIiAoa2jDtG5nIHBo4bqjaSBzaW5oIHZpw6puKSBsw6AgdGhhbSBjaGnhur91LCB04bu3IGzhu4cgY8aw4bujYyDEkeG7gyBt4buZdCBuZ8aw4budaSBsw6Agc2luaCB2acOqbiAoWWVzKSBzbyB24bubaSBraMO0bmcgcGjhuqNpIHNpbmggdmnDqm4gbMOgIDEuMjk0MDc0IGzhuqduLiBN4bq3YyBkw7kgxrDhu5tjIHTDrW5oIG7DoHkgY2hvIHRo4bqleSB04bu3IGzhu4cgY8aw4bujYyBsw6Agc2luaCB2acOqbiBjYW8gaMahbiBt4buZdCBjaMO6dCwga2hv4bqjbmcgdGluIGPhuq15IDk1JSBjaG8gdOG7tyBs4buHIGPGsOG7o2MgKDAuNTM2MjM5NSDEkeG6v24gMy4yMTIxOTMpIGJhbyBn4buTbSBnacOhIHRy4buLIDEuIEvhur90IGjhu6NwIHbhu5tpIHAtdmFsdWUgbOG7m24gKHbDrSBk4bulOiBjaGkuc3F1YXJlID0gMC41MTU2MzIzKSwgY2jDum5nIHRhIGtow7RuZyBjw7MgxJHhu6cgYuG6sW5nIGNo4bupbmcgdGjhu5FuZyBrw6ogxJHhu4Mga+G6v3QgbHXhuq1uIHLhurFuZyBjw7MgbeG7kWkgbGnDqm4gaOG7hyDEkcOhbmcga+G7gyBnaeG7r2EgdMOsbmggdHLhuqFuZyBzaW5oIHZpw6puIHbDoCBz4bqvYyB04buZYy4gVHJvbmcgYuG7kWkgY+G6o25oIGLhu5kgZOG7ryBsaeG7h3UgQ3JlZGl0LCDEkWnhu4F1IG7DoHkgY8OzIG5naMSpYSBsw6Agc+G7sSBwaMOibiBi4buRIHPhuq9jIHThu5ljIGtow7RuZyBjw7Mgc+G7sSBraMOhYyBiaeG7h3QgdGjhu5FuZyBrw6ogxJHDoW5nIGvhu4MgZ2nhu69hIHNpbmggdmnDqm4gdsOgIG5nxrDhu51pIGtow7RuZyBwaOG6o2kgc2luaCB2acOqbiwgdsOgIGRvIMSRw7MsIHZp4buHYyBz4butIGThu6VuZyBt4buZdCB0cm9uZyBoYWkgYmnhur9uIG7DoHkgxJHhu4Mgc3V5IGx14bqtbiB24buBIGJp4bq/biBjw7JuIGzhuqFpIG5o4bqxbSDEkcOhbmggZ2nDoSBraOG6oyBuxINuZyB2YXkgdMOtbiBk4bulbmcgbMOgIGtow7RuZyBjw7MgY8ahIHPhu58gduG7r25nIGNo4bqvYy4gICANCiAgIA0KICAgDQogIA==