library(readr)
## Warning: package 'readr' was built under R version 4.3.3
library(data.table)
library(ggplot2)
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:data.table':
## 
##     between, first, last
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(skimr)
## Warning: package 'skimr' was built under R version 4.3.3
library(psych)
## Warning: package 'psych' was built under R version 4.3.3
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
library(csv)
## Warning: package 'csv' was built under R version 4.3.3
library(DT)
library(pander)
## Warning: package 'pander' was built under R version 4.3.3
library(formattable)
## Warning: package 'formattable' was built under R version 4.3.3
library(htmltools)
## 
## Attaching package: 'htmltools'
## The following object is masked from 'package:pander':
## 
##     p
library(DescTools)
## 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
## The following object is masked from 'package:data.table':
## 
##     %like%
library(epitools)
library(pscl)
## Warning: package 'pscl' was built under R version 4.3.3
## Classes and Methods for R originally developed in the
## Political Science Computational Laboratory
## Department of Political Science
## Stanford University (2002-2015),
## by and under the direction of Simon Jackman.
## hurdle and zeroinfl functions by Achim Zeileis.

PHÂN TÍCH CÁC YẾU TỐ ẢNH HƯỞNG ĐẾN CHẤT LƯỢNG CUỘC SỐNG TẠI CÁC QUỐC GIA TRÊN THẾ GIỚI

CHƯƠNG 1: TỔNG QUAN NGHIÊN CỨU

1.1. Lý do chọn đề tài

Chất lượng cuộc sống là một chỉ báo tổng hợp, phản ánh mức độ phát triển bền vững và khả năng đáp ứng nhu cầu sống cơ bản lẫn nâng cao của người dân trong một quốc gia. Trong bối cảnh toàn cầu hóa và cạnh tranh quốc tế ngày càng gia tăng, chất lượng cuộc sống không chỉ là vấn đề xã hội mà còn trở thành tiêu chí quan trọng trong hoạch định chính sách công, thu hút đầu tư và nâng cao năng lực cạnh tranh quốc gia.

Tuy nhiên, chất lượng cuộc sống là một khái niệm đa chiều, chịu tác động bởi nhiều yếu tố khác nhau như sức mua, mức độ an toàn, hệ thống y tế, điều kiện khí hậu, ô nhiễm, giao thông, giá cả sinh hoạt,… Chính vì vậy, việc đo lường và lượng hóa tác động của từng yếu tố đối với chất lượng sống là thách thức lớn, đòi hỏi cách tiếp cận khoa học, hệ thống và dựa trên nền tảng định lượng vững chắc.

Từ thực tiễn đó, đề tài lựa chọn khai thác bộ dữ liệu công khai từ nền tảng Kaggle về các chỉ số xã hội và kinh tế. Bộ dữ liệu cung cấp thông tin phong phú cho hơn 200 quốc gia và vùng lãnh thổ, kết hợp giữa biến định lượng và định tính, bao gồm các chỉ số về sức mua, an toàn, chất lượng chăm sóc y tế, khí hậu, chi phí sinh hoạt, giá nhà, ô nhiễm, giao thông và chất lượng sống tổng thể. Dữ liệu có độ bao phủ toàn cầu, cập nhật liên tục và phản ánh tương đối sát thực tế đời sống tại các quốc gia, tạo điều kiện thuận lợi cho việc khai thác phân tích thống kê.

Đề tài sử dụng các mô hình hồi quy xác suất, bao gồm cả tuyến tính và phi tuyến (logit, probit và cloglog), nhằm kiểm định và đánh giá mức độ ảnh hưởng của từng yếu tố lên xác suất đạt được mức chất lượng sống cao. Thông qua đó, nghiên cứu không chỉ cung cấp cái nhìn định lượng rõ ràng về mối quan hệ nhân quả giữa các yếu tố xã hội chủ chốt, mà còn có thể đề xuất các khuyến nghị mang tính thực tiễn, góp phần hỗ trợ quá trình xây dựng chính sách công, quy hoạch đô thị hoặc định hướng các nghiên cứu liên ngành về phát triển con người.

1.2. Mục tiêu nghiên cứu

Mục tiêu chung

Đề tài nhằm phân tích các yếu tố có thể ảnh hưởng đến chất lượng cuộc sống tại các quốc gia khác nhau trên thế giới, thông qua việc ứng dụng các mô hình phân tích định lượng trên bộ dữ liệu từ Numbeo. Qua đó, nghiên cứu góp phần nhận diện những yếu tố nổi bật giúp nâng cao chất lượng sống, đồng thời minh chứng cho vai trò của dữ liệu và mô hình hồi quy trong việc giải thích các hiện tượng xã hội.

Mục tiêu chi tiết

Đề tài hướng đến việc làm rõ khái niệm chất lượng cuộc sống dưới góc nhìn định lượng và xác định các yếu tố chính có khả năng ảnh hưởng đến chỉ số này, bao gồm sức mua, mức độ an toàn, chất lượng y tế, khí hậu và các điều kiện sống liên quan. Nghiên cứu thực hiện quá trình xử lý và làm sạch bộ dữ liệu từ Numbeo để phù hợp với các mô hình phân tích thống kê. Tiếp theo, các mô hình hồi quy xác suất tuyến tính và phi tuyến tính như logit, probit và cloglog được áp dụng nhằm kiểm định mức độ tác động của từng yếu tố đến khả năng đạt được chất lượng sống cao. Trên cơ sở kết quả mô hình, nghiên cứu sẽ so sánh mức độ phù hợp và ý nghĩa thống kê của các yếu tố, từ đó nhận diện những yếu tố có ảnh hưởng rõ rệt nhất. Cuối cùng, đề tài đưa ra một số gợi ý mang tính định hướng nhằm nâng cao chất lượng cuộc sống cũng như tạo tiền đề cho các nghiên cứu tiếp theo đi sâu vào từng khu vực hoặc nhóm dân cư cụ thể.

1.3. Đối tượng và phạm vi nghiên cứu

Đối tượng nghiên cứu

Đối tượng nghiên cứu của đề tài là mối quan hệ giữa các yếu tố kinh tế – xã hội và khả năng đạt được chất lượng cuộc sống cao tại các quốc gia. Cụ thể, nghiên cứu xem xét mức độ tác động của các yếu tố như sức mua, mức độ an toàn, chất lượng y tế và điều kiện khí hậu đến xác suất một quốc gia được đánh giá là có chất lượng sống cao.

Phạm vi nghiên cứu

Về không gian: Đề tài sử dụng dữ liệu được thu thập từ nền tảng Kaggle, bao gồm thông tin của hơn 200 quốc gia và vùng lãnh thổ trên toàn thế giới. Tuy nhiên, dữ liệu thực tế được xử lý sau khi loại bỏ những quan sát thiếu thông tin.

Về thời gian: Dữ liệu được cập nhật vào năm 2024 tại thời điểm tải về từ trang Kaggle.

Về nội dung: Nghiên cứu tập trung vào phân tích các yếu tố: sức mua, mức độ an toàn, chất lượng y tế và khí hậu. Tuy nhiên, thông qua phân tích định lượng, hai biến có ảnh hưởng rõ rệt và ổn định là sức mua và mức độ an toàn được giữ lại trong các mô hình chính thức.

Về phương pháp: Đề tài sử dụng các mô hình hồi quy xác suất nhị phân, bao gồm: logit, probit và cloglog để kiểm định tác động của các yếu tố lên xác suất đạt chất lượng sống cao. Dữ liệu được xử lý và phân tích bằng phần mềm R.

1.4. Bố cục

Chương 1: Tổng quan nghiên cứu

Chương 2: Dữ liệu nghiên cứu

Chương 3: Phân tích và kết quả

Chương 4: Kết luận và kiến nghị

CHƯƠNG 2: DỮ LIỆU NGHIÊN CỨU

Bộ dữ liệu được sử dụng trong nghiên cứu này cung cấp một cái nhìn toàn diện về các chỉ số phản ánh chất lượng cuộc sống tại nhiều quốc gia, được tổng hợp từ trang Kaggle về các chỉ số sinh hoạt do người dùng đóng góp. Dữ liệu bao gồm nhiều yếu tố đa dạng như sức mua, mức độ an toàn, chất lượng dịch vụ y tế, điều kiện khí hậu, chi phí sinh hoạt, giá bất động sản, tình trạng giao thông, mức độ ô nhiễm và chất lượng cuộc sống tổng thể với 263 quan sát tương đương với 263 quốc gia và 18 biến (9 biến định lượng và 9 biến định tính) . Các chỉ số này được thể hiện dưới dạng điểm số định lượng kết hợp với phân loại mô tả, nhằm mang lại cái nhìn sâu sắc và đa chiều về môi trường sống tại từng quốc gia.

# Đọc bộ dữ liệu
d <- read.csv("D:/naaaaaa/PTDLDT/Quality_of_Life.csv")
data.table(d)
##                country Purchasing.Power.Value Purchasing.Power.Category
##   1:       Afghanistan                  32.15                       Low
##   2:     Aland Islands                 125.01                      High
##   3:           Albania                  42.82                       Low
##   4:          Alderney                   0.00                       Low
##   5:           Algeria                  27.60                       Low
##  ---                                                                   
## 232: Wallis And Futuna                   0.00                       Low
## 233:    Western Sahara                   0.00                       Low
## 234:             Yemen                  20.74                       Low
## 235:            Zambia                  22.32                       Low
## 236:          Zimbabwe                  28.76                       Low
##      Safety.Value Safety.Category Health.Care.Value Health.Care.Category
##   1:        25.33             Low             24.24                  Low
##   2:        71.81            High             79.72                 High
##   3:        55.52            High             48.21                 High
##   4:        83.79            High            100.00                 High
##   5:        47.54            High             54.43                 High
##  ---                                                                    
## 232:         0.00             Low              0.00                  Low
## 233:        62.87            High              0.00                  Low
## 234:        34.07             Low             25.31                  Low
## 235:        54.39            High             54.44                 High
## 236:        39.31             Low             44.80                 High
##      Climate.Value Climate.Category Cost.of.Living.Value
##   1:          0.00              Low                21.08
##   2:          0.00              Low                53.44
##   3:         86.43             High                40.85
##   4:          0.00              Low                 0.00
##   5:         94.82             High                25.31
##  ---                                                    
## 232:          0.00              Low                 0.00
## 233:          0.00              Low                 0.00
## 234:          0.00              Low                48.66
## 235:          0.00              Low                36.74
## 236:         96.76             High                35.36
##      Cost.of.Living.Category Property.Price.to.Income.Value
##   1:                     Low                            7.8
##   2:                     Low                           5.33
##   3:                     Low                          14.88
##   4:                     Low                              0
##   5:                     Low                           21.7
##  ---                                                       
## 232:                     Low                              0
## 233:                     Low                          12.75
## 234:                     Low                          15.98
## 235:                     Low                          72.42
## 236:                     Low                          17.35
##      Property.Price.to.Income.Category Traffic.Commute.Time.Value
##   1:                               Low                      56.17
##   2:                               Low                      19.05
##   3:                              High                      36.74
##   4:                               Low                       5.00
##   5:                              High                      45.09
##  ---                                                             
## 232:                               Low                       0.00
## 233:                              High                       0.00
## 234:                              High                      15.00
## 235:                              High                      38.86
## 236:                              High                      27.79
##      Traffic.Commute.Time.Category Pollution.Value Pollution.Category
##   1:                          High           84.44               High
##   2:                           Low           18.05                Low
##   3:                          High           77.25               High
##   4:                           Low            1.72                Low
##   5:                          High           63.87               High
##  ---                                                                 
## 232:                           Low            0.00                Low
## 233:                           Low            0.00                Low
## 234:                           Low           83.17               High
## 235:                          High           80.90               High
## 236:                           Low           78.53               High
##      Quality.of.Life.Value Quality.of.Life.Category
##   1:                  0.00                      Low
##   2:                  0.00                      Low
##   3:                104.16                      Low
##   4:                  0.00                      Low
##   5:                 98.83                      Low
##  ---                                               
## 232:                  0.00                      Low
## 233:                  0.00                      Low
## 234:                  0.00                      Low
## 235:                  0.00                      Low
## 236:                 94.20                      Low

2.1. Mô tả bộ dữ liệu

Để phù hợp với mục tiêu nghiên cứu, đề tài chỉ tập trung phân tích các biến định tính liên quan đến chất lượng cuộc sống. Việc lựa chọn nhóm biến này giúp làm nổi bật các yếu tố mang tính cảm nhận và đánh giá chủ quan của người dân, đồng thời phù hợp với cách tiếp cận bằng các mô hình hồi quy xác suất phi tuyến.

# Tạo biến định tính
bdt <- c( "Purchasing.Power.Category", "Safety.Category", "Health.Care.Category", "Climate.Category", "Cost.of.Living.Category", "Property.Price.to.Income.Category", "Traffic.Commute.Time.Category", "Pollution.Category", "Quality.of.Life.Category" )

# Tạo bộ dữ liệu mới chỉ có biến định tính
dt <- d[, bdt]
dt <- data.frame(lapply(dt, as.factor))
data.table(dt)
##      Purchasing.Power.Category Safety.Category Health.Care.Category
##   1:                       Low             Low                  Low
##   2:                      High            High                 High
##   3:                       Low            High                 High
##   4:                       Low            High                 High
##   5:                       Low            High                 High
##  ---                                                               
## 232:                       Low             Low                  Low
## 233:                       Low            High                  Low
## 234:                       Low             Low                  Low
## 235:                       Low            High                 High
## 236:                       Low             Low                 High
##      Climate.Category Cost.of.Living.Category Property.Price.to.Income.Category
##   1:              Low                     Low                               Low
##   2:              Low                     Low                               Low
##   3:             High                     Low                              High
##   4:              Low                     Low                               Low
##   5:             High                     Low                              High
##  ---                                                                           
## 232:              Low                     Low                               Low
## 233:              Low                     Low                              High
## 234:              Low                     Low                              High
## 235:              Low                     Low                              High
## 236:             High                     Low                              High
##      Traffic.Commute.Time.Category Pollution.Category Quality.of.Life.Category
##   1:                          High               High                      Low
##   2:                           Low                Low                      Low
##   3:                          High               High                      Low
##   4:                           Low                Low                      Low
##   5:                          High               High                      Low
##  ---                                                                          
## 232:                           Low                Low                      Low
## 233:                           Low                Low                      Low
## 234:                           Low               High                      Low
## 235:                          High               High                      Low
## 236:                           Low               High                      Low

2.2. Mô tả các biến

  • Purchasing Power Category (Mức độ sức mua): phản ánh khả năng chi tiêu của người dân tại từng quốc gia, được phân loại theo mức cao hoặc thấp.

  • Safety Category (Mức độ an toàn): thể hiện cảm nhận về sự an toàn trong xã hội.

  • Health Care Category (Chất lượng y tế): mô tả đánh giá của người dân đối với hệ thống y tế.

  • Climate Category (Điều kiện khí hậu): phản ánh sự hài lòng về khí hậu, thời tiết.

  • Cost of Living Category (Chi phí sinh hoạt): mô tả mức độ đắt đỏ.

  • Property Price to Income Category (Tỷ lệ giá bất động sản so với thu nhập): cho biết mức độ khả năng mua nhà của người dân thông qua tỷ lệ giữa giá nhà và thu nhập trung bình.

  • Traffic Commute Time Category (Thời gian di chuyển giao thông): phản ánh cảm nhận về tình trạng giao thông, đặc biệt là thời gian đi lại trung bình mỗi ngày.

  • Pollution Category (Mức độ ô nhiễm): thể hiện nhận định về tình trạng ô nhiễm không khí, tiếng ồn, nguồn nước và môi trường tổng thể.

  • Quality of Life Category (Chất lượng sống): là biến phụ thuộc chính trong nghiên cứu, tổng hợp đánh giá chung về mức sống, điều kiện sinh hoạt và mức độ hài lòng của người dân.

CHƯƠNG 3: PHÂN TÍCH VÀ KẾT QUẢ

Trong nghiên cứu này, biến phụ thuộc được lựa chọn là Quality of Life Category – đại diện cho chất lượng sống tổng thể tại mỗi quốc gia, được mã hóa dưới dạng định tính (cao/thấp). Các biến độc lập gồm: Purchasing Power, Safety, Health Care, và Climate đều mang tính chất phân loại và phản ánh các yếu tố chủ quan trong đánh giá của người dân. Do biến phụ thuộc là biến định tính nhị phân, nghiên cứu áp dụng các mô hình hồi quy phi tuyến (logit, probit, cloglog) để phân tích mối quan hệ giữa các yếu tố trên và khả năng thuộc nhóm chất lượng sống cao.

3.1. Thống kê mô tả biến định phụ thuộc

Bảng tần số

table(factor(dt$Quality.of.Life.Category,
                         levels = c("High", "Low"),
                         labels = c("Chất lượng cuộc sống cao", "Chất lượng cuộc sống thấp")))
## 
##  Chất lượng cuộc sống cao Chất lượng cuộc sống thấp 
##                        69                       167

Bảng tần suất

table(factor(dt$Quality.of.Life.Category,
             levels = c("High", "Low"),
             labels = c("Chất lượng cuộc sống cao", "Chất lượng cuộc sống thấp"))) / length(dt$Quality.of.Life.Category)
## 
##  Chất lượng cuộc sống cao Chất lượng cuộc sống thấp 
##                 0.2923729                 0.7076271

Biểu đồ

library(ggplot2)

# Đặt factor với labels tiếng Việt
dt$Quality <- factor(trimws(dt$Quality.of.Life.Category),
                     levels = c("High", "Low"),
                     labels = c("Chất lượng cuộc sống cao", "Chất lượng cuộc sống thấp"))

# Tạo bảng tần số
muc_chatluong <- table(dt$Quality)


# Đưa về dạng data frame
df_chatluong <- as.data.frame(prop.table(table(dt$Quality)))
colnames(df_chatluong) <- c("MucChatLuong", "Count")

# Tính phần trăm và thêm nhãn
df_chatluong$Percent <- round(df_chatluong$Count / sum(df_chatluong$Count) * 100, 1)
df_chatluong$Label <- paste0(df_chatluong$Percent, "%")

# Vẽ biểu đồ tròn
ggplot(df_chatluong, aes(x = "", y = Count, fill = MucChatLuong)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  geom_text(aes(label = Label), position = position_stack(vjust = 0.5)) +
  labs(title = "Biểu đồ 3.1: Phân bố mức độ chất lượng cuộc sống") +
  theme_void() +
  theme(plot.title = element_text(hjust = 0.5))

Nhận xét

Dựa vào biểu đồ 3.1 cho thấy, trong toàn bộ dữ liệu, chỉ khoảng 29% các quốc gia được xếp vào nhóm có chất lượng cuộc sống cao, trong khi đó 70.8% còn lại rơi vào nhóm chất lượng cuộc sống thấp. Điều này phản ánh một sự mất cân đối đáng kể giữa hai nhóm. Kết quả này cho thấy rằng đa số người dân tại các quốc gia trong tập dữ liệu không cảm nhận được cuộc sống của họ ở mức cao — đây có thể là hệ quả từ nhiều yếu tố như mức sống chưa đảm bảo, an toàn xã hội thấp, chi phí sinh hoạt cao hoặc chất lượng dịch vụ y tế, môi trường còn nhiều hạn chế.

3.2. Kiểm định tính độc lập

Kiểm định Chi bình phương là một phương pháp thống kê thường được sử dụng để đánh giá mối liên hệ giữa hai biến phân loại. Cụ thể, phương pháp này kiểm tra xem sự phân bố của một biến có phụ thuộc vào biến còn lại hay không, thông qua việc so sánh giữa tần suất quan sát thực tế và tần suất kỳ vọng trong bảng phân phối chéo.

Công thức tính giá trị thống kê Chi bình phương được thể hiện như sau:

\[ \chi^2 = \sum_{i,j} \frac{(n_{ij} - \hat{\mu}_{ij})^2}{\hat{\mu}_{ij}} \]

3.2.1. Biến Quality of Life và Biến Purchasing Power

Giả thuyết kiểm định

  • \(H_0\): Chất lượng cuộc sống và Sức mua thực tế là hai biến độc lập.

  • \(H_1\): Chất lượng cuộc sống và Sức mua thực tế có mối liên hệ với nhau.

mtht1 <- table(dt$Quality.of.Life.Category, dt$Purchasing.Power.Category)
chisq.test(mtht1)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  mtht1
## X-squared = 70.307, df = 1, p-value < 2.2e-16

Nhận xét:

Dựa trên kết quả kiểm định Chi bình phương, ta thấy p_value < 2.2e-16 bé hơn với mức ý nghĩa thông thường (α = 0.05), do đó ta bác bỏ giả thuyết \(H_0\). Điều này cho thấy có mối liên hệ thống kê có ý nghĩa giữa chất lượng cuộc sống và sức mua thực tế.

3.2.2. Biến Quality of Life và Biến Safety

Giả thuyết kiểm định

  • \(H_0\): Chất lượng cuộc sống và Mức độ an toàn là hai biến độc lập.

  • \(H_1\): Chất lượng cuộc sống và Mức độ an toàn có mối liên hệ với nhau.

mtht2 <- table(dt$Quality.of.Life.Category, dt$Safety.Category)
chisq.test(mtht2)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  mtht2
## X-squared = 16.816, df = 1, p-value = 4.118e-05

Nhận xét:

Dựa trên kết quả kiểm định Chi bình phương, ta thấy p_value = 4.118e-05 bé hơn với mức ý nghĩa thông thường (α = 0.05), do đó ta bác bỏ giả thuyết \(H_0\). Điều này cho thấy có mối liên hệ thống kê có ý nghĩa giữa chất lượng cuộc sống và Mức độ an toàn.

3.2.3. Biến Quality of Life và Biến Health Care

Giả thuyết kiểm định

  • \(H_0\): Chất lượng cuộc sống và Chất lượng y tế là hai biến độc lập.

  • \(H_1\): Chất lượng cuộc sống và Chất lượng y tế có mối liên hệ với nhau.

mtht3 <- table(dt$Quality.of.Life.Category, dt$Health.Care.Category)
chisq.test(mtht3)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  mtht3
## X-squared = 19.426, df = 1, p-value = 1.046e-05

Nhận xét:

Dựa trên kết quả kiểm định Chi bình phương, ta thấy p_value = 1.046e-05 bé hơn với mức ý nghĩa thông thường (α = 0.05), do đó ta bác bỏ giả thuyết \(H_0\). Điều này cho thấy có mối liên hệ thống kê có ý nghĩa giữa chất lượng cuộc sống và Chất lượng y tế.

3.2.4. Biến Quality of Life và Biến Climate

Giả thuyết kiểm định

  • \(H_0\): Chất lượng cuộc sống và Điều kiện khí hậu là hai biến độc lập.

  • \(H_1\): Chất lượng cuộc sống và Điều kiện khí hậu có mối liên hệ với nhau.

mtht4 <- table(dt$Quality.of.Life.Category, dt$Climate.Category)
chisq.test(mtht4)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  mtht4
## X-squared = 103.21, df = 1, p-value < 2.2e-16

Nhận xét:

Dựa trên kết quả kiểm định Chi bình phương, ta thấy p_value < 2.2e-16 bé hơn với mức ý nghĩa thông thường (α = 0.05), do đó ta bác bỏ giả thuyết \(H_0\). Điều này cho thấy có mối liên hệ thống kê có ý nghĩa giữa chất lượng cuộc sống và Điều kiện khí hậu.

3.2.5. Biến Quality of Life và Biến Cost Living

Giả thuyết kiểm định

  • \(H_0\): Chất lượng cuộc sống và Chi phí sinh hoạt là hai biến độc lập.

  • \(H_1\): Chất lượng cuộc sống và Chi phí sinh hoạt có mối liên hệ với nhau.

mtht5 <- table(dt$Quality.of.Life.Category, dt$Cost.of.Living.Category)
chisq.test(mtht5)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  mtht5
## X-squared = 2.1005, df = 1, p-value = 0.1472

Nhận xét:

Dựa trên kết quả kiểm định Chi bình phương, ta thấy p_value = 0.1472 lớn hơn với mức ý nghĩa thông thường (α = 0.05), do đó không đủ bằng chứng để bác bỏ giả thuyết \(H_0\). Không có mối liên hệ thống kê có ý nghĩa giữa chất lượng cuộc sống và chi phí sinh hoạt. Điều này hàm ý rằng trong tập dữ liệu này, mức chi phí sinh hoạt không cho thấy ảnh hưởng rõ rệt đến chất lượng cuộc sống được phân loại.

3.2.6. Biến Quality of Life và Biến Property to Income

Giả thuyết kiểm định

  • \(H_0\): Chất lượng cuộc sống và Tỷ lệ giá bất động sản so với thu nhập là hai biến độc lập.

  • \(H_1\): Chất lượng cuộc sống và Tỷ lệ giá bất động sản so với thu nhập có mối liên hệ với nhau.

mtht6 <- table(dt$Quality.of.Life.Category, dt$Property.Price.to.Income.Category)
chisq.test(mtht6)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  mtht6
## X-squared = 2.605, df = 1, p-value = 0.1065

Nhận xét:

Dựa trên kết quả kiểm định Chi bình phương, ta thấy p_value = 0.1065 lớn hơn với mức ý nghĩa thông thường (α = 0.05), do đó không đủ bằng chứng để bác bỏ giả thuyết \(H_0\). Không có mối liên hệ thống kê có ý nghĩa giữa chất lượng cuộc sống và tỷ lệ giá bất động sản so với thu nhập. Điều này hàm ý rằng trong tập dữ liệu này, tỷ lệ giá bất động sản so với thu nhập không cho thấy ảnh hưởng rõ rệt đến chất lượng cuộc sống được phân loại.

3.2.7. Biến Quality of Life và Biến Traffic Commute Time

Giả thuyết kiểm định

  • \(H_0\): Chất lượng cuộc sống và Thời gian di chuyển giao thông là hai biến độc lập.

  • \(H_1\): Chất lượng cuộc sống và Thời gian di chuyển giao thông có mối liên hệ với nhau.

mtht7 <- table(dt$Quality.of.Life.Category, dt$Traffic.Commute.Time.Category)
chisq.test(mtht7)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  mtht7
## X-squared = 0.036681, df = 1, p-value = 0.8481

Nhận xét:

Dựa trên kết quả kiểm định Chi bình phương, ta thấy p_value = 0.8481 lớn hơn với mức ý nghĩa thông thường (α = 0.05), do đó không đủ bằng chứng để bác bỏ giả thuyết \(H_0\). Không có mối liên hệ thống kê có ý nghĩa giữa chất lượng cuộc sống và thời gian di chuyển giao thông với thu nhập. Điều này hàm ý rằng trong tập dữ liệu này, thời gian di chuyển giao thông so với thu nhập không cho thấy ảnh hưởng rõ rệt đến chất lượng cuộc sống được phân loại.

3.2.8. Biến Quality of Life và Biến Pollution

Giả thuyết kiểm định

  • \(H_0\): Chất lượng cuộc sống và Mức độ ô nhiễm là hai biến độc lập.

  • \(H_1\): Chất lượng cuộc sống và Mức độ ô nhiễm có mối liên hệ với nhau.

mtht8 <- table(dt$Quality.of.Life.Category, dt$Pollution.Category)
chisq.test(mtht8)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  mtht8
## X-squared = 3.574, df = 1, p-value = 0.05869

Dựa trên kết quả kiểm định Chi bình phương, ta thấy p_value = 0.05869 lớn hơn với mức ý nghĩa thông thường (α = 0.05), do đó không đủ bằng chứng để bác bỏ giả thuyết \(H_0\). Không có mối liên hệ thống kê có ý nghĩa giữa chất lượng cuộc sống và mức độ ô nhiễm. Điều này hàm ý rằng trong tập dữ liệu này, mức độ ô nhiễm không cho thấy ảnh hưởng rõ rệt đến chất lượng cuộc sống được phân loại.

3.3. Thống kê mô tả giữa 2 biến

3.3.1. Biến Quality of Life và Biến Purchasing Power

3.3.1.1.Bảng tần số
dt$Quality<- factor(dt$Quality.of.Life.Category,
                         levels = c("High", "Low"),
                         labels = c("Chất lượng cuộc sống cao", "Chất lượng cuộc sống thấp"))

dt$PurchasingPower <- factor(dt$Purchasing.Power.Category,
                          levels = c("High", "Low"),
                          labels = c("Sức mua thực tế cao", "Sức mua thực tế thấp"))

# Tạo bảng tần suất chéo 

tkmt2b1<- table(dt$Quality, dt$PurchasingPower)

# Thêm tổng hàng và tổng cột
sumtkmt2b1<- addmargins(tkmt2b1)
sumtkmt2b1
##                            
##                             Sức mua thực tế cao Sức mua thực tế thấp Sum
##   Chất lượng cuộc sống cao                   52                   17  69
##   Chất lượng cuộc sống thấp                  29                  138 167
##   Sum                                        81                  155 236
# Chuyển bảng tần suất thành data frame để vẽ
df_plot2 <- as.data.frame(tkmt2b1)
colnames(df_plot2) <- c("Quality_of_Life", "Purchasing_Power", "Count")

# Vẽ biểu đồ
library(ggplot2)
ggplot(df_plot2, aes(x = Purchasing_Power, y = Count, fill = Quality_of_Life)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.6) +
  geom_text(aes(label = Count),
            position = position_dodge(width = 0.7),
            vjust = -0.3, size = 3.5) +
  scale_fill_manual(values = c("#41ab5d", "#238b45")) +
  labs(
    title = "Biểu đồ 3.2: Mối liên hệ giữa Sức mua thực tế và Chất lượng cuộc sống",
    x = "Sức mua thực tế",
    y = "Số quốc gia",
    fill = "Chất lượng cuộc sống"
  ) +
  theme_minimal()

Nhận xét

Dựa vào biểu đồ 3.2,nhận thấy xu hướng phân hóa rõ rệt giữa chất lượng cuộc sống và sức mua thực tế. Cụ thể, trong số 69 quốc gia có chất lượng cuộc sống cao, có đến 52 quốc gia (khoảng 75%) đồng thời sở hữu sức mua thực tế cao. Ngược lại, trong nhóm 167 quốc gia có chất lượng cuộc sống thấp, phần lớn (138 quốc gia, tương đương 82,6%) lại có sức mua thực tế thấp. Sự chênh lệch đáng kể này phản ánh xu hướng đồng biến giữa hai yếu tố: khi sức mua thực tế cao thì chất lượng cuộc sống cũng có xu hướng cao, và ngược lại. Đây là cơ sở ban đầu để giả định rằng sức mua thực tế có thể là một yếu tố ảnh hưởng đến chất lượng cuộc sống của người dân.

3.3.1.2. Hiệu tỷ lệ
addmargins(tkmt2b1)
##                            
##                             Sức mua thực tế cao Sức mua thực tế thấp Sum
##   Chất lượng cuộc sống cao                   52                   17  69
##   Chất lượng cuộc sống thấp                  29                  138 167
##   Sum                                        81                  155 236

\[ p_1 = P(\text{Quality} = \text{Chất lượng cuộc sống cao} \mid \text{Purchasing} = Sức mua thực tế cao) \] \[ p_2 = P(\text{Quality} =\text{Chất lượng cuộc sống cao} \mid \text{Purchasing} = Sức mua thực tế thấp) \]

Giả thuyết kiểm định

\(H_0\): \(p_1 - p_2 = 0\) (Tỷ lệ quốc gia có chất lượng cuộc sống cao ở nhóm sức mua thực tế cao bằng với nhóm sức mua thực tế thấp)

\(H_1\): \(p_1 - p_2 > 0\) (Tỷ lệ quốc gia có chất lượng cuộc sống cao ở nhóm sức mua thực tế cao nhiều hơn nhóm sức mua thực tế thấp)

# Số quốc gia có chất lượng sống cao trong từng nhóm sức mua 
counts_Purchasing <- c(tkmt2b1["Chất lượng cuộc sống cao", "Sức mua thực tế cao"],
                   tkmt2b1["Chất lượng cuộc sống cao", "Sức mua thực tế thấp"])

# Tổng số người trong từng sức mua
totals_Purchasing <- c(sum(tkmt2b1[, "Sức mua thực tế cao"]),
                   sum(tkmt2b1[, "Sức mua thực tế thấp"]))

# Kiểm định tỉ lệ một phía: p1 > p2
test_Purchasing_greater <- prop.test(counts_Purchasing, totals_Purchasing,
                              alternative = "greater", correct = FALSE)

# Hiển thị kết quả
test_Purchasing_greater
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  counts_Purchasing out of totals_Purchasing
## X-squared = 72.857, df = 1, p-value < 2.2e-16
## alternative hypothesis: greater
## 95 percent confidence interval:
##  0.4354391 1.0000000
## sample estimates:
##    prop 1    prop 2 
## 0.6419753 0.1096774

Nhận xét

Kết quả kiểm định cho thấy sự khác biệt về tỷ lệ quốc gia có chất lượng cuộc sống cao giữa hai nhóm sức mua là có ý nghĩa thống kê. Cụ thể, tỷ lệ quốc gia có chất lượng cuộc sống cao trong nhóm có sức mua thực tế cao lớn hơn đáng kể so với nhóm có sức mua thực tế thấp. Với mức ý nghĩa 5%, ta bác bỏ giả thuyết \(H_0\). Điều này cho thấy có bằng chứng thống kê để khẳng định rằng sức mua thực tế cao với khả năng đạt được chất lượng cuộc sống cao cao hơn sức mua thực tế thấp. Điều này củng cố giả định rằng sức mua thực tế là một yếu tố quan trọng ảnh hưởng đến chất lượng cuộc sống của người dân.

3.3.1.3. Relative Risk
Purchasing <- table(dt$PurchasingPower,dt$Quality)
addmargins(Purchasing)
##                       
##                        Chất lượng cuộc sống cao Chất lượng cuộc sống thấp Sum
##   Sức mua thực tế cao                        52                        29  81
##   Sức mua thực tế thấp                       17                       138 155
##   Sum                                        69                       167 236
RelRisk(Purchasing, conf.level = .95)
## rel. risk    lwr.ci    upr.ci 
##  5.853304  3.679230  9.455743

Nhận xét

Kết quả phân tích Relative Risk (RR) cho thấy tỷ lệ quốc gia có chất lượng cuộc sống cao trong nhóm có sức mua thực tế cao gấp khoảng 5.85 lần so với nhóm có sức mua thực tế thấp. ĐỘ tin cậy 95% cho RR nằm trong khoảng từ 3.68 đến 9.46, điều này cho thấy sự khác biệt là có ý nghĩa thống kê.

Nói cách khác, sức mua thực tế cao là một yếu tố quan trọng giúp gia tăng khả năng đạt được chất lượng cuộc sống cao ở các quốc gia. Kết quả này củng cố thêm bằng chứng về mối liên hệ cùng chiều giữa sức mua thực tế và chất lượng cuộc sống.

3.3.1.4. Odds ratio
addmargins(Purchasing)
##                       
##                        Chất lượng cuộc sống cao Chất lượng cuộc sống thấp Sum
##   Sức mua thực tế cao                        52                        29  81
##   Sức mua thực tế thấp                       17                       138 155
##   Sum                                        69                       167 236
OddsRatio(Purchasing, conf.level = .95)
## odds ratio     lwr.ci     upr.ci 
##  14.555781   7.386468  28.683635

Nhận xét

Trong số các quốc gia có sức mua thực tế cao, xác suất để một quốc gia có chất lượng cuộc sống cao cao gấp khoảng 14.56 lần so với xác suất tương ứng ở nhóm quốc gia có sức mua thấp.

Độ tin cậy 95% dao động từ 7.39 đến 28.68, tức là ngay cả trong trường hợp ít chênh lệch nhất, nhóm có sức mua cao vẫn có khả năng đạt chất lượng sống cao hơn ít nhất 7 lần so với nhóm còn lại.

Điều này cho thấy sức mua thực tế là một yếu tố ảnh hưởng mạnh đến chất lượng cuộc sống, và mối liên hệ này là có ý nghĩa thống kê.

3.3.2. Biến Quality of Life và Biến Safety

3.3.2.1. Bảng tần số
dt$Quality<- factor(dt$Quality.of.Life.Category,
                         levels = c("High", "Low"),
                         labels = c("Chất lượng cuộc sống cao", "Chất lượng cuộc sống thấp"))
dt$Safety <- factor(dt$Safety.Category,
                          levels = c("High", "Low"),
                          labels = c("Mức độ an toàn cao", "Mức độ an toàn thấp"))
# Tạo bảng tần suất chéo 

tkmt2b2<- table(dt$Quality, dt$Safety)

# Thêm tổng hàng và tổng cột
sumtkmt2b2<- addmargins(tkmt2b2)
sumtkmt2b2
##                            
##                             Mức độ an toàn cao Mức độ an toàn thấp Sum
##   Chất lượng cuộc sống cao                  67                   2  69
##   Chất lượng cuộc sống thấp                121                  46 167
##   Sum                                      188                  48 236
# Chuyển bảng tần số thành data frame
df_plot2b2 <- as.data.frame(tkmt2b2)
colnames(df_plot2b2) <- c("Quality", "Safety", "Count")

# Vẽ biểu đồ
library(ggplot2)
ggplot(df_plot2b2, aes(x = Safety, y = Count, fill = Quality)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.6) +
  geom_text(aes(label = Count),
            position = position_dodge(width = 0.7),
            vjust = -0.3, size = 3.5) +
  scale_fill_manual(values = c("Chất lượng cuộc sống cao" = "#2E8B57",
                               "Chất lượng cuộc sống thấp" = "#E74C3C")) +
  labs(
    title = "Biểu đồ 3.3: Mối liên hệ giữa chất lượng cuộc sống và mức độ an toàn",
    x = "Mức độ an toàn",
    y = "Số quốc gia",
    fill = "Chất lượng cuộc sống"
  ) +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))

Nhận xét

Dựa theo biểu đồ 3.3, trong số 69 quốc gia có chất lượng cuộc sống cao, phần lớn (67 quốc gia, tương đương khoảng 97%) đồng thời có mức độ an toàn cao. Ngược lại, trong nhóm 167 quốc gia có chất lượng cuộc sống thấp, có 121 quốc gia (khoảng 72%) vẫn đạt mức độ an toàn cao, nhưng cũng có tới 46 quốc gia (gần 28%) rơi vào nhóm an toàn thấp. Sự phân bố này cho thấy mức độ an toàn có xu hướng đồng biến với chất lượng cuộc sống – các quốc gia có chất lượng sống cao gần như luôn gắn liền với mức độ an toàn cao. Tuy vậy, vẫn tồn tại một số quốc gia duy trì được mức độ an toàn dù chất lượng sống chưa cao, gợi ý rằng an toàn là một yếu tố quan trọng nhưng chưa đủ để đảm bảo chất lượng cuộc sống toàn diện.

3.3.2.2. Hiệu tỉ lệ
addmargins(tkmt2b2)
##                            
##                             Mức độ an toàn cao Mức độ an toàn thấp Sum
##   Chất lượng cuộc sống cao                  67                   2  69
##   Chất lượng cuộc sống thấp                121                  46 167
##   Sum                                      188                  48 236

\[ p_1 = P(\text{Quality} = \text{Chất lượng cuộc sống cao} \mid \text{Safety} = Mức độ an toàn cao) \]

\[ p_2 = P(\text{Quality} = \text{Chất lượng cuộc sống cao} \mid \text{Safety} = Mức độ an toàn thấp) \]

Giả thuyết kiểm định

\(H_0\): \(p_1 - p_2 = 0\) (Tỷ lệ quốc gia có chất lượng cuộc sống cao ở nhóm mức độ an toàn cao bằng với nhóm mức độ an toàn thấp)

\(H_1\): \(p_1 - p_2 > 0\) (Tỷ lệ quốc gia có chất lượng cuộc sống cao ở nhóm mức độ an toàn cao nhiều hơn nhóm mức độ an toàn thấp)

# Số quốc gia có chất lượng sống cao trong từng nhóm mức độ an toàn
counts_Safety <- c(tkmt2b2["Chất lượng cuộc sống cao", "Mức độ an toàn cao"],
                   tkmt2b2["Chất lượng cuộc sống cao", "Mức độ an toàn thấp"])

# Tổng số người trong từng nhóm mức độ an toàn
totals_Safety <- c(sum(tkmt2b2[, "Mức độ an toàn cao"]),
                   sum(tkmt2b2[, "Mức độ an toàn thấp"]))

# Kiểm định tỉ lệ một phía: p1 > p2
test_Safety_greater <- prop.test(counts_Safety, totals_Safety,
                              alternative = "greater", correct = FALSE)

# Hiển thị kết quả
test_Safety_greater
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  counts_Safety out of totals_Safety
## X-squared = 18.306, df = 1, p-value = 9.408e-06
## alternative hypothesis: greater
## 95 percent confidence interval:
##  0.2402068 1.0000000
## sample estimates:
##     prop 1     prop 2 
## 0.35638298 0.04166667

Nhận xét

Trong nhóm quốc gia có mức độ an toàn cao, khoảng 35.6% có chất lượng cuộc sống cao, trong khi ở nhóm an toàn thấp, tỷ lệ này chỉ là 4.2%. Kiểm định thống kê cho kết quả p-value = 9.408×10⁻⁶, nhỏ hơn 0.05, nên bác bỏ giả thuyết \(H_0\). Điều này cho thấy tỷ lệ quốc gia có chất lượng cuộc sống cao trong nhóm an toàn cao cao hơn đáng kể so với nhóm an toàn thấp. Nói cách khác, mức độ an toàn có mối liên hệ tích cực với chất lượng cuộc sống.

3.2.2.3. Relative Risk
Safety <- table(dt$Safety,dt$Quality)
addmargins(Safety)
##                      
##                       Chất lượng cuộc sống cao Chất lượng cuộc sống thấp Sum
##   Mức độ an toàn cao                        67                       121 188
##   Mức độ an toàn thấp                        2                        46  48
##   Sum                                       69                       167 236
RelRisk(Safety, conf.level = .95)
## rel. risk    lwr.ci    upr.ci 
##  8.553191  2.510927 31.322833

Nhận xét

Kết quả phân tích Relative Risk (RR) cho thấy tỷ lệ quốc gia có chất lượng cuộc sống cao trong nhóm có mức độ an toàn cao gấp khoảng 8.55 lần so với nhóm có mức độ an toàn thấp. Độ tin cậy 95% cho RR nằm trong khoảng từ 2.51 đến 31.32, chứng tỏ sự khác biệt này có ý nghĩa thống kê.

Điều này cho thấy rằng mức độ an toàn cao là một yếu tố quan trọng góp phần nâng cao chất lượng cuộc sống. Nói cách khác, các quốc gia càng an toàn thì càng có khả năng đạt được chất lượng sống cao.

3.2.2.4. Odds ratio
addmargins(Safety)
##                      
##                       Chất lượng cuộc sống cao Chất lượng cuộc sống thấp Sum
##   Mức độ an toàn cao                        67                       121 188
##   Mức độ an toàn thấp                        2                        46  48
##   Sum                                       69                       167 236
OddsRatio(Safety, conf.level = .95)
## odds ratio     lwr.ci     upr.ci 
##  12.735537   2.996858  54.121313

Nhận xét

Trong số các quốc gia có mức độ an toàn cao, khả năng để đạt chất lượng cuộc sống cao cao hơn khoảng 12.74 lần so với nhóm quốc gia có mức độ an toàn thấp.

Khoảng tin cậy 95% dao động từ khoảng 3.00 đến 54.12, nghĩa là ngay cả trong trường hợp thận trọng nhất, các quốc gia an toàn vẫn có khả năng đạt chất lượng sống cao hơn ít nhất 3 lần so với nhóm còn lại.

Điều này cho thấy rằng mức độ an toàn có mối liên hệ mạnh với chất lượng cuộc sống và kết quả này là có ý nghĩa thống kê.

3.3.3. Biến Quality of Life và Biến Health Care

3.3.3.1.Bảng tần số
dt$Quality<- factor(dt$Quality.of.Life.Category,
                         levels = c("High", "Low"),
                         labels = c("Chất lượng cuộc sống cao", "Chất lượng cuộc sống thấp"))
dt$HealthCare <- factor(dt$Health.Care.Category,
                          levels = c("High", "Low"),
                          labels = c("Chất lượng y tế cao", "Chất lượng y tế thấp"))
# Tạo bảng tần suất chéo 

tkmt2b3<- table(dt$Quality, dt$HealthCare)

# Thêm tổng hàng và tổng cột
sumtkmt2b3<- addmargins(tkmt2b3)
sumtkmt2b3
##                            
##                             Chất lượng y tế cao Chất lượng y tế thấp Sum
##   Chất lượng cuộc sống cao                   69                    0  69
##   Chất lượng cuộc sống thấp                 125                   42 167
##   Sum                                       194                   42 236
# Chuyển bảng tần số thành data frame
df_plot_b3 <- as.data.frame(tkmt2b3)
colnames(df_plot_b3) <- c("Quality", "HealthCare", "Count")

# Vẽ biểu đồ
library(ggplot2)

ggplot(df_plot_b3, aes(x = HealthCare, y = Count, fill = Quality)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.6) +
  geom_text(aes(label = Count),
            position = position_dodge(width = 0.7),
            vjust = -0.3, size = 3.5) +
  scale_fill_manual(values = c("#9ECAE1", "#8856A7")) + 
  labs(
    title = "Biểu đồ 3.4: Mối liên hệ giữa chất lượng cuộc sống và chất lượng y tế",
    x = "Chất lượng y tế",
    y = "Số quốc gia",
    fill = "Chất lượng cuộc sống"
  ) +
  theme_minimal()

Nhận xét

Dựa theo biểu đồ 3.4, tất cả 69 quốc gia có chất lượng cuộc sống cao đều có chất lượng y tế cao (chiếm 100%), trong khi ở nhóm quốc gia có chất lượng cuộc sống thấp, có đến 42 quốc gia (25,1%) thuộc nhóm chất lượng y tế thấp. Điều này cho thấy chất lượng y tế cao là đặc điểm phổ biến ở các quốc gia có chất lượng cuộc sống tốt, đồng thời gợi ý rằng chất lượng y tế có thể đóng vai trò quan trọng trong việc nâng cao chất lượng sống.

3.3.3.2. Hiệu tỷ lệ
addmargins(tkmt2b3)
##                            
##                             Chất lượng y tế cao Chất lượng y tế thấp Sum
##   Chất lượng cuộc sống cao                   69                    0  69
##   Chất lượng cuộc sống thấp                 125                   42 167
##   Sum                                       194                   42 236

\[ p_1 = P(\text{Quality} = \text{Chất lượng cuộc sống thấp} \mid \text{HealthCare} = Chất lượng y tế cao) \]

\[ p_2 = P(\text{Quality} = \text{Chất lượng cuộc sống thấp} \mid \text{HealthCare} = Chất lượng y tế thấp) \]

Giả thuyết kiểm định

\(H_0\): \(p_1 - p_2 = 0\) (Tỷ lệ quốc gia có chất lượng cuộc sống thấp ở nhóm chất lượng y tế cao bằng với nhóm chất lượng y tế thấp)

\(H_1\): \(p_1 - p_2 < 0\) (Tỷ lệ quốc gia có chất lượng cuộc sống thấp ở nhóm chất lượng y tế cao nhiều hơn nhóm chất lượng y tế thấp)

# Số quốc gia có chất lượng sống cao trong từng nhóm chất lượng y tế
counts_HealthCare <- c(tkmt2b3["Chất lượng cuộc sống thấp", "Chất lượng y tế cao"],
                   tkmt2b3["Chất lượng cuộc sống thấp", "Chất lượng y tế thấp"])

# Tổng số người trong từng nhóm chất lượng y tế
totals_HealthCare <- c(sum(tkmt2b3[, "Chất lượng y tế cao"]),
                   sum(tkmt2b3[, "Chất lượng y tế thấp"]))

# Kiểm định tỉ lệ một phía: p1 < p2
test_HealthCare_less <- prop.test(counts_HealthCare, totals_HealthCare,
                              alternative = "less", correct = FALSE)

# Hiển thị kết quả
test_HealthCare_less
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  counts_HealthCare out of totals_HealthCare
## X-squared = 21.11, df = 1, p-value = 2.168e-06
## alternative hypothesis: less
## 95 percent confidence interval:
##  -1.0000000 -0.2991368
## sample estimates:
##    prop 1    prop 2 
## 0.6443299 1.0000000

Nhận xét

Kết quả kiểm định tỷ lệ một phía cho ra giá trị p_value = 2.168e ^{-6}, nhỏ hơn mức ý nghĩa 0.05. Do đó, bác bỏ giả thuyết \(H_0\). Điều này cho thấy tỷ lệ quốc gia có chất lượng cuộc sống thấp trong nhóm có chất lượng y tế cao thấp hơn đáng kể so với nhóm có chất lượng y tế thấp. Nói cách khác, chất lượng y tế càng cao thì khả năng có chất lượng cuộc sống thấp càng giảm, hàm ý rằng chất lượng y tế có mối liên hệ cùng chiều với tỷ lệ quốc gia có chất lượng cuộc sống.

3.3.3.3. Relative Risk
HealthCare <- table(dt$HealthCare,dt$Quality)
addmargins(HealthCare)
##                       
##                        Chất lượng cuộc sống cao Chất lượng cuộc sống thấp Sum
##   Chất lượng y tế cao                        69                       125 194
##   Chất lượng y tế thấp                        0                        42  42
##   Sum                                        69                       167 236
RelRisk(HealthCare, conf.level = .95)
## rel. risk    lwr.ci    upr.ci 
##       Inf  4.231786       Inf

Nhận xét

Trong mẫu quan sát, không có quốc gia nào thuộc nhóm chất lượng y tế thấp đạt được chất lượng cuộc sống cao, dẫn đến tỷ số rủi ro (RR) bằng vô cùng. Điều này phản ánh một mối liên hệ rất mạnh giữa chất lượng y tế và chất lượng cuộc sống. Tuy nhiên, do một ô trong bảng tần suất bằng 0, kết quả ước lượng RR trở nên không xác định đầy đủ.

Dù vậy, độ tin cậy 95% cho RR có cận dưới là 4.23, cho thấy rằng ngay cả trong trường hợp dù tỷ số rủi ro thực tế chỉ nằm ở mức thấp nhất , quốc gia có chất lượng y tế cao vẫn có khả năng đạt chất lượng cuộc sống cao gấp hơn 4 lần so với nhóm còn lại. Đây là bằng chứng có ý nghĩa thống kê và gợi ý vai trò then chốt của chất lượng y tế trong việc cải thiện chất lượng sống quốc gia.

3.3.3.4. Odds Ratio
addmargins(HealthCare)
##                       
##                        Chất lượng cuộc sống cao Chất lượng cuộc sống thấp Sum
##   Chất lượng y tế cao                        69                       125 194
##   Chất lượng y tế thấp                        0                        42  42
##   Sum                                        69                       167 236
OddsRatio(HealthCare, conf.level = .95)
## odds ratio     lwr.ci     upr.ci 
##  47.071713   2.852649 776.732792

Nhận xét

Trong bảng phân phối giữa chất lượng y tế và chất lượng cuộc sống, không có quốc gia nào thuộc nhóm chất lượng y tế thấp đạt chất lượng cuộc sống cao. Điều này dẫn đến tỷ lệ khả năng đạt chất lượng sống cao ở nhóm y tế thấp là bằng 0, trong khi nhóm y tế cao vẫn có số lượng đáng kể các quốc gia đạt được mức sống cao.

Phân tích bằng tỷ số odds (Odds Ratio) cho thấy rằng các quốc gia có chất lượng y tế cao có khả năng đạt chất lượng sống cao gấp khoảng 47 lần so với nhóm có chất lượng y tế thấp (OR=47.07). Khoảng tin cậy 95% cho kết quả này dao động từ 2.85 đến 776.73, phản ánh sự khác biệt rõ rệt nhưng cũng thể hiện độ bất định cao do có ô dữ liệu bằng 0 trong bảng chéo.

3.3.4. Biến Quality of Life và Biến Climate

3.3.4.1.Bảng tần số
dt$Quality<- factor(dt$Quality.of.Life.Category,
                         levels = c("High", "Low"),
                         labels = c("Chất lượng cuộc sống cao", "Chất lượng cuộc sống thấp"))
dt$Climate <- factor(dt$Climate.Category,
                          levels = c("High", "Low"),
                          labels = c("Điều kiện khí hậu thuận lợi", "Điều kiện khí hậu khắc nghiệt"))
# Tạo bảng tần suất chéo 

tkmt2b4<- table(dt$Quality, dt$Climate)

# Thêm tổng hàng và tổng cột
sumtkmt2b4<- addmargins(tkmt2b4)
sumtkmt2b4
##                            
##                             Điều kiện khí hậu thuận lợi
##   Chất lượng cuộc sống cao                           69
##   Chất lượng cuộc sống thấp                          44
##   Sum                                               113
##                            
##                             Điều kiện khí hậu khắc nghiệt Sum
##   Chất lượng cuộc sống cao                              0  69
##   Chất lượng cuộc sống thấp                           123 167
##   Sum                                                 123 236
# Chuyển bảng tần suất thành data frame
df_plot_b4 <- as.data.frame(tkmt2b4)
colnames(df_plot_b4) <- c("Quality", "Climate", "Count")

# Vẽ biểu đồ
library(ggplot2)
ggplot(df_plot_b4, aes(x = Climate, y = Count, fill = Quality)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.6) +
  geom_text(aes(label = Count),
            position = position_dodge(width = 0.7),
            vjust = -0.3, size = 3.5) +
  scale_fill_manual(values = c("#74C476", "#238B45")) +  # xanh lá cây cho khí hậu
  labs(
    title = "Biểu đồ 3.5: Mối liên hệ giữa chất lượng cuộc sống và điều kiện khí hậu",
    x = "Điều kiện khí hậu",
    y = "Số lượng quốc gia",
    fill = "Chất lượng cuộc sống"
  ) +
  theme_minimal()

Nhận xét Dựa vào biểu đồ 3.5, trong số 69 quốc gia có chất lượng cuộc sống cao đều có điều kiện khí hậu thuận lợi (chiếm 100%). Ngược lại, trong nhóm 167 quốc gia có chất lượng cuộc sống thấp, tỷ lệ có điều kiện khí hậu khắc nghiệt cao hơn đáng kể (77 quốc gia, tương đương 46,1%). Kết quả này gợi ý rằng điều kiện khí hậu có thể là một yếu tố liên quan đến mức độ chất lượng cuộc sống của người dân ở các quốc gia.

3.3.4.2. Hiệu tỷ lệ
addmargins(tkmt2b4)
##                            
##                             Điều kiện khí hậu thuận lợi
##   Chất lượng cuộc sống cao                           69
##   Chất lượng cuộc sống thấp                          44
##   Sum                                               113
##                            
##                             Điều kiện khí hậu khắc nghiệt Sum
##   Chất lượng cuộc sống cao                              0  69
##   Chất lượng cuộc sống thấp                           123 167
##   Sum                                                 123 236

\[ p_1 = P(\text{Quality} = \text{Chất lượng cuộc sống thấp} \mid \text{Climate} = Điều kiện khí hậu thuận lợi) \]

\[ p_2 = P(\text{Quality} = \text{Chất lượng cuộc sống thấp} \mid \text{Climate} = Điều kiện khí hậu khắc nghiệt) \]

Giả thuyết kiểm định

\(H_0\): \(p_1 - p_2 = 0\) (Tỷ lệ quốc gia có chất lượng cuộc sống thấp ở nhóm điều kiện khí hậu thuận lợi bằng với nhóm điều kiện khí hậu khắc nghiệt)

\(H_1\): \(p_1 - p_2 < 0\) (Tỷ lệ quốc gia có chất lượng cuộc sống thấp ở nhóm điều kiện khí hậu thuận lợi ít hơn nhóm chất điều kiện khí hậu khắc nghiệt)

# Số quốc gia có chất lượng sống cao trong từng nhóm sức mua 
counts_Climate <- c(tkmt2b4["Chất lượng cuộc sống thấp", "Điều kiện khí hậu thuận lợi"],
                   tkmt2b4["Chất lượng cuộc sống thấp", "Điều kiện khí hậu khắc nghiệt"])

# Tổng số người trong từng sức mua
totals_Climate <- c(sum(tkmt2b4[, "Điều kiện khí hậu thuận lợi"]),
                   sum(tkmt2b4[, "Điều kiện khí hậu khắc nghiệt"]))

# Kiểm định tỉ lệ một phía: p1 < p2
test_Climate_less <- prop.test(counts_Climate, totals_Climate,
                              alternative = "less", correct = FALSE)

# Hiển thị kết quả
test_Climate_less
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  counts_Climate out of totals_Climate
## X-squared = 106.14, df = 1, p-value < 2.2e-16
## alternative hypothesis: less
## 95 percent confidence interval:
##  -1.0000000 -0.5351693
## sample estimates:
##    prop 1    prop 2 
## 0.3893805 1.0000000

Nhận xét

Kết quả kiểm định cho thấy tỷ lệ quốc gia có chất lượng cuộc sống thấp trong nhóm có điều kiện khí hậu thuận lợi là 38,9%, thấp hơn đáng kể so với 100% ở nhóm khí hậu khắc nghiệt. Với p-value < 2.2×10⁻¹⁶ và khoảng tin cậy hiệu số tỷ lệ nằm hoàn toàn phía âm [-1.000, −0.535], ta bác bỏ giả thuyết \(H_0\). Nói cách khác, điều kiện khí hậu thuận lợi có liên hệ cùng chiều với chất lượng cuộc sống: khí hậu càng thuận lợi thì khả năng có chất lượng cuộc sống thấp càng giảm.

3.3.4.3. Relative Risk
Climate <- table(dt$Climate,dt$Quality)
addmargins(Climate)
##                                
##                                 Chất lượng cuộc sống cao
##   Điều kiện khí hậu thuận lợi                         69
##   Điều kiện khí hậu khắc nghiệt                        0
##   Sum                                                 69
##                                
##                                 Chất lượng cuộc sống thấp Sum
##   Điều kiện khí hậu thuận lợi                          44 113
##   Điều kiện khí hậu khắc nghiệt                       123 123
##   Sum                                                 167 236
RelRisk(Climate, conf.level = .95)
## rel. risk    lwr.ci    upr.ci 
##       Inf   20.1487       Inf

Nhận xét

Trong mẫu nghiên cứu, không có quốc gia nào thuộc nhóm có điều kiện khí hậu khắc nghiệt đạt được chất lượng cuộc sống cao. Kết quả này dẫn đến tỷ số rủi ro (RR) bằng vô cùng, phản ánh mối liên hệ cực kỳ mạnh giữa điều kiện khí hậu và chất lượng cuộc sống.

Mặc dù ước lượng RR là vô cùng do một ô bằng 0 trong bảng tần suất, độ tin cậy 95% với khoảng từ 20.15 đến ∞ cho thấy rằng ngay cả trong trường hợp bi quan nhất, quốc gia có điều kiện khí hậu thuận lợi vẫn có nguy cơ đạt chất lượng cuộc sống cao gấp ít nhất 20 lần so với nhóm khí hậu khắc nghiệt. Đây là kết quả có ý nghĩa thống kê cao, củng cố giả thuyết rằng điều kiện khí hậu là một yếu tố ảnh hưởng đến chất lượng sống.

3.3.4.4. Odds ratio
addmargins(Climate)
##                                
##                                 Chất lượng cuộc sống cao
##   Điều kiện khí hậu thuận lợi                         69
##   Điều kiện khí hậu khắc nghiệt                        0
##   Sum                                                 69
##                                
##                                 Chất lượng cuộc sống thấp Sum
##   Điều kiện khí hậu thuận lợi                          44 113
##   Điều kiện khí hậu khắc nghiệt                       123 123
##   Sum                                                 167 236
OddsRatio(Climate, conf.level = .95)
## odds ratio     lwr.ci     upr.ci 
##  385.76404   23.39303 6361.46418

Nhận xét

Phân tích bảng phân phối giữa điều kiện khí hậu và chất lượng cuộc sống cho thấy không có quốc gia nào có điều kiện khí hậu khắc nghiệt đạt chất lượng sống cao. Trong khi đó, tất cả các quốc gia có chất lượng sống cao đều thuộc nhóm có điều kiện khí hậu thuận lợi. Điều này dẫn đến tỷ số odds (Odds Ratio) cực kỳ lớn, lên tới 385.76, với khoảng tin cậy 95% từ 23.39 đến 6361.46.

Kết quả này ngụ ý rằng các quốc gia có điều kiện khí hậu thuận lợi có khả năng đạt chất lượng sống cao cao hơn khoảng 386 lần so với nhóm có khí hậu khắc nghiệt. Tuy nhiên, do tồn tại ô dữ liệu bằng 0 thường dẫn đến ước lượng không ổn định, khiến khoảng tin cậy trở nên rộng và độ chính xác bị ảnh hưởng.

Do đó, mặc dù kết quả này củng cố giả thuyết rằng khí hậu là yếu tố ảnh hưởng lớn đến chất lượng sống, ta cần kết hợp với các phương pháp thống kê bổ sung (như phân tích tỉ lệ hoặc RR) để khẳng định chắc chắn hơn mối liên hệ này.

3.4. Mô hình Logit

\(H_0\): Biến không có ảnh hưởng đến chất lượng cuộc sống của các quốc gia

\(H_1\): Biến có ảnh hưởng đến chất lượng cuộc sống của các quốc gia

Trong quá trình kiểm tra mô hình hồi quy nhị phân với biến HealthCare và Chimate, nhận thấy dữ liệu xuất hiện hiện tượng phân tách hoàn hảo (perfect separation), dẫn đến hệ số ước lượng không ổn định, sai số chuẩn rất lớn và giá trị p không có ý nghĩa. Do đó, biến HealthCare và biến Climate không được đưa vào phân tích hồi quy để đảm bảo độ tin cậy của mô hình.

3.4.1 Biến Purchasing

dt$hqQuality <- ifelse(dt$Quality == "Chất lượng cuộc sống cao", 1, 0)

# Mô hình hồi quy logistic với biến PurchasingPower
reglogitPurchasing <- glm(hqQuality ~ PurchasingPower, data = dt, family = binomial(link = 'logit'))
summary(reglogitPurchasing)
## 
## Call:
## glm(formula = hqQuality ~ PurchasingPower, family = binomial(link = "logit"), 
##     data = dt)
## 
## Coefficients:
##                                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                           0.5839     0.2318   2.520   0.0117 *  
## PurchasingPowerSức mua thực tế thấp  -2.6780     0.3461  -7.738 1.01e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 285.21  on 235  degrees of freedom
## Residual deviance: 212.88  on 234  degrees of freedom
## AIC: 216.88
## 
## Number of Fisher Scoring iterations: 4

Hàm hồi quy logistic được ước lượng như sau:

\[ \log\left(\frac{\hat{\pi}}{1 - \hat{\pi}}\right) = 0.5839 - 2.6780 \cdot \text{PurchasingPower}_{\text{thấp}} \]

confint(reglogitPurchasing)
## Waiting for profiling to be done...
##                                          2.5 %    97.5 %
## (Intercept)                          0.1375164  1.050034
## PurchasingPowerSức mua thực tế thấp -3.3813817 -2.020061

Nhận xét

Kết quả mô hình hồi quy logistic với biến PurchasingPower (Sức mua thực tế) cho thấy rằng yếu tố này có ảnh hưởng tiêu cực và có ý nghĩa thống kê mạnh đến xác suất đạt chất lượng cuộc sống cao. Cụ thể, so với nhóm có sức mua thực tế cao, nhóm quốc gia có sức mua thấp có hệ số hồi quy là −2.678 (p < 0.001), tương ứng với Odds Ratio khoảng 0.069. Điều này có nghĩa là các quốc gia có sức mua thấp chỉ có khoảng 6.9% khả năng đạt chất lượng cuộc sống cao so với nhóm có sức mua cao, nếu các yếu tố khác giữ nguyên. Độ tin cậy 95% cho hệ số nằm trong khoảng từ −3.38 đến −2.02, khẳng định tác động âm của mối quan hệ này. Tổng thể, mô hình có mức độ phù hợp tốt (AIC = 216.88), cho thấy sức mua là một yếu tố dự báo đáng tin cậy cho chất lượng sống.

3.4.2. Biến Safety

# Mô hình hồi quy logistic với biến Safety
reglogitSafety <- glm(hqQuality ~ Safety, data = dt, family = binomial(link = 'logit'))
summary(reglogitSafety)
## 
## Call:
## glm(formula = hqQuality ~ Safety, family = binomial(link = "logit"), 
##     data = dt)
## 
## Coefficients:
##                           Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                -0.5911     0.1523  -3.882 0.000104 ***
## SafetyMức độ an toàn thấp  -2.5444     0.7381  -3.447 0.000566 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 285.21  on 235  degrees of freedom
## Residual deviance: 261.52  on 234  degrees of freedom
## AIC: 265.52
## 
## Number of Fisher Scoring iterations: 5
confint(reglogitSafety)
## Waiting for profiling to be done...
##                                2.5 %     97.5 %
## (Intercept)               -0.8944175 -0.2963393
## SafetyMức độ an toàn thấp -4.3758942 -1.3276447

\[ \log\left(\frac{\pi}{1 - \pi}\right) = -0.5911 - 2.5444 \cdot \text{Safety}_{\text{thấp}} \]

Nhận xét

Mô hình hồi quy logistic kiểm định mối liên hệ giữa mức độ an toàn (Safety) và xác suất đạt chất lượng cuộc sống cao cho thấy rằng, so với nhóm có mức độ an toàn cao, các quốc gia có mức độ an toàn thấp có hệ số hồi quy là −2.5444 (p < 0.001) tương đương với Odds Ratio là 0.078, cho thấy tác động âm rõ rệt và có ý nghĩa thống kê. Độ tin cậy 95% cho hệ số này nằm trong khoảng [−4.376,−1.328], điều này có thể diễn giải rằng, trong điều kiện giữ nguyên các yếu tố khác, mức độ an toàn thấp làm giảm đáng kể xác suất một quốc gia đạt chất lượng sống cao, cho thấy an toàn xã hội là một yếu tố ảnh hưởng mạnh đến chất lượng cuộc sống.

3.5. Mô hình Probit

3.5.1. Biến Purchasing

# Mô hình Probit với biến Purchasing
probitPurchasing <- glm(hqQuality ~ PurchasingPower, data = dt, family = binomial(link = "probit"))
summary(probitPurchasing)
## 
## Call:
## glm(formula = hqQuality ~ PurchasingPower, family = binomial(link = "probit"), 
##     data = dt)
## 
## Coefficients:
##                                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                           0.3637     0.1427   2.550   0.0108 *  
## PurchasingPowerSức mua thực tế thấp  -1.5920     0.1956  -8.141 3.93e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 285.21  on 235  degrees of freedom
## Residual deviance: 212.88  on 234  degrees of freedom
## AIC: 216.88
## 
## Number of Fisher Scoring iterations: 4

\[ \Phi^{-1}(\pi) = 0.3637 - 1.5920 \cdot \text{PurchasingPower}_{\text{ thấp}} \]

confint(probitPurchasing)
## Waiting for profiling to be done...
##                                           2.5 %     97.5 %
## (Intercept)                          0.08614526  0.6457496
## PurchasingPowerSức mua thực tế thấp -1.98041587 -1.2132718

Nhận xét

Kết quả mô hình cho thấy, việc một quốc gia có sức mua thực tế thấp làm giảm đáng kể xác suất có chất lượng sống cao. Hệ số âm rõ rệt và có ý nghĩa thống kê cao (p_value < 0.005). Khoảng tin cậy [-1.98; -1.21] cho kết luận rằng yếu tố sức mua thực tế thấp là một yếu tố tiêu cực quan trọng ảnh hưởng đến chất lượng sống.

3.5.2.Biến Safety

# Mô hình xác suất tuyến tính với biến Safety
probitSafety <- glm(hqQuality ~ Safety, data = dt, family = binomial(link = "probit"))
summary(probitSafety)
## 
## Call:
## glm(formula = hqQuality ~ Safety, family = binomial(link = "probit"), 
##     data = dt)
## 
## Coefficients:
##                           Estimate Std. Error z value Pr(>|z|)    
## (Intercept)               -0.36814    0.09369  -3.929 8.52e-05 ***
## SafetyMức độ an toàn thấp -1.36352    0.33707  -4.045 5.23e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 285.21  on 235  degrees of freedom
## Residual deviance: 261.52  on 234  degrees of freedom
## AIC: 265.52
## 
## Number of Fisher Scoring iterations: 5

\[ \Phi^{-1}(\pi) = -0.3681 - 1.3635 \cdot \text{Safety}_{\text{Thấp}} \]

confint(probitSafety)
## Waiting for profiling to be done...
##                                2.5 %     97.5 %
## (Intercept)               -0.5527999 -0.1854115
## SafetyMức độ an toàn thấp -2.1067161 -0.7598356

Mô hình Probit với biến Safety cho thấy hệ số của biến “Mức độ an toàn thấp” là −1.3635, với độ tin cậy 95% là [−2.11;−0.76] và giá trị p_value (p < 0.05), cho thấy mối liên hệ này có ý nghĩa thống kê cao. Như vậy, khi một quốc gia có mức độ an toàn thấp, xác suất đạt chất lượng sống cao sẽ giảm đáng kể so với quốc gia có mức độ an toàn cao (giữ các yếu tố khác không đổi). Kết quả này phù hợp với giả thuyết rằng môi trường sống an toàn là yếu tố thiết yếu góp phần nâng cao chất lượng sống.

3.6. Mô hình hồi Cloglog

3.6.1. Biến Purchasing

# Mô hình Cloglog với biến Purchasing
cloglog_Purchasing <- glm(hqQuality ~ PurchasingPower, data = dt, family = binomial(link = "cloglog"))
summary(cloglog_Purchasing)
## 
## Call:
## glm(formula = hqQuality ~ PurchasingPower, family = binomial(link = "cloglog"), 
##     data = dt)
## 
## Coefficients:
##                                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                          0.02679    0.14485   0.185    0.853    
## PurchasingPowerSức mua thực tế thấp -2.17948    0.28261  -7.712 1.24e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 285.21  on 235  degrees of freedom
## Residual deviance: 212.88  on 234  degrees of freedom
## AIC: 216.88
## 
## Number of Fisher Scoring iterations: 5

\[ \log(-\log(1 - \pi)) = 0.0268 - 2.1795 \cdot \text{PurchasingPower}_{\text{Thấp}} \]

Nhận xét

Trong mô hình hồi quy Cloglog với biến Sức mua thực tế (PurchasingPower), hệ số ước lượng cho nhóm “Sức mua thực tế thấp” là −2.1795 với giá trị p_value<0.05, cho thấy biến này có ảnh hưởng có ý nghĩa thống kê đến xác suất đánh giá chất lượng cuộc sống cao. Hệ số âm cho thấy rằng các quốc gia có sức mua thực tế thấp có xác suất đạt chất lượng cuộc sống cao thấp hơn so với nhóm có sức mua thực tế cao.

3.6.2. Biến Safety

# Mô hình Cloglog với biến beverage_coffee
cloglog_Safety <- glm(hqQuality ~ Safety, data = dt, family = binomial(link = "cloglog"))
summary(cloglog_Safety)
## 
## Call:
## glm(formula = hqQuality ~ Safety, family = binomial(link = "cloglog"), 
##     data = dt)
## 
## Coefficients:
##                           Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                -0.8195     0.1232  -6.654 2.85e-11 ***
## SafetyMức độ an toàn thấp  -2.3373     0.7178  -3.256  0.00113 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 285.21  on 235  degrees of freedom
## Residual deviance: 261.52  on 234  degrees of freedom
## AIC: 265.52
## 
## Number of Fisher Scoring iterations: 6

\[ \log(-\log(1 - \pi)) = -0.8195 - 2.3373 \cdot \text{Safety}_{\text{Thấp}} \]

Nhận xét

Trong mô hình hồi quy Cloglog với biến mức độ an toàn (Safety), hệ số ước lượng cho nhóm “Mức độ an toàn thấp” là −2.3373 với giá trị p_value = 0.00113 < 0.05, cho thấy ảnh hưởng này có ý nghĩa thống kê ở mức 5%. Dấu âm của hệ số chỉ ra rằng các quốc gia có mức độ an toàn thấp có xác suất đạt chất lượng cuộc sống cao thấp hơn so với nhóm có mức độ an toàn cao. Điều này cho thấy yếu tố an toàn có vai trò quan trọng trong việc đánh giá chất lượng cuộc sống.

3.7. Mô hình hồi quy bội

3.7.1. Mô hình Logit

mhhq_logit <- glm(hqQuality ~ PurchasingPower + Safety, data = dt, family = binomial(link = "logit"))
summary(mhhq_logit)
## 
## Call:
## glm(formula = hqQuality ~ PurchasingPower + Safety, family = binomial(link = "logit"), 
##     data = dt)
## 
## Coefficients:
##                                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                           0.7776     0.2472   3.146  0.00165 ** 
## PurchasingPowerSức mua thực tế thấp  -2.5686     0.3565  -7.204 5.83e-13 ***
## SafetyMức độ an toàn thấp            -2.2582     0.7787  -2.900  0.00373 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 285.21  on 235  degrees of freedom
## Residual deviance: 199.56  on 233  degrees of freedom
## AIC: 205.56
## 
## Number of Fisher Scoring iterations: 6

Phương trình hồi quy logit có dạng:

\[ \log\left(\frac{\pi}{1 - \pi}\right) = 0.7776 - 2.5686 \cdot \text{PurchasingPower}_{\text{Thấp}} - 2.2582 \cdot \text{Safety}_{\text{Thấp}} \]

Nhận xét

Mô hình hồi quy logistic bội được sử dụng để đánh giá tác động đồng thời của sức mua thực tế và mức độ an toàn đến xác suất sản phẩm đạt chất lượng cao. Kết quả cho thấy cả hai biến độc lập đều có ảnh hưởng tiêu cực và có ý nghĩa thống kê đến chất lượng sản phẩm. Cụ thể, khi sức mua thực tế thấp, odds để quốc gia đạt chất lượng cuộc sống cao chỉ bằng 7.68% so với sức mua thực tế cao (p < 0.001), và khi mức độ an toàn thấp, odds để quốc gia đạt chất lượng cuộc sống cao chỉ bằng 10.47% so với mức an toàn cao (p = 0.00373).

3.7.2. Mô hình Probit

mhhq_probit <- glm(hqQuality ~ PurchasingPower + Safety, data = dt, family = binomial(link = "probit"))
summary(mhhq_probit)
## 
## Call:
## glm(formula = hqQuality ~ PurchasingPower + Safety, family = binomial(link = "probit"), 
##     data = dt)
## 
## Coefficients:
##                                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                           0.4661     0.1486   3.137  0.00171 ** 
## PurchasingPowerSức mua thực tế thấp  -1.5198     0.2014  -7.545 4.52e-14 ***
## SafetyMức độ an toàn thấp            -1.1645     0.3833  -3.039  0.00238 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 285.21  on 235  degrees of freedom
## Residual deviance: 200.14  on 233  degrees of freedom
## AIC: 206.14
## 
## Number of Fisher Scoring iterations: 5

Phương trình hồi quy logit có dạng:

\[ \Phi^{-1}(\pi) = 0.4661 - 1.5198 \cdot \text{PurchasingPower}_{\text{Thấp}} - 1.1645 \cdot \text{Safety}_{\text{Thấp}} \]

Nhận xét

Mô hình hồi quy probit được điều chỉnh chỉ còn lại hai biến độc lập là “Sức mua thực tế” và “Mức độ an toàn” cho thấy cả hai đều có ảnh hưởng tiêu cực và có ý nghĩa thống kê rõ ràng đến xác suất người dân có chất lượng cuộc sống cao. Điều này phù hợp với lý thuyết và thực tiễn: khi người dân có sức mua thấp hoặc sống trong môi trường thiếu an toàn, khả năng đạt được chất lượng sống cao sẽ giảm đáng kể. Việc loại bỏ các biến không có ý nghĩa như “Chất lượng y tế” và “Khí hậu” đã giúp cải thiện đáng kể độ phù hợp của mô hình và tránh hiện tượng phân tách hoàn hảo.

Khi một quốc gia thuộc nhóm có sức mua thực tế thấp, xác suất đạt chất lượng sống cao sẽ giảm 1.5198 đơn vị so với nhóm có sức mua cao. Nếu giữ các yếu tố khác không đổi, xác suất đạt chất lượng sống cao của quốc gia này giảm từ khoảng 67.9% (khi sức mua cao) xuống còn 14.7% (khi sức mua thấp). Điều này cho thấy sức mua là yếu tố có tác động rất mạnh đến chất lượng sống.

Khi một quốc gia nằm trong nhóm có mức độ an toàn thấp, xác suất quốc gia đạt chấ lượng sống cao thấp hơn 1.1645 đơn vị so với nhóm an toàn cao. Trong điều kiện các yếu tố khác không đổi, xác suất đạt chất lượng sống cao giảm từ khoảng 67.9% (khi an toàn cao) xuống còn 24.3% (khi an toàn thấp). Điều này nhấn mạnh vai trò thiết yếu của môi trường sống an toàn đối với chất lượng cuộc sống.

3.7.3. Mô hình Cloglog

mhhq_cloglog <- glm(hqQuality ~ PurchasingPower + Safety, data = dt, family = binomial(link = "cloglog"))
summary(mhhq_cloglog)
## 
## Call:
## glm(formula = hqQuality ~ PurchasingPower + Safety, family = binomial(link = "cloglog"), 
##     data = dt)
## 
## Coefficients:
##                                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                           0.1535     0.1474   1.042  0.29760    
## PurchasingPowerSức mua thực tế thấp  -2.0361     0.2843  -7.161 8.03e-13 ***
## SafetyMức độ an toàn thấp            -1.9261     0.7222  -2.667  0.00766 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 285.21  on 235  degrees of freedom
## Residual deviance: 199.37  on 233  degrees of freedom
## AIC: 205.37
## 
## Number of Fisher Scoring iterations: 6

Hàm hồi quy Cloglog của mô hình này được biểu diễn như sau:

\[ \log(-\log(1 - \pi)) = 0.1535 - 2.0361 \cdot \text{PurchasingPower}_{\text{Thấp}} - 1.9261 \cdot \text{Safety}_{\text{Thấp}} \]

Nhận xét

Kết quả từ mô hình hồi quy Cloglog với hai biến độc lập là PurchasingPower và Safety cho thấy cả hai biến đều có ảnh hưởng tiêu cực và có ý nghĩa thống kê đến xác suất quốc gia đánh giá chất lượng cuộc sống cao (hqQuality=1). Cụ thể, khi sức mua thực tế thấp, hệ số ước lượng là −2.0361 (p_value < 0.05), cho thấy rằng khả năng quốc gia đạt chất lượng cuộc sống cao thấp hơn sức mua thực tế cao. Tương tự, khi mức độ an toàn thấp, hệ số là −1.9261 (p_value = 0.00766), quốc gia đạt chất lượng cuộc sống cao thấp hơn so với mức độ an toàn cao. Hệ số chặn (intercept) không có ý nghĩa thống kê (p = 0.29760), tuy nhiên mô hình vẫn thể hiện rõ vai trò của hai biến độc lập trong việc giải thích biến phụ thuộc.

3.8. Đánh giá mô hình hồi quy bội

Chỉ số AIC

AIC(mhhq_logit)
## [1] 205.5581
AIC(mhhq_probit)
## [1] 206.1408
AIC(mhhq_cloglog)
## [1] 205.3654

Chỉ số BIC

BIC(mhhq_logit)
## [1] 215.9496
BIC(mhhq_probit)
## [1] 216.5323
BIC(mhhq_cloglog)
## [1] 215.7569

Chỉ số Log-Likelihood

logLik(mhhq_logit)
## 'log Lik.' -99.77907 (df=3)
logLik(mhhq_probit)
## 'log Lik.' -100.0704 (df=3)
logLik(mhhq_cloglog)
## 'log Lik.' -99.68271 (df=3)

Chỉ số McFadden_R2

pR2(mhhq_logit)["McFadden"]
## fitting null model for pseudo-r2
##  McFadden 
## 0.3003164
pR2(mhhq_probit)["McFadden"]
## fitting null model for pseudo-r2
##  McFadden 
## 0.2982735
pR2(mhhq_cloglog)["McFadden"]
## fitting null model for pseudo-r2
##  McFadden 
## 0.3009921

So sánh các mô hình

Mô hình AIC BIC Log-Likelihood McFadden R²
Logit 205.5581 215.9496 -99.7791 0.3003
Probit 206.1408 216.5323 -100.0704 0.2983
Cloglog 205.3654 215.7569 -99.6827 0.3010

Dựa trên kết quả so sánh giữa ba mô hình hồi quy bội gồm Logit, Probit và Cloglog thông qua các tiêu chí đánh giá như AIC, BIC, Log-likelihood và hệ số xác định McFadden R², mô hình Cloglog cho thấy hiệu quả vượt trội hơn cả. Cụ thể, mô hình này có giá trị AIC (205.37) và BIC (215.76) thấp nhất, đồng thời đạt Log-likelihood cao nhất (-99.68) và hệ số McFadden R² lớn nhất (0.3010). Những yếu tố này cho thấy mô hình Cloglog không chỉ phù hợp với dữ liệu mà còn có khả năng giải thích biến phụ thuộc tốt hơn so với hai mô hình còn lại. Do đó, mô hình Cloglog được lựa chọn là mô hình phù hợp nhất trong phân tích hồi quy bội cho biến hqQuality.

Mặc dù mô hình Cloglog có giá trị AIC, BIC và McFadden R² tốt nhất về mặt số học, nhưng sự chênh lệch này là không đáng kể so với mô hình Logit. Do đó, khi xét đến tính dễ hiểu, phổ biến trong thực hành và diễn giải trực quan hơn thông qua odds, mô hình Logit được lựa chọn làm mô hình đại diện trong phân tích cuối cùng.

CHƯƠNG 4: KẾT LUẬN VÀ KIẾN NGHỊ

4.1. Kết luận

Đề tài “Phân tích các yếu tố ảnh hưởng đến chất lượng cuộc sống tại các quốc gia trên thế giới” đã hoàn thành mục tiêu đề ra là nhận diện và lượng hóa tác động của các yếu tố kinh tế – xã hội đến khả năng một quốc gia được xếp vào nhóm có chất lượng cuộc sống cao. Bằng cách khai thác bộ dữ liệu từ nền tảng Kaggle và áp dụng các phương pháp thống kê suy diễn cùng ba mô hình hồi quy nhị phân: Logit, Probit và Cloglog, nghiên cứu đã rút ra các kết luận chính sau:

  • Sức mua thực tế (Purchasing Power) và Mức độ an toàn (Safety) là hai yếu tố có ảnh hưởng tiêu cực, rõ rệt và có ý nghĩa thống kê mạnh mẽ đến xác suất một quốc gia có chất lượng sống cao. Cả ba mô hình hồi quy đều cho thấy hệ số ước lượng của hai biến này đều âm, và có giá trị p_value <0.05. Điều này hàm ý rằng quốc gia có sức mua thấp hoặc mức độ an toàn thấp sẽ giảm đáng kể khả năng đạt chất lượng sống cao.

  • Y tế (Health Care) và Khí hậu (Climate) mặc dù không đưa được vào mô hình hồi quy do hiện tượng phân tách hoàn hảo (tất cả quốc gia chất lượng sống cao đều có y tế tốt và khí hậu thuận lợi), nhưng các kiểm định ban đầu (Chi bình phương, Relative Risk, Odds Ratio) đều cho thấy chúng là điều kiện gần như bắt buộc để có chất lượng sống cao. Điều này phản ánh vai trò quyết định của hai yếu tố này trong thực tế.

  • Các biến như Chi phí sinh hoạt (Cost of Living), Tỷ lệ giá nhà trên thu nhập (Price to Income Ratio), Thời gian di chuyển (Commute Time) và Ô nhiễm (Pollution) không có mối liên hệ có ý nghĩa thống kê với chất lượng cuộc sống trong mô hình hiện tại. Điều này có thể do: Cách phân loại dữ liệu (nhị phân cao/thấp) làm mất thông tin chi tiết và ảnh hưởng của các yếu tố này đã được gián tiếp thể hiện thông qua biến khác như sức mua.

  • Về so sánh mô hình: Mô hình Cloglog cho thấy độ phù hợp tốt nhất với dữ liệu, với các chỉ số AIC (205.37) và BIC (215.76) thấp nhất, cùng hệ số McFadden R² cao nhất (0.3010). Tuy nhiên, sự khác biệt giữa ba mô hình (Logit, Probit, Cloglog) là không lớn, và các hệ số ước lượng đều nhất quán về dấu và ý nghĩa thống kê. Điều này cho thấy kết quả phân tích có tính ổn định cao. Vì lý do đó, và nhằm thuận tiện cho việc diễn giải kết quả theo xác suất và odds ratio – vốn dễ hiểu và phổ biến trong thực tiễn – mô hình Logit được lựa chọn làm mô hình trình bày chính trong nghiên cứu này.

  • Tổng kết lại, nghiên cứu đã chứng minh tính hữu ích của các phương pháp phân tích định lượng trong việc khám phá và đánh giá tác động của các yếu tố xã hội – kinh tế đến chất lượng sống. Đồng thời, kết quả cũng khẳng định rằng để nâng cao chất lượng cuộc sống, sức mua thực tế, an toàn xã hội, hệ thống y tế và môi trường sống là những yếu tố cốt lõi.

4.2. Kiến nghị

Dựa trên kết quả nghiên cứu, đề tài đề xuất một số kiến nghị chính sách như sau:

  1. Ưu tiên các chính sách nâng cao sức mua thực tế: Chính phủ các nước nên tập trung vào việc cải thiện thu nhập thực tế của người dân, thông qua các chính sách kiểm soát lạm phát, tạo việc làm chất lượng cao, điều chỉnh mức lương tối thiểu hợp lý và mở rộng hệ thống an sinh xã hội.

  2. Tăng cường toàn diện mức độ an toàn xã hội: Đảm bảo an toàn là điều kiện nền tảng cho chất lượng sống. Các quốc gia cần đầu tư cho hệ thống luật pháp, tăng cường lực lượng thực thi, và triển khai các chương trình phòng chống tội phạm hiệu quả.

  3. Xem y tế và môi trường là trụ cột chiến lược: Dù không thể đưa trực tiếp vào mô hình định lượng, phân tích cho thấy y tế và khí hậu đóng vai trò thiết yếu. Vì vậy, việc nâng cao chất lượng hệ thống y tế công, cải thiện khả năng tiếp cận dịch vụ chăm sóc sức khỏe và thực hiện các chính sách môi trường bền vững là cần thiết cho một tương lai chất lượng sống cao.

LS0tDQp0aXRsZTogIlRp4buDdSBsdeG6rW4iDQphdXRob3I6ICJIdeG7s25oIE5n4buNYyBEaeG7h3AgLSAyMjIxMDAwMjk1Ig0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICB0b2NfZGVwdGg6IDQNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICB0b2M6IHRydWUNCiAgcGRmX2RvY3VtZW50Og0KICAgIGxhdGV4X2VuZ2luZTogeGVsYXRleA0KICB3b3JkX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19kZXB0aDogJzQnDQotLS0NCg0KPHN0eWxlPg0KYm9keSB7DQogIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgc2Fucy1zZXJpZjsNCiAgZm9udC1zaXplOiAxNnB4Ow0KICB0ZXh0LWFsaWduOiBqdXN0aWZ5Ow0KICBsaW5lLWhlaWdodDogMS41Ow0KfQ0KaDEgew0KICBjb2xvcjogcmVkOw0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KaDIgew0KICBjb2xvcjogYmxhY2s7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KaDMgew0KICBjb2xvcjogYmxhY2s7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KaDQgew0KICBjb2xvcjogYmxhY2s7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KPC9zdHlsZT4NCg0KYGBge3J9DQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeShkYXRhLnRhYmxlKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoc2tpbXIpDQpsaWJyYXJ5KHBzeWNoKQ0KbGlicmFyeShjc3YpDQpsaWJyYXJ5KERUKQ0KbGlicmFyeShwYW5kZXIpDQpsaWJyYXJ5KGZvcm1hdHRhYmxlKQ0KbGlicmFyeShodG1sdG9vbHMpDQpsaWJyYXJ5KERlc2NUb29scykNCmxpYnJhcnkoZXBpdG9vbHMpDQpsaWJyYXJ5KHBzY2wpDQpgYGANCg0KIyAqKlBIw4JOIFTDjUNIIEPDgUMgWeG6vlUgVOG7kCDhuqJOSCBIxq/hu55ORyDEkOG6vk4gQ0jhuqRUIEzGr+G7ok5HIENV4buYQyBT4buQTkcgVOG6oEkgQ8OBQyBRVeG7kEMgR0lBIFRSw4pOIFRI4bq+IEdJ4buaSSoqDQoNCiMjICoqQ0jGr8agTkcgMTogVOG7lE5HIFFVQU4gTkdIScOKTiBD4buoVSoqDQoNCiMjIyAqKjEuMS4gTMO9IGRvIGNo4buNbiDEkeG7gSB0w6BpKioNCg0KQ2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgbMOgIG3hu5l0IGNo4buJIGLDoW8gdOG7lW5nIGjhu6NwLCBwaOG6o24gw6FuaCBt4bupYyDEkeG7mSBwaMOhdCB0cmnhu4NuIGLhu4FuIHbhu69uZyB2w6Aga2jhuqMgbsSDbmcgxJHDoXAg4bupbmcgbmh1IGPhuqd1IHPhu5FuZyBjxqEgYuG6o24gbOG6q24gbsOibmcgY2FvIGPhu6dhIG5nxrDhu51pIGTDom4gdHJvbmcgbeG7mXQgcXXhu5FjIGdpYS4gVHJvbmcgYuG7kWkgY+G6o25oIHRvw6BuIGPhuqd1IGjDs2EgdsOgIGPhuqFuaCB0cmFuaCBxdeG7kWMgdOG6vyBuZ8OgeSBjw6BuZyBnaWEgdMSDbmcsIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGtow7RuZyBjaOG7iSBsw6AgduG6pW4gxJHhu4EgeMOjIGjhu5lpIG3DoCBjw7JuIHRy4bufIHRow6BuaCB0acOqdSBjaMOtIHF1YW4gdHLhu41uZyB0cm9uZyBob+G6oWNoIMSR4buLbmggY2jDrW5oIHPDoWNoIGPDtG5nLCB0aHUgaMO6dCDEkeG6p3UgdMawIHbDoCBuw6JuZyBjYW8gbsSDbmcgbOG7sWMgY+G6oW5oIHRyYW5oIHF14buRYyBnaWEuDQoNClR1eSBuaGnDqm4sIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGzDoCBt4buZdCBraMOhaSBuaeG7h20gxJFhIGNoaeG7gXUsIGNo4buLdSB0w6FjIMSR4buZbmcgYuG7n2kgbmhp4buBdSB54bq/dSB04buRIGtow6FjIG5oYXUgbmjGsCBz4bupYyBtdWEsIG3hu6ljIMSR4buZIGFuIHRvw6BuLCBo4buHIHRo4buRbmcgeSB04bq/LCDEkWnhu4F1IGtp4buHbiBraMOtIGjhuq11LCDDtCBuaGnhu4VtLCBnaWFvIHRow7RuZywgZ2nDoSBj4bqjIHNpbmggaG/huqF0LOKApiBDaMOtbmggdsOsIHbhuq15LCB2aeG7h2MgxJFvIGzGsOG7nW5nIHbDoCBsxrDhu6NuZyBow7NhIHTDoWMgxJHhu5luZyBj4bunYSB04burbmcgeeG6v3UgdOG7kSDEkeG7kWkgduG7m2kgY2jhuqV0IGzGsOG7o25nIHPhu5FuZyBsw6AgdGjDoWNoIHRo4bupYyBs4bubbiwgxJHDsmkgaOG7j2kgY8OhY2ggdGnhur9wIGPhuq1uIGtob2EgaOG7jWMsIGjhu4cgdGjhu5FuZyB2w6AgZOG7sWEgdHLDqm4gbuG7gW4gdOG6o25nIMSR4buLbmggbMaw4bujbmcgduG7r25nIGNo4bqvYy4NCg0KVOG7qyB0aOG7sWMgdGnhu4VuIMSRw7MsIMSR4buBIHTDoGkgbOG7sWEgY2jhu41uIGtoYWkgdGjDoWMgYuG7mSBk4buvIGxp4buHdSBjw7RuZyBraGFpIHThu6sgbuG7gW4gdOG6o25nIEthZ2dsZSB24buBIGPDoWMgY2jhu4kgc+G7kSB4w6MgaOG7mWkgdsOgIGtpbmggdOG6vy4gQuG7mSBk4buvIGxp4buHdSBjdW5nIGPhuqVwIHRow7RuZyB0aW4gcGhvbmcgcGjDuiBjaG8gaMahbiAyMDAgcXXhu5FjIGdpYSB2w6AgdsO5bmcgbMOjbmggdGjhu5UsIGvhur90IGjhu6NwIGdp4buvYSBiaeG6v24gxJHhu4tuaCBsxrDhu6NuZyB2w6AgxJHhu4tuaCB0w61uaCwgYmFvIGfhu5NtIGPDoWMgY2jhu4kgc+G7kSB24buBIHPhu6ljIG11YSwgYW4gdG/DoG4sIGNo4bqldCBsxrDhu6NuZyBjaMSDbSBzw7NjIHkgdOG6vywga2jDrSBo4bqtdSwgY2hpIHBow60gc2luaCBob+G6oXQsIGdpw6EgbmjDoCwgw7Qgbmhp4buFbSwgZ2lhbyB0aMO0bmcgdsOgIGNo4bqldCBsxrDhu6NuZyBz4buRbmcgdOG7lW5nIHRo4buDLiBE4buvIGxp4buHdSBjw7MgxJHhu5kgYmFvIHBo4bunIHRvw6BuIGPhuqd1LCBj4bqtcCBuaOG6rXQgbGnDqm4gdOG7pWMgdsOgIHBo4bqjbiDDoW5oIHTGsMahbmcgxJHhu5FpIHPDoXQgdGjhu7FjIHThur8gxJHhu51pIHPhu5FuZyB04bqhaSBjw6FjIHF14buRYyBnaWEsIHThuqFvIMSRaeG7gXUga2nhu4duIHRodeG6rW4gbOG7o2kgY2hvIHZp4buHYyBraGFpIHRow6FjIHBow6JuIHTDrWNoIHRo4buRbmcga8OqLg0KDQrEkOG7gSB0w6BpIHPhu60gZOG7pW5nIGPDoWMgbcO0IGjDrG5oIGjhu5NpIHF1eSB4w6FjIHN14bqldCwgYmFvIGfhu5NtIGPhuqMgdHV54bq/biB0w61uaCB2w6AgcGhpIHR1eeG6v24gKGxvZ2l0LCBwcm9iaXQgdsOgIGNsb2dsb2cpLCBuaOG6sW0ga2nhu4NtIMSR4buLbmggdsOgIMSRw6FuaCBnacOhIG3hu6ljIMSR4buZIOG6o25oIGjGsOG7n25nIGPhu6dhIHThu6tuZyB54bq/dSB04buRIGzDqm4geMOhYyBzdeG6pXQgxJHhuqF0IMSRxrDhu6NjIG3hu6ljIGNo4bqldCBsxrDhu6NuZyBz4buRbmcgY2FvLiBUaMO0bmcgcXVhIMSRw7MsIG5naGnDqm4gY+G7qXUga2jDtG5nIGNo4buJIGN1bmcgY+G6pXAgY8OhaSBuaMOsbiDEkeG7i25oIGzGsOG7o25nIHLDtSByw6BuZyB24buBIG3hu5FpIHF1YW4gaOG7hyBuaMOibiBxdeG6oyBnaeG7r2EgY8OhYyB54bq/dSB04buRIHjDoyBo4buZaSBjaOG7pyBjaOG7kXQsIG3DoCBjw7JuIGPDsyB0aOG7gyDEkeG7gSB4deG6pXQgY8OhYyBraHV54bq/biBuZ2jhu4sgbWFuZyB0w61uaCB0aOG7sWMgdGnhu4VuLCBnw7NwIHBo4bqnbiBo4buXIHRy4bujIHF1w6EgdHLDrG5oIHjDonkgZOG7sW5nIGNow61uaCBzw6FjaCBjw7RuZywgcXV5IGhv4bqhY2ggxJHDtCB0aOG7iyBob+G6t2MgxJHhu4tuaCBoxrDhu5tuZyBjw6FjIG5naGnDqm4gY+G7qXUgbGnDqm4gbmfDoG5oIHbhu4EgcGjDoXQgdHJp4buDbiBjb24gbmfGsOG7nWkuDQoNCiMjIyAqKjEuMi4gTeG7pWMgdGnDqnUgbmdoacOqbiBj4bupdSoqDQoNCipN4bulYyB0acOqdSBjaHVuZyoNCg0KxJDhu4EgdMOgaSBuaOG6sW0gcGjDom4gdMOtY2ggY8OhYyB54bq/dSB04buRIGPDsyB0aOG7gyDhuqNuaCBoxrDhu59uZyDEkeG6v24gY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdOG6oWkgY8OhYyBxdeG7kWMgZ2lhIGtow6FjIG5oYXUgdHLDqm4gdGjhur8gZ2nhu5tpLCB0aMO0bmcgcXVhIHZp4buHYyDhu6luZyBk4bulbmcgY8OhYyBtw7QgaMOsbmggcGjDom4gdMOtY2ggxJHhu4tuaCBsxrDhu6NuZyB0csOqbiBi4buZIGThu68gbGnhu4d1IHThu6sgTnVtYmVvLiBRdWEgxJHDsywgbmdoacOqbiBj4bupdSBnw7NwIHBo4bqnbiBuaOG6rW4gZGnhu4duIG5o4buvbmcgeeG6v3UgdOG7kSBu4buVaSBi4bqtdCBnacO6cCBuw6JuZyBjYW8gY2jhuqV0IGzGsOG7o25nIHPhu5FuZywgxJHhu5NuZyB0aOG7nWkgbWluaCBjaOG7qW5nIGNobyB2YWkgdHLDsiBj4bunYSBk4buvIGxp4buHdSB2w6AgbcO0IGjDrG5oIGjhu5NpIHF1eSB0cm9uZyB2aeG7h2MgZ2nhuqNpIHRow61jaCBjw6FjIGhp4buHbiB0xrDhu6NuZyB4w6MgaOG7mWkuDQoNCipN4bulYyB0acOqdSBjaGkgdGnhur90Kg0KDQrEkOG7gSB0w6BpIGjGsOG7m25nIMSR4bq/biB2aeG7h2MgbMOgbSByw7Uga2jDoWkgbmnhu4dtIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGTGsOG7m2kgZ8OzYyBuaMOsbiDEkeG7i25oIGzGsOG7o25nIHbDoCB4w6FjIMSR4buLbmggY8OhYyB54bq/dSB04buRIGNow61uaCBjw7Mga2jhuqMgbsSDbmcg4bqjbmggaMaw4bufbmcgxJHhur9uIGNo4buJIHPhu5EgbsOgeSwgYmFvIGfhu5NtIHPhu6ljIG11YSwgbeG7qWMgxJHhu5kgYW4gdG/DoG4sIGNo4bqldCBsxrDhu6NuZyB5IHThur8sIGtow60gaOG6rXUgdsOgIGPDoWMgxJFp4buBdSBraeG7h24gc+G7kW5nIGxpw6puIHF1YW4uIE5naGnDqm4gY+G7qXUgdGjhu7FjIGhp4buHbiBxdcOhIHRyw6xuaCB44butIGzDvSB2w6AgbMOgbSBz4bqhY2ggYuG7mSBk4buvIGxp4buHdSB04burIE51bWJlbyDEkeG7gyBwaMO5IGjhu6NwIHbhu5tpIGPDoWMgbcO0IGjDrG5oIHBow6JuIHTDrWNoIHRo4buRbmcga8OqLiBUaeG6v3AgdGhlbywgY8OhYyBtw7QgaMOsbmggaOG7k2kgcXV5IHjDoWMgc3XhuqV0IHR1eeG6v24gdMOtbmggdsOgIHBoaSB0dXnhur9uIHTDrW5oIG5oxrAgbG9naXQsIHByb2JpdCB2w6AgY2xvZ2xvZyDEkcaw4bujYyDDoXAgZOG7pW5nIG5o4bqxbSBraeG7g20gxJHhu4tuaCBt4bupYyDEkeG7mSB0w6FjIMSR4buZbmcgY+G7p2EgdOG7q25nIHnhur91IHThu5EgxJHhur9uIGto4bqjIG7Eg25nIMSR4bqhdCDEkcaw4bujYyBjaOG6pXQgbMaw4bujbmcgc+G7kW5nIGNhby4gVHLDqm4gY8ahIHPhu58ga+G6v3QgcXXhuqMgbcO0IGjDrG5oLCBuZ2hpw6puIGPhu6l1IHPhur0gc28gc8OhbmggbeG7qWMgxJHhu5kgcGjDuSBo4bujcCB2w6Agw70gbmdoxKlhIHRo4buRbmcga8OqIGPhu6dhIGPDoWMgeeG6v3UgdOG7kSwgdOG7qyDEkcOzIG5o4bqtbiBkaeG7h24gbmjhu69uZyB54bq/dSB04buRIGPDsyDhuqNuaCBoxrDhu59uZyByw7UgcuG7h3QgbmjhuqV0LiBDdeG7kWkgY8O5bmcsIMSR4buBIHTDoGkgxJHGsGEgcmEgbeG7mXQgc+G7kSBn4bujaSDDvSBtYW5nIHTDrW5oIMSR4buLbmggaMaw4bubbmcgbmjhurFtIG7Dom5nIGNhbyBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyBjxaluZyBuaMawIHThuqFvIHRp4buBbiDEkeG7gSBjaG8gY8OhYyBuZ2hpw6puIGPhu6l1IHRp4bq/cCB0aGVvIMSRaSBzw6J1IHbDoG8gdOG7q25nIGtodSB24buxYyBob+G6t2MgbmjDs20gZMOibiBjxrAgY+G7pSB0aOG7gy4NCg0KIyMjICoqMS4zLiDEkOG7kWkgdMaw4bujbmcgdsOgIHBo4bqhbSB2aSBuZ2hpw6puIGPhu6l1KioNCg0KKsSQ4buRaSB0xrDhu6NuZyBuZ2hpw6puIGPhu6l1Kg0KDQrEkOG7kWkgdMaw4bujbmcgbmdoacOqbiBj4bupdSBj4bunYSDEkeG7gSB0w6BpIGzDoCBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIGPDoWMgeeG6v3UgdOG7kSBraW5oIHThur8g4oCTIHjDoyBo4buZaSB2w6Aga2jhuqMgbsSDbmcgxJHhuqF0IMSRxrDhu6NjIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhbyB04bqhaSBjw6FjIHF14buRYyBnaWEuIEPhu6UgdGjhu4MsIG5naGnDqm4gY+G7qXUgeGVtIHjDqXQgbeG7qWMgxJHhu5kgdMOhYyDEkeG7mW5nIGPhu6dhIGPDoWMgeeG6v3UgdOG7kSBuaMawIHPhu6ljIG11YSwgbeG7qWMgxJHhu5kgYW4gdG/DoG4sIGNo4bqldCBsxrDhu6NuZyB5IHThur8gdsOgIMSRaeG7gXUga2nhu4duIGtow60gaOG6rXUgxJHhur9uIHjDoWMgc3XhuqV0IG3hu5l0IHF14buRYyBnaWEgxJHGsOG7o2MgxJHDoW5oIGdpw6EgbMOgIGPDsyBjaOG6pXQgbMaw4bujbmcgc+G7kW5nIGNhby4NCg0KDQoqUGjhuqFtIHZpIG5naGnDqm4gY+G7qXUqDQoNClbhu4Ega2jDtG5nIGdpYW46IMSQ4buBIHTDoGkgc+G7rSBk4bulbmcgZOG7ryBsaeG7h3UgxJHGsOG7o2MgdGh1IHRo4bqtcCB04burIG7hu4FuIHThuqNuZyBLYWdnbGUsIGJhbyBn4buTbSB0aMO0bmcgdGluIGPhu6dhIGjGoW4gMjAwIHF14buRYyBnaWEgdsOgIHbDuW5nIGzDo25oIHRo4buVIHRyw6puIHRvw6BuIHRo4bq/IGdp4bubaS4gVHV5IG5oacOqbiwgZOG7ryBsaeG7h3UgdGjhu7FjIHThur8gxJHGsOG7o2MgeOG7rSBsw70gc2F1IGtoaSBsb+G6oWkgYuG7jyBuaOG7r25nIHF1YW4gc8OhdCB0aGnhur91IHRow7RuZyB0aW4uDQoNClbhu4EgdGjhu51pIGdpYW46IEThu68gbGnhu4d1IMSRxrDhu6NjIGPhuq1wIG5o4bqtdCB2w6BvIG7Eg20gMjAyNCB04bqhaSB0aOG7nWkgxJFp4buDbSB04bqjaSB24buBIHThu6sgdHJhbmcgS2FnZ2xlLg0KDQpW4buBIG7hu5lpIGR1bmc6IE5naGnDqm4gY+G7qXUgdOG6rXAgdHJ1bmcgdsOgbyBwaMOibiB0w61jaCBjw6FjIHnhur91IHThu5E6IHPhu6ljIG11YSwgbeG7qWMgxJHhu5kgYW4gdG/DoG4sIGNo4bqldCBsxrDhu6NuZyB5IHThur8gdsOgIGtow60gaOG6rXUuIFR1eSBuaGnDqm4sIHRow7RuZyBxdWEgcGjDom4gdMOtY2ggxJHhu4tuaCBsxrDhu6NuZywgaGFpIGJp4bq/biBjw7Mg4bqjbmggaMaw4bufbmcgcsO1IHLhu4d0IHbDoCDhu5VuIMSR4buLbmggbMOgIHPhu6ljIG11YSB2w6AgbeG7qWMgxJHhu5kgYW4gdG/DoG4gxJHGsOG7o2MgZ2nhu68gbOG6oWkgdHJvbmcgY8OhYyBtw7QgaMOsbmggY2jDrW5oIHRo4bupYy4NCg0KVuG7gSBwaMawxqFuZyBwaMOhcDogxJDhu4EgdMOgaSBz4butIGThu6VuZyBjw6FjIG3DtCBow6xuaCBo4buTaSBxdXkgeMOhYyBzdeG6pXQgbmjhu4sgcGjDom4sIGJhbyBn4buTbTogbG9naXQsIHByb2JpdCB2w6AgY2xvZ2xvZyDEkeG7gyBraeG7g20gxJHhu4tuaCB0w6FjIMSR4buZbmcgY+G7p2EgY8OhYyB54bq/dSB04buRIGzDqm4geMOhYyBzdeG6pXQgxJHhuqF0IGNo4bqldCBsxrDhu6NuZyBz4buRbmcgY2FvLiBE4buvIGxp4buHdSDEkcaw4bujYyB44butIGzDvSB2w6AgcGjDom4gdMOtY2ggYuG6sW5nIHBo4bqnbiBt4buBbSBSLg0KDQojIyMgKioxLjQuIELhu5EgY+G7pWMqKg0KDQpDaMawxqFuZyAxOiBU4buVbmcgcXVhbiBuZ2hpw6puIGPhu6l1DQoNCkNoxrDGoW5nIDI6IEThu68gbGnhu4d1IG5naGnDqm4gY+G7qXUNCg0KQ2jGsMahbmcgMzogUGjDom4gdMOtY2ggdsOgIGvhur90IHF14bqjDQoNCkNoxrDGoW5nIDQ6IEvhur90IGx14bqtbiB2w6Aga2nhur9uIG5naOG7iw0KDQojIyAqKkNIxq/GoE5HIDI6IEThu64gTEnhu4ZVIE5HSEnDik4gQ+G7qFUqKg0KDQpC4buZIGThu68gbGnhu4d1IMSRxrDhu6NjIHPhu60gZOG7pW5nIHRyb25nIG5naGnDqm4gY+G7qXUgbsOgeSBjdW5nIGPhuqVwIG3hu5l0IGPDoWkgbmjDrG4gdG/DoG4gZGnhu4duIHbhu4EgY8OhYyBjaOG7iSBz4buRIHBo4bqjbiDDoW5oIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHThuqFpIG5oaeG7gXUgcXXhu5FjIGdpYSwgxJHGsOG7o2MgdOG7lW5nIGjhu6NwIHThu6sgdHJhbmcgS2FnZ2xlIHbhu4EgY8OhYyBjaOG7iSBz4buRIHNpbmggaG/huqF0IGRvIG5nxrDhu51pIGTDuW5nIMSRw7NuZyBnw7NwLiBE4buvIGxp4buHdSBiYW8gZ+G7k20gbmhp4buBdSB54bq/dSB04buRIMSRYSBk4bqhbmcgbmjGsCBz4bupYyBtdWEsIG3hu6ljIMSR4buZIGFuIHRvw6BuLCBjaOG6pXQgbMaw4bujbmcgZOG7i2NoIHbhu6UgeSB04bq/LCDEkWnhu4F1IGtp4buHbiBraMOtIGjhuq11LCBjaGkgcGjDrSBzaW5oIGhv4bqhdCwgZ2nDoSBi4bqldCDEkeG7mW5nIHPhuqNuLCB0w6xuaCB0cuG6oW5nIGdpYW8gdGjDtG5nLCBt4bupYyDEkeG7mSDDtCBuaGnhu4VtIHbDoCBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB04buVbmcgdGjhu4MgduG7m2kgMjYzIHF1YW4gc8OhdCB0xrDGoW5nIMSRxrDGoW5nIHbhu5tpIDI2MyBxdeG7kWMgZ2lhIHbDoCAxOCBiaeG6v24gKDkgYmnhur9uIMSR4buLbmggbMaw4bujbmcgdsOgIDkgYmnhur9uIMSR4buLbmggdMOtbmgpIC4gQ8OhYyBjaOG7iSBz4buRIG7DoHkgxJHGsOG7o2MgdGjhu4MgaGnhu4duIGTGsOG7m2kgZOG6oW5nIMSRaeG7g20gc+G7kSDEkeG7i25oIGzGsOG7o25nIGvhur90IGjhu6NwIHbhu5tpIHBow6JuIGxv4bqhaSBtw7QgdOG6oywgbmjhurFtIG1hbmcgbOG6oWkgY8OhaSBuaMOsbiBzw6J1IHPhuq9jIHbDoCDEkWEgY2hp4buBdSB24buBIG3DtGkgdHLGsOG7nW5nIHPhu5FuZyB04bqhaSB04burbmcgcXXhu5FjIGdpYS4NCg0KDQpgYGB7cn0NCiMgxJDhu41jIGLhu5kgZOG7ryBsaeG7h3UNCmQgPC0gcmVhZC5jc3YoIkQ6L25hYWFhYWEvUFRETERUL1F1YWxpdHlfb2ZfTGlmZS5jc3YiKQ0KZGF0YS50YWJsZShkKQ0KYGBgDQoNCiMjIyAqKjIuMS4gTcO0IHThuqMgYuG7mSBk4buvIGxp4buHdSoqDQoNCsSQ4buDIHBow7kgaOG7o3AgduG7m2kgbeG7pWMgdGnDqnUgbmdoacOqbiBj4bupdSwgxJHhu4EgdMOgaSBjaOG7iSB04bqtcCB0cnVuZyBwaMOibiB0w61jaCBjw6FjIGJp4bq/biDEkeG7i25oIHTDrW5oIGxpw6puIHF1YW4gxJHhur9uIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nLiBWaeG7h2MgbOG7sWEgY2jhu41uIG5ow7NtIGJp4bq/biBuw6B5IGdpw7pwIGzDoG0gbuG7lWkgYuG6rXQgY8OhYyB54bq/dSB04buRIG1hbmcgdMOtbmggY+G6o20gbmjhuq1uIHbDoCDEkcOhbmggZ2nDoSBjaOG7pyBxdWFuIGPhu6dhIG5nxrDhu51pIGTDom4sIMSR4buTbmcgdGjhu51pIHBow7kgaOG7o3AgduG7m2kgY8OhY2ggdGnhur9wIGPhuq1uIGLhurFuZyBjw6FjIG3DtCBow6xuaCBo4buTaSBxdXkgeMOhYyBzdeG6pXQgcGhpIHR1eeG6v24uDQoNCmBgYHtyfQ0KIyBU4bqhbyBiaeG6v24gxJHhu4tuaCB0w61uaA0KYmR0IDwtIGMoICJQdXJjaGFzaW5nLlBvd2VyLkNhdGVnb3J5IiwgIlNhZmV0eS5DYXRlZ29yeSIsICJIZWFsdGguQ2FyZS5DYXRlZ29yeSIsICJDbGltYXRlLkNhdGVnb3J5IiwgIkNvc3Qub2YuTGl2aW5nLkNhdGVnb3J5IiwgIlByb3BlcnR5LlByaWNlLnRvLkluY29tZS5DYXRlZ29yeSIsICJUcmFmZmljLkNvbW11dGUuVGltZS5DYXRlZ29yeSIsICJQb2xsdXRpb24uQ2F0ZWdvcnkiLCAiUXVhbGl0eS5vZi5MaWZlLkNhdGVnb3J5IiApDQoNCiMgVOG6oW8gYuG7mSBk4buvIGxp4buHdSBt4bubaSBjaOG7iSBjw7MgYmnhur9uIMSR4buLbmggdMOtbmgNCmR0IDwtIGRbLCBiZHRdDQpkdCA8LSBkYXRhLmZyYW1lKGxhcHBseShkdCwgYXMuZmFjdG9yKSkNCmRhdGEudGFibGUoZHQpDQpgYGANCg0KIyMjICoqMi4yLiBNw7QgdOG6oyBjw6FjIGJp4bq/bioqDQoNCi0gKipQdXJjaGFzaW5nIFBvd2VyIENhdGVnb3J5KiogKE3hu6ljIMSR4buZIHPhu6ljIG11YSk6IHBo4bqjbiDDoW5oIGto4bqjIG7Eg25nIGNoaSB0acOqdSBj4bunYSBuZ8aw4budaSBkw6JuIHThuqFpIHThu6tuZyBxdeG7kWMgZ2lhLCDEkcaw4bujYyBwaMOibiBsb+G6oWkgdGhlbyBt4bupYyBjYW8gaG/hurdjIHRo4bqlcC4NCg0KLSAqKlNhZmV0eSBDYXRlZ29yeSoqIChN4bupYyDEkeG7mSBhbiB0b8Ogbik6IHRo4buDIGhp4buHbiBj4bqjbSBuaOG6rW4gduG7gSBz4buxIGFuIHRvw6BuIHRyb25nIHjDoyBo4buZaS4NCg0KLSAqKkhlYWx0aCBDYXJlIENhdGVnb3J5KiogKENo4bqldCBsxrDhu6NuZyB5IHThur8pOiBtw7QgdOG6oyDEkcOhbmggZ2nDoSBj4bunYSBuZ8aw4budaSBkw6JuIMSR4buRaSB24bubaSBo4buHIHRo4buRbmcgeSB04bq/Lg0KDQotICoqQ2xpbWF0ZSBDYXRlZ29yeSoqICjEkGnhu4F1IGtp4buHbiBraMOtIGjhuq11KTogcGjhuqNuIMOhbmggc+G7sSBow6BpIGzDsm5nIHbhu4Ega2jDrSBo4bqtdSwgdGjhu51pIHRp4bq/dC4NCg0KLSAqKkNvc3Qgb2YgTGl2aW5nIENhdGVnb3J5KiogKENoaSBwaMOtIHNpbmggaG/huqF0KTogbcO0IHThuqMgbeG7qWMgxJHhu5kgxJHhuq90IMSR4buPLg0KDQotICoqUHJvcGVydHkgUHJpY2UgdG8gSW5jb21lIENhdGVnb3J5KiogKFThu7cgbOG7hyBnacOhIGLhuqV0IMSR4buZbmcgc+G6o24gc28gduG7m2kgdGh1IG5o4bqtcCk6IGNobyBiaeG6v3QgbeG7qWMgxJHhu5kga2jhuqMgbsSDbmcgbXVhIG5ow6AgY+G7p2EgbmfGsOG7nWkgZMOibiB0aMO0bmcgcXVhIHThu7cgbOG7hyBnaeG7r2EgZ2nDoSBuaMOgIHbDoCB0aHUgbmjhuq1wIHRydW5nIGLDrG5oLg0KDQotICoqVHJhZmZpYyBDb21tdXRlIFRpbWUgQ2F0ZWdvcnkqKiAoVGjhu51pIGdpYW4gZGkgY2h1eeG7g24gZ2lhbyB0aMO0bmcpOiBwaOG6o24gw6FuaCBj4bqjbSBuaOG6rW4gduG7gSB0w6xuaCB0cuG6oW5nIGdpYW8gdGjDtG5nLCDEkeG6t2MgYmnhu4d0IGzDoCB0aOG7nWkgZ2lhbiDEkWkgbOG6oWkgdHJ1bmcgYsOsbmggbeG7l2kgbmfDoHkuDQoNCi0gKipQb2xsdXRpb24gQ2F0ZWdvcnkqKiAoTeG7qWMgxJHhu5kgw7Qgbmhp4buFbSk6IHRo4buDIGhp4buHbiBuaOG6rW4gxJHhu4tuaCB24buBIHTDrG5oIHRy4bqhbmcgw7Qgbmhp4buFbSBraMO0bmcga2jDrSwgdGnhur9uZyDhu5NuLCBuZ3Xhu5NuIG7GsOG7m2MgdsOgIG3DtGkgdHLGsOG7nW5nIHThu5VuZyB0aOG7gy4NCg0KLSAqKlF1YWxpdHkgb2YgTGlmZSBDYXRlZ29yeSoqIChDaOG6pXQgbMaw4bujbmcgc+G7kW5nKTogbMOgIGJp4bq/biBwaOG7pSB0aHXhu5ljIGNow61uaCB0cm9uZyBuZ2hpw6puIGPhu6l1LCB04buVbmcgaOG7o3AgxJHDoW5oIGdpw6EgY2h1bmcgduG7gSBt4bupYyBz4buRbmcsIMSRaeG7gXUga2nhu4duIHNpbmggaG/huqF0IHbDoCBt4bupYyDEkeG7mSBow6BpIGzDsm5nIGPhu6dhIG5nxrDhu51pIGTDom4uDQoNCiMjICoqQ0jGr8agTkcgMzogUEjDgk4gVMONQ0ggVsOAIEvhur5UIFFV4bqiKioNCg0KVHJvbmcgbmdoacOqbiBj4bupdSBuw6B5LCBiaeG6v24gcGjhu6UgdGh14buZYyDEkcaw4bujYyBs4buxYSBjaOG7jW4gbMOgIFF1YWxpdHkgb2YgTGlmZSBDYXRlZ29yeSDigJMgxJHhuqFpIGRp4buHbiBjaG8gY2jhuqV0IGzGsOG7o25nIHPhu5FuZyB04buVbmcgdGjhu4MgdOG6oWkgbeG7l2kgcXXhu5FjIGdpYSwgxJHGsOG7o2MgbcOjIGjDs2EgZMaw4bubaSBk4bqhbmcgxJHhu4tuaCB0w61uaCAoY2FvL3Ro4bqlcCkuIEPDoWMgYmnhur9uIMSR4buZYyBs4bqtcCBn4buTbTogUHVyY2hhc2luZyBQb3dlciwgU2FmZXR5LCBIZWFsdGggQ2FyZSwgdsOgIENsaW1hdGUgxJHhu4F1IG1hbmcgdMOtbmggY2jhuqV0IHBow6JuIGxv4bqhaSB2w6AgcGjhuqNuIMOhbmggY8OhYyB54bq/dSB04buRIGNo4bunIHF1YW4gdHJvbmcgxJHDoW5oIGdpw6EgY+G7p2EgbmfGsOG7nWkgZMOibi4gRG8gYmnhur9uIHBo4bulIHRodeG7mWMgbMOgIGJp4bq/biDEkeG7i25oIHTDrW5oIG5o4buLIHBow6JuLCBuZ2hpw6puIGPhu6l1IMOhcCBk4bulbmcgY8OhYyBtw7QgaMOsbmggaOG7k2kgcXV5IHBoaSB0dXnhur9uIChsb2dpdCwgcHJvYml0LCBjbG9nbG9nKSDEkeG7gyBwaMOibiB0w61jaCBt4buRaSBxdWFuIGjhu4cgZ2nhu69hIGPDoWMgeeG6v3UgdOG7kSB0csOqbiB2w6Aga2jhuqMgbsSDbmcgdGh14buZYyBuaMOzbSBjaOG6pXQgbMaw4bujbmcgc+G7kW5nIGNhby4NCg0KIyMjICoqMy4xLiBUaOG7kW5nIGvDqiBtw7QgdOG6oyBiaeG6v24gxJHhu4tuaCBwaOG7pSB0aHXhu5ljKioNCg0KKipC4bqjbmcgdOG6p24gc+G7kSoqDQoNCmBgYHtyfQ0KdGFibGUoZmFjdG9yKGR0JFF1YWxpdHkub2YuTGlmZS5DYXRlZ29yeSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJIaWdoIiwgIkxvdyIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIkNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhbyIsICJDaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB0aOG6pXAiKSkpDQpgYGANCioqQuG6o25nIHThuqduIHN14bqldCoqDQoNCmBgYHtyfQ0KdGFibGUoZmFjdG9yKGR0JFF1YWxpdHkub2YuTGlmZS5DYXRlZ29yeSwNCiAgICAgICAgICAgICBsZXZlbHMgPSBjKCJIaWdoIiwgIkxvdyIpLA0KICAgICAgICAgICAgIGxhYmVscyA9IGMoIkNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhbyIsICJDaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB0aOG6pXAiKSkpIC8gbGVuZ3RoKGR0JFF1YWxpdHkub2YuTGlmZS5DYXRlZ29yeSkNCmBgYA0KKipCaeG7g3UgxJHhu5MqKg0KDQpgYGB7cn0NCmxpYnJhcnkoZ2dwbG90MikNCg0KIyDEkOG6t3QgZmFjdG9yIHbhu5tpIGxhYmVscyB0aeG6v25nIFZp4buHdA0KZHQkUXVhbGl0eSA8LSBmYWN0b3IodHJpbXdzKGR0JFF1YWxpdHkub2YuTGlmZS5DYXRlZ29yeSksDQogICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJIaWdoIiwgIkxvdyIpLA0KICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiQ2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvIiwgIkNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHRo4bqlcCIpKQ0KDQojIFThuqFvIGLhuqNuZyB04bqnbiBz4buRDQptdWNfY2hhdGx1b25nIDwtIHRhYmxlKGR0JFF1YWxpdHkpDQoNCg0KIyDEkMawYSB24buBIGThuqFuZyBkYXRhIGZyYW1lDQpkZl9jaGF0bHVvbmcgPC0gYXMuZGF0YS5mcmFtZShwcm9wLnRhYmxlKHRhYmxlKGR0JFF1YWxpdHkpKSkNCmNvbG5hbWVzKGRmX2NoYXRsdW9uZykgPC0gYygiTXVjQ2hhdEx1b25nIiwgIkNvdW50IikNCg0KIyBUw61uaCBwaOG6p24gdHLEg20gdsOgIHRow6ptIG5ow6NuDQpkZl9jaGF0bHVvbmckUGVyY2VudCA8LSByb3VuZChkZl9jaGF0bHVvbmckQ291bnQgLyBzdW0oZGZfY2hhdGx1b25nJENvdW50KSAqIDEwMCwgMSkNCmRmX2NoYXRsdW9uZyRMYWJlbCA8LSBwYXN0ZTAoZGZfY2hhdGx1b25nJFBlcmNlbnQsICIlIikNCg0KIyBW4bq9IGJp4buDdSDEkeG7kyB0csOybg0KZ2dwbG90KGRmX2NoYXRsdW9uZywgYWVzKHggPSAiIiwgeSA9IENvdW50LCBmaWxsID0gTXVjQ2hhdEx1b25nKSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5Iiwgd2lkdGggPSAxKSArDQogIGNvb3JkX3BvbGFyKHRoZXRhID0gInkiKSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBMYWJlbCksIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2sodmp1c3QgPSAwLjUpKSArDQogIGxhYnModGl0bGUgPSAiQmnhu4N1IMSR4buTIDMuMTogUGjDom4gYuG7kSBt4bupYyDEkeG7mSBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyIpICsNCiAgdGhlbWVfdm9pZCgpICsNCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSkpDQpgYGANCg0KKioqTmjhuq1uIHjDqXQqKioNCg0KROG7sWEgdsOgbyBiaeG7g3UgxJHhu5MgMy4xIGNobyB0aOG6pXksIHRyb25nIHRvw6BuIGLhu5kgZOG7ryBsaeG7h3UsIGNo4buJIGtob+G6o25nIDI5JSBjw6FjIHF14buRYyBnaWEgxJHGsOG7o2MgeOG6v3AgdsOgbyBuaMOzbSBjw7MgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvLCB0cm9uZyBraGkgxJHDsyA3MC44JSBjw7JuIGzhuqFpIHLGoWkgdsOgbyBuaMOzbSBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB0aOG6pXAuIMSQaeG7gXUgbsOgeSBwaOG6o24gw6FuaCBt4buZdCBz4buxIG3huqV0IGPDom4gxJHhu5FpIMSRw6FuZyBr4buDIGdp4buvYSBoYWkgbmjDs20uIEvhur90IHF14bqjIG7DoHkgY2hvIHRo4bqleSBy4bqxbmcgxJFhIHPhu5EgbmfGsOG7nWkgZMOibiB04bqhaSBjw6FjIHF14buRYyBnaWEgdHJvbmcgdOG6rXAgZOG7ryBsaeG7h3Uga2jDtG5nIGPhuqNtIG5o4bqtbiDEkcaw4bujYyBjdeG7mWMgc+G7kW5nIGPhu6dhIGjhu40g4bufIG3hu6ljIGNhbyDigJQgxJHDonkgY8OzIHRo4buDIGzDoCBo4buHIHF14bqjIHThu6sgbmhp4buBdSB54bq/dSB04buRIG5oxrAgbeG7qWMgc+G7kW5nIGNoxrBhIMSR4bqjbSBi4bqjbywgYW4gdG/DoG4geMOjIGjhu5lpIHRo4bqlcCwgY2hpIHBow60gc2luaCBob+G6oXQgY2FvIGhv4bq3YyBjaOG6pXQgbMaw4bujbmcgZOG7i2NoIHbhu6UgeSB04bq/LCBtw7RpIHRyxrDhu51uZyBjw7JuIG5oaeG7gXUgaOG6oW4gY2jhur8uDQoNCg0KIyMjICoqMy4yLiBLaeG7g20gxJHhu4tuaCB0w61uaCDEkeG7mWMgbOG6rXAqKg0KS2nhu4NtIMSR4buLbmggQ2hpIGLDrG5oIHBoxrDGoW5nIGzDoCBt4buZdCBwaMawxqFuZyBwaMOhcCB0aOG7kW5nIGvDqiB0aMaw4budbmcgxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgxJHDoW5oIGdpw6EgbeG7kWkgbGnDqm4gaOG7hyBnaeG7r2EgaGFpIGJp4bq/biBwaMOibiBsb+G6oWkuIEPhu6UgdGjhu4MsIHBoxrDGoW5nIHBow6FwIG7DoHkga2nhu4NtIHRyYSB4ZW0gc+G7sSBwaMOibiBi4buRIGPhu6dhIG3hu5l0IGJp4bq/biBjw7MgcGjhu6UgdGh14buZYyB2w6BvIGJp4bq/biBjw7JuIGzhuqFpIGhheSBraMO0bmcsIHRow7RuZyBxdWEgdmnhu4djIHNvIHPDoW5oIGdp4buvYSB04bqnbiBzdeG6pXQgcXVhbiBzw6F0IHRo4buxYyB04bq/IHbDoCB04bqnbiBzdeG6pXQga+G7syB24buNbmcgdHJvbmcgYuG6o25nIHBow6JuIHBo4buRaSBjaMOpby4NCg0KQ8O0bmcgdGjhu6ljIHTDrW5oIGdpw6EgdHLhu4sgdGjhu5FuZyBrw6ogQ2hpIGLDrG5oIHBoxrDGoW5nIMSRxrDhu6NjIHRo4buDIGhp4buHbiBuaMawIHNhdToNCg0KJCQNClxjaGleMiA9IFxzdW1fe2ksan0gXGZyYWN7KG5fe2lqfSAtIFxoYXR7XG11fV97aWp9KV4yfXtcaGF0e1xtdX1fe2lqfX0NCiQkDQoNCiMjIyMjICoqMy4yLjEuIEJp4bq/biBRdWFsaXR5IG9mIExpZmUgdsOgIEJp4bq/biBQdXJjaGFzaW5nIFBvd2VyKiogDQoNCioqR2nhuqMgdGh1eeG6v3Qga2nhu4NtIMSR4buLbmgqKg0KDQotICRIXzAkOiBDaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB2w6AgU+G7qWMgbXVhIHRo4buxYyB04bq/IGzDoCBoYWkgYmnhur9uIMSR4buZYyBs4bqtcC4NCg0KLSAkSF8xJDogQ2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdsOgIFPhu6ljIG11YSB0aOG7sWMgdOG6vyBjw7MgbeG7kWkgbGnDqm4gaOG7hyB24bubaSBuaGF1Lg0KDQpgYGB7cn0NCm10aHQxIDwtIHRhYmxlKGR0JFF1YWxpdHkub2YuTGlmZS5DYXRlZ29yeSwgZHQkUHVyY2hhc2luZy5Qb3dlci5DYXRlZ29yeSkNCmNoaXNxLnRlc3QobXRodDEpDQpgYGANCg0KKioqTmjhuq1uIHjDqXQ6KioqDQoNCkThu7FhIHRyw6puIGvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIENoaSBiw6xuaCBwaMawxqFuZywgdGEgdGjhuqV5IHBfdmFsdWUgPCAyLjJlLTE2IGLDqSBoxqFuIHbhu5tpIG3hu6ljIMO9IG5naMSpYSB0aMO0bmcgdGjGsOG7nW5nICjOsSA9IDAuMDUpLCBkbyDEkcOzIHRhIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJC4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgY8OzIG3hu5FpIGxpw6puIGjhu4cgdGjhu5FuZyBrw6ogY8OzIMO9IG5naMSpYSBnaeG7r2EgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdsOgIHPhu6ljIG11YSB0aOG7sWMgdOG6vy4NCg0KDQojIyMjIyAqKjMuMi4yLiBCaeG6v24gUXVhbGl0eSBvZiBMaWZlIHbDoCBCaeG6v24gU2FmZXR5KioNCg0KKipHaeG6oyB0aHV54bq/dCBraeG7g20gxJHhu4tuaCoqDQoNCi0gJEhfMCQ6IENo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHbDoCBN4bupYyDEkeG7mSBhbiB0b8OgbiBsw6AgaGFpIGJp4bq/biDEkeG7mWMgbOG6rXAuDQoNCi0gJEhfMSQ6IENo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHbDoCBN4bupYyDEkeG7mSBhbiB0b8OgbiBjw7MgbeG7kWkgbGnDqm4gaOG7hyB24bubaSBuaGF1Lg0KDQpgYGB7cn0NCm10aHQyIDwtIHRhYmxlKGR0JFF1YWxpdHkub2YuTGlmZS5DYXRlZ29yeSwgZHQkU2FmZXR5LkNhdGVnb3J5KQ0KY2hpc3EudGVzdChtdGh0MikNCmBgYA0KDQoqKipOaOG6rW4geMOpdDoqKioNCg0KROG7sWEgdHLDqm4ga+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggQ2hpIGLDrG5oIHBoxrDGoW5nLCB0YSB0aOG6pXkgcF92YWx1ZSA9IDQuMTE4ZS0wNSBiw6kgaMahbiB24bubaSBt4bupYyDDvSBuZ2jEqWEgdGjDtG5nIHRoxrDhu51uZyAozrEgPSAwLjA1KSwgZG8gxJHDsyB0YSBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgJEhfMCQuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IGPDsyBt4buRaSBsacOqbiBo4buHIHRo4buRbmcga8OqIGPDsyDDvSBuZ2jEqWEgZ2nhu69hIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHbDoCBN4bupYyDEkeG7mSBhbiB0b8Ogbi4NCg0KIyMjIyMgKiozLjIuMy4gQmnhur9uIFF1YWxpdHkgb2YgTGlmZSB2w6AgQmnhur9uIEhlYWx0aCBDYXJlKioNCg0KKipHaeG6oyB0aHV54bq/dCBraeG7g20gxJHhu4tuaCoqDQoNCi0gJEhfMCQ6IENo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHbDoCBDaOG6pXQgbMaw4bujbmcgeSB04bq/IGzDoCBoYWkgYmnhur9uIMSR4buZYyBs4bqtcC4NCg0KLSAkSF8xJDogQ2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdsOgIENo4bqldCBsxrDhu6NuZyB5IHThur8gY8OzIG3hu5FpIGxpw6puIGjhu4cgduG7m2kgbmhhdS4NCg0KYGBge3J9DQptdGh0MyA8LSB0YWJsZShkdCRRdWFsaXR5Lm9mLkxpZmUuQ2F0ZWdvcnksIGR0JEhlYWx0aC5DYXJlLkNhdGVnb3J5KQ0KY2hpc3EudGVzdChtdGh0MykNCmBgYA0KDQoqKipOaOG6rW4geMOpdDoqKioNCg0KROG7sWEgdHLDqm4ga+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggQ2hpIGLDrG5oIHBoxrDGoW5nLCB0YSB0aOG6pXkgcF92YWx1ZSA9IDEuMDQ2ZS0wNSBiw6kgaMahbiB24bubaSBt4bupYyDDvSBuZ2jEqWEgdGjDtG5nIHRoxrDhu51uZyAozrEgPSAwLjA1KSwgZG8gxJHDsyB0YSBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgJEhfMCQuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IGPDsyBt4buRaSBsacOqbiBo4buHIHRo4buRbmcga8OqIGPDsyDDvSBuZ2jEqWEgZ2nhu69hIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHbDoCBDaOG6pXQgbMaw4bujbmcgeSB04bq/Lg0KDQoNCiMjIyMjICoqMy4yLjQuIEJp4bq/biBRdWFsaXR5IG9mIExpZmUgdsOgIEJp4bq/biBDbGltYXRlKioNCg0KKipHaeG6oyB0aHV54bq/dCBraeG7g20gxJHhu4tuaCoqDQoNCi0gJEhfMCQ6IENo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHbDoCDEkGnhu4F1IGtp4buHbiBraMOtIGjhuq11IGzDoCBoYWkgYmnhur9uIMSR4buZYyBs4bqtcC4NCg0KLSAkSF8xJDogQ2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdsOgIMSQaeG7gXUga2nhu4duIGtow60gaOG6rXUgY8OzIG3hu5FpIGxpw6puIGjhu4cgduG7m2kgbmhhdS4NCg0KYGBge3J9DQptdGh0NCA8LSB0YWJsZShkdCRRdWFsaXR5Lm9mLkxpZmUuQ2F0ZWdvcnksIGR0JENsaW1hdGUuQ2F0ZWdvcnkpDQpjaGlzcS50ZXN0KG10aHQ0KQ0KYGBgDQoNCioqKk5o4bqtbiB4w6l0OioqKg0KDQpE4buxYSB0csOqbiBr4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBDaGkgYsOsbmggcGjGsMahbmcsIHRhIHRo4bqleSBwX3ZhbHVlIDwgMi4yZS0xNiBiw6kgaMahbiB24bubaSBt4bupYyDDvSBuZ2jEqWEgdGjDtG5nIHRoxrDhu51uZyAozrEgPSAwLjA1KSwgZG8gxJHDsyB0YSBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgJEhfMCQuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IGPDsyBt4buRaSBsacOqbiBo4buHIHRo4buRbmcga8OqIGPDsyDDvSBuZ2jEqWEgZ2nhu69hIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHbDoCDEkGnhu4F1IGtp4buHbiBraMOtIGjhuq11Lg0KDQojIyMjIyAqKjMuMi41LiBCaeG6v24gUXVhbGl0eSBvZiBMaWZlIHbDoCBCaeG6v24gQ29zdCBMaXZpbmcqKg0KDQoqKkdp4bqjIHRodXnhur90IGtp4buDbSDEkeG7i25oKioNCg0KLSAkSF8wJDogQ2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdsOgIENoaSBwaMOtIHNpbmggaG/huqF0IGzDoCBoYWkgYmnhur9uIMSR4buZYyBs4bqtcC4NCg0KLSAkSF8xJDogQ2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdsOgIENoaSBwaMOtIHNpbmggaG/huqF0IGPDsyBt4buRaSBsacOqbiBo4buHIHbhu5tpIG5oYXUuDQoNCmBgYHtyfQ0KbXRodDUgPC0gdGFibGUoZHQkUXVhbGl0eS5vZi5MaWZlLkNhdGVnb3J5LCBkdCRDb3N0Lm9mLkxpdmluZy5DYXRlZ29yeSkNCmNoaXNxLnRlc3QobXRodDUpDQpgYGANCg0KKioqTmjhuq1uIHjDqXQ6KioqDQoNCkThu7FhIHRyw6puIGvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIENoaSBiw6xuaCBwaMawxqFuZywgdGEgdGjhuqV5IHBfdmFsdWUgPSAwLjE0NzIgbOG7m24gaMahbiB24bubaSBt4bupYyDDvSBuZ2jEqWEgdGjDtG5nIHRoxrDhu51uZyAozrEgPSAwLjA1KSwgZG8gxJHDsyBraMO0bmcgxJHhu6cgYuG6sW5nIGNo4bupbmcgxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkLiBLaMO0bmcgY8OzIG3hu5FpIGxpw6puIGjhu4cgdGjhu5FuZyBrw6ogY8OzIMO9IG5naMSpYSBnaeG7r2EgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdsOgIGNoaSBwaMOtIHNpbmggaG/huqF0LiDEkGnhu4F1IG7DoHkgaMOgbSDDvSBy4bqxbmcgdHJvbmcgdOG6rXAgZOG7ryBsaeG7h3UgbsOgeSwgbeG7qWMgY2hpIHBow60gc2luaCBob+G6oXQga2jDtG5nIGNobyB0aOG6pXkg4bqjbmggaMaw4bufbmcgcsO1IHLhu4d0IMSR4bq/biBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyDEkcaw4bujYyBwaMOibiBsb+G6oWkuICAgDQoNCiMjIyMjICoqMy4yLjYuIEJp4bq/biBRdWFsaXR5IG9mIExpZmUgdsOgIEJp4bq/biBQcm9wZXJ0eSB0byBJbmNvbWUqKg0KDQoqKkdp4bqjIHRodXnhur90IGtp4buDbSDEkeG7i25oKioNCg0KLSAkSF8wJDogQ2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdsOgIFThu7cgbOG7hyBnacOhIGLhuqV0IMSR4buZbmcgc+G6o24gc28gduG7m2kgdGh1IG5o4bqtcCBsw6AgaGFpIGJp4bq/biDEkeG7mWMgbOG6rXAuDQoNCi0gJEhfMSQ6IENo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHbDoCBU4bu3IGzhu4cgZ2nDoSBi4bqldCDEkeG7mW5nIHPhuqNuIHNvIHbhu5tpIHRodSBuaOG6rXAgY8OzIG3hu5FpIGxpw6puIGjhu4cgduG7m2kgbmhhdS4NCg0KYGBge3J9DQptdGh0NiA8LSB0YWJsZShkdCRRdWFsaXR5Lm9mLkxpZmUuQ2F0ZWdvcnksIGR0JFByb3BlcnR5LlByaWNlLnRvLkluY29tZS5DYXRlZ29yeSkNCmNoaXNxLnRlc3QobXRodDYpDQpgYGANCg0KKioqTmjhuq1uIHjDqXQ6KioqDQoNCkThu7FhIHRyw6puIGvhur90IHF14bqjIGtp4buDbSDEkeG7i25oIENoaSBiw6xuaCBwaMawxqFuZywgdGEgdGjhuqV5IHBfdmFsdWUgPSAwLjEwNjUgbOG7m24gaMahbiB24bubaSBt4bupYyDDvSBuZ2jEqWEgdGjDtG5nIHRoxrDhu51uZyAozrEgPSAwLjA1KSwgZG8gxJHDsyBraMO0bmcgxJHhu6cgYuG6sW5nIGNo4bupbmcgxJHhu4MgYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkLiBLaMO0bmcgY8OzIG3hu5FpIGxpw6puIGjhu4cgdGjhu5FuZyBrw6ogY8OzIMO9IG5naMSpYSBnaeG7r2EgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdsOgIHThu7cgbOG7hyBnacOhIGLhuqV0IMSR4buZbmcgc+G6o24gc28gduG7m2kgdGh1IG5o4bqtcC4gxJBp4buBdSBuw6B5IGjDoG0gw70gcuG6sW5nIHRyb25nIHThuq1wIGThu68gbGnhu4d1IG7DoHksIHThu7cgbOG7hyBnacOhIGLhuqV0IMSR4buZbmcgc+G6o24gc28gduG7m2kgdGh1IG5o4bqtcCBraMO0bmcgY2hvIHRo4bqleSDhuqNuaCBoxrDhu59uZyByw7UgcuG7h3QgxJHhur9uIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIMSRxrDhu6NjIHBow6JuIGxv4bqhaS4gICANCg0KIyMjIyMgKiozLjIuNy4gQmnhur9uIFF1YWxpdHkgb2YgTGlmZSB2w6AgQmnhur9uIFRyYWZmaWMgQ29tbXV0ZSBUaW1lKioNCg0KKipHaeG6oyB0aHV54bq/dCBraeG7g20gxJHhu4tuaCoqDQoNCi0gJEhfMCQ6IENo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHbDoCBUaOG7nWkgZ2lhbiBkaSBjaHV54buDbiBnaWFvIHRow7RuZyBsw6AgaGFpIGJp4bq/biDEkeG7mWMgbOG6rXAuDQoNCi0gJEhfMSQ6IENo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHbDoCBUaOG7nWkgZ2lhbiBkaSBjaHV54buDbiBnaWFvIHRow7RuZyBjw7MgbeG7kWkgbGnDqm4gaOG7hyB24bubaSBuaGF1Lg0KDQpgYGB7cn0NCm10aHQ3IDwtIHRhYmxlKGR0JFF1YWxpdHkub2YuTGlmZS5DYXRlZ29yeSwgZHQkVHJhZmZpYy5Db21tdXRlLlRpbWUuQ2F0ZWdvcnkpDQpjaGlzcS50ZXN0KG10aHQ3KQ0KYGBgDQoNCioqKk5o4bqtbiB4w6l0OioqKg0KDQpE4buxYSB0csOqbiBr4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBDaGkgYsOsbmggcGjGsMahbmcsIHRhIHRo4bqleSBwX3ZhbHVlID0gMC44NDgxIGzhu5tuIGjGoW4gduG7m2kgbeG7qWMgw70gbmdoxKlhIHRow7RuZyB0aMaw4budbmcgKM6xID0gMC4wNSksIGRvIMSRw7Mga2jDtG5nIMSR4bunIGLhurFuZyBjaOG7qW5nIMSR4buDIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJC4gS2jDtG5nIGPDsyBt4buRaSBsacOqbiBo4buHIHRo4buRbmcga8OqIGPDsyDDvSBuZ2jEqWEgZ2nhu69hIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHbDoCB0aOG7nWkgZ2lhbiBkaSBjaHV54buDbiBnaWFvIHRow7RuZyB24bubaSB0aHUgbmjhuq1wLiDEkGnhu4F1IG7DoHkgaMOgbSDDvSBy4bqxbmcgdHJvbmcgdOG6rXAgZOG7ryBsaeG7h3UgbsOgeSwgdGjhu51pIGdpYW4gZGkgY2h1eeG7g24gZ2lhbyB0aMO0bmcgc28gduG7m2kgdGh1IG5o4bqtcCBraMO0bmcgY2hvIHRo4bqleSDhuqNuaCBoxrDhu59uZyByw7UgcuG7h3QgxJHhur9uIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIMSRxrDhu6NjIHBow6JuIGxv4bqhaS4gICANCg0KIyMjIyMgKiozLjIuOC4gQmnhur9uIFF1YWxpdHkgb2YgTGlmZSB2w6AgQmnhur9uIFBvbGx1dGlvbioqDQoNCioqR2nhuqMgdGh1eeG6v3Qga2nhu4NtIMSR4buLbmgqKg0KDQotICRIXzAkOiBDaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB2w6AgTeG7qWMgxJHhu5kgw7Qgbmhp4buFbSBsw6AgaGFpIGJp4bq/biDEkeG7mWMgbOG6rXAuDQoNCi0gJEhfMSQ6IENo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHbDoCBN4bupYyDEkeG7mSDDtCBuaGnhu4VtIGPDsyBt4buRaSBsacOqbiBo4buHIHbhu5tpIG5oYXUuDQoNCmBgYHtyfQ0KbXRodDggPC0gdGFibGUoZHQkUXVhbGl0eS5vZi5MaWZlLkNhdGVnb3J5LCBkdCRQb2xsdXRpb24uQ2F0ZWdvcnkpDQpjaGlzcS50ZXN0KG10aHQ4KQ0KYGBgDQpE4buxYSB0csOqbiBr4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCBDaGkgYsOsbmggcGjGsMahbmcsIHRhIHRo4bqleSBwX3ZhbHVlID0gMC4wNTg2OSBs4bubbiBoxqFuIHbhu5tpIG3hu6ljIMO9IG5naMSpYSB0aMO0bmcgdGjGsOG7nW5nICjOsSA9IDAuMDUpLCBkbyDEkcOzIGtow7RuZyDEkeG7pyBi4bqxbmcgY2jhu6luZyDEkeG7gyBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgJEhfMCQuIEtow7RuZyBjw7MgbeG7kWkgbGnDqm4gaOG7hyB0aOG7kW5nIGvDqiBjw7Mgw70gbmdoxKlhIGdp4buvYSBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB2w6AgbeG7qWMgxJHhu5kgw7Qgbmhp4buFbS4gxJBp4buBdSBuw6B5IGjDoG0gw70gcuG6sW5nIHRyb25nIHThuq1wIGThu68gbGnhu4d1IG7DoHksIG3hu6ljIMSR4buZIMO0IG5oaeG7hW0ga2jDtG5nIGNobyB0aOG6pXkg4bqjbmggaMaw4bufbmcgcsO1IHLhu4d0IMSR4bq/biBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyDEkcaw4bujYyBwaMOibiBsb+G6oWkuICAgDQoNCiMjIyAqKjMuMy4gVGjhu5FuZyBrw6ogbcO0IHThuqMgZ2nhu69hIDIgYmnhur9uKioNCg0KIyMjIyAqKjMuMy4xLiBCaeG6v24gUXVhbGl0eSBvZiBMaWZlIHbDoCBCaeG6v24gUHVyY2hhc2luZyBQb3dlcioqDQoNCiMjIyMjICoqMy4zLjEuMS5C4bqjbmcgdOG6p24gc+G7kSoqDQpgYGB7cn0NCmR0JFF1YWxpdHk8LSBmYWN0b3IoZHQkUXVhbGl0eS5vZi5MaWZlLkNhdGVnb3J5LA0KICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkhpZ2giLCAiTG93IiksDQogICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiQ2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvIiwgIkNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHRo4bqlcCIpKQ0KDQpkdCRQdXJjaGFzaW5nUG93ZXIgPC0gZmFjdG9yKGR0JFB1cmNoYXNpbmcuUG93ZXIuQ2F0ZWdvcnksDQogICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkhpZ2giLCAiTG93IiksDQogICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIlPhu6ljIG11YSB0aOG7sWMgdOG6vyBjYW8iLCAiU+G7qWMgbXVhIHRo4buxYyB04bq/IHRo4bqlcCIpKQ0KDQojIFThuqFvIGLhuqNuZyB04bqnbiBzdeG6pXQgY2jDqW8gDQoNCnRrbXQyYjE8LSB0YWJsZShkdCRRdWFsaXR5LCBkdCRQdXJjaGFzaW5nUG93ZXIpDQoNCiMgVGjDqm0gdOG7lW5nIGjDoG5nIHbDoCB04buVbmcgY+G7mXQNCnN1bXRrbXQyYjE8LSBhZGRtYXJnaW5zKHRrbXQyYjEpDQpzdW10a210MmIxDQoNCmBgYA0KDQoNCmBgYHtyfQ0KIyBDaHV54buDbiBi4bqjbmcgdOG6p24gc3XhuqV0IHRow6BuaCBkYXRhIGZyYW1lIMSR4buDIHbhur0NCmRmX3Bsb3QyIDwtIGFzLmRhdGEuZnJhbWUodGttdDJiMSkNCmNvbG5hbWVzKGRmX3Bsb3QyKSA8LSBjKCJRdWFsaXR5X29mX0xpZmUiLCAiUHVyY2hhc2luZ19Qb3dlciIsICJDb3VudCIpDQoNCiMgVuG6vSBiaeG7g3UgxJHhu5MNCmxpYnJhcnkoZ2dwbG90MikNCmdncGxvdChkZl9wbG90MiwgYWVzKHggPSBQdXJjaGFzaW5nX1Bvd2VyLCB5ID0gQ291bnQsIGZpbGwgPSBRdWFsaXR5X29mX0xpZmUpKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC43KSwgd2lkdGggPSAwLjYpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IENvdW50KSwNCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjcpLA0KICAgICAgICAgICAgdmp1c3QgPSAtMC4zLCBzaXplID0gMy41KSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIiM0MWFiNWQiLCAiIzIzOGI0NSIpKSArDQogIGxhYnMoDQogICAgdGl0bGUgPSAiQmnhu4N1IMSR4buTIDMuMjogTeG7kWkgbGnDqm4gaOG7hyBnaeG7r2EgU+G7qWMgbXVhIHRo4buxYyB04bq/IHbDoCBDaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyIsDQogICAgeCA9ICJT4bupYyBtdWEgdGjhu7FjIHThur8iLA0KICAgIHkgPSAiU+G7kSBxdeG7kWMgZ2lhIiwNCiAgICBmaWxsID0gIkNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIg0KICApICsNCiAgdGhlbWVfbWluaW1hbCgpDQpgYGANCg0KKioqTmjhuq1uIHjDqXQqKioNCg0KROG7sWEgdsOgbyBiaeG7g3UgxJHhu5MgMy4yLG5o4bqtbiB0aOG6pXkgeHUgaMaw4bubbmcgcGjDom4gaMOzYSByw7UgcuG7h3QgZ2nhu69hIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHbDoCBz4bupYyBtdWEgdGjhu7FjIHThur8uIEPhu6UgdGjhu4MsIHRyb25nIHPhu5EgNjkgcXXhu5FjIGdpYSBjw7MgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvLCBjw7MgxJHhur9uIDUyIHF14buRYyBnaWEgKGtob+G6o25nIDc1JSkgxJHhu5NuZyB0aOG7nWkgc+G7nyBo4buvdSBz4bupYyBtdWEgdGjhu7FjIHThur8gY2FvLiBOZ8aw4bujYyBs4bqhaSwgdHJvbmcgbmjDs20gMTY3IHF14buRYyBnaWEgY8OzIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHRo4bqlcCwgcGjhuqduIGzhu5tuICgxMzggcXXhu5FjIGdpYSwgdMawxqFuZyDEkcawxqFuZyA4Miw2JSkgbOG6oWkgY8OzIHPhu6ljIG11YSB0aOG7sWMgdOG6vyB0aOG6pXAuIFPhu7EgY2jDqm5oIGzhu4djaCDEkcOhbmcga+G7gyBuw6B5IHBo4bqjbiDDoW5oIHh1IGjGsOG7m25nIMSR4buTbmcgYmnhur9uIGdp4buvYSBoYWkgeeG6v3UgdOG7kToga2hpIHPhu6ljIG11YSB0aOG7sWMgdOG6vyBjYW8gdGjDrCBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyBjxaluZyBjw7MgeHUgaMaw4bubbmcgY2FvLCB2w6AgbmfGsOG7o2MgbOG6oWkuIMSQw6J5IGzDoCBjxqEgc+G7nyBiYW4gxJHhuqd1IMSR4buDIGdp4bqjIMSR4buLbmggcuG6sW5nIHPhu6ljIG11YSB0aOG7sWMgdOG6vyBjw7MgdGjhu4MgbMOgIG3hu5l0IHnhur91IHThu5Eg4bqjbmggaMaw4bufbmcgxJHhur9uIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGPhu6dhIG5nxrDhu51pIGTDom4uDQoNCiMjIyMjICoqMy4zLjEuMi4gSGnhu4d1IHThu7cgbOG7hyoqDQoNCmBgYHtyfQ0KYWRkbWFyZ2lucyh0a210MmIxKQ0KYGBgDQokJA0KcF8xID0gUChcdGV4dHtRdWFsaXR5fSA9IFx0ZXh0e0No4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhb30gXG1pZCBcdGV4dHtQdXJjaGFzaW5nfSA9IFPhu6ljIG11YSB0aOG7sWMgdOG6vyBjYW8pDQokJA0KJCQNCnBfMiA9IFAoXHRleHR7UXVhbGl0eX0gPVx0ZXh0e0No4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhb30gXG1pZCBcdGV4dHtQdXJjaGFzaW5nfSA9IFPhu6ljIG11YSB0aOG7sWMgdOG6vyB0aOG6pXApDQokJA0KDQoqKkdp4bqjIHRodXnhur90IGtp4buDbSDEkeG7i25oKioNCg0KJEhfMCQ6ICRwXzEgLSBwXzIgPSAwJCAoVOG7tyBs4buHIHF14buRYyBnaWEgY8OzIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhbyDhu58gbmjDs20gc+G7qWMgbXVhIHRo4buxYyB04bq/IGNhbyBi4bqxbmcgduG7m2kgbmjDs20gc+G7qWMgbXVhIHRo4buxYyB04bq/IHRo4bqlcCkNCg0KJEhfMSQ6ICRwXzEgLSBwXzIgPiAwJCAoVOG7tyBs4buHIHF14buRYyBnaWEgY8OzIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhbyDhu58gbmjDs20gc+G7qWMgbXVhIHRo4buxYyB04bq/IGNhbyBuaGnhu4F1IGjGoW4gbmjDs20gc+G7qWMgbXVhIHRo4buxYyB04bq/IHRo4bqlcCkNCg0KDQpgYGB7cn0NCiMgU+G7kSBxdeG7kWMgZ2lhIGPDsyBjaOG6pXQgbMaw4bujbmcgc+G7kW5nIGNhbyB0cm9uZyB04burbmcgbmjDs20gc+G7qWMgbXVhIA0KY291bnRzX1B1cmNoYXNpbmcgPC0gYyh0a210MmIxWyJDaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyBjYW8iLCAiU+G7qWMgbXVhIHRo4buxYyB04bq/IGNhbyJdLA0KICAgICAgICAgICAgICAgICAgIHRrbXQyYjFbIkNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhbyIsICJT4bupYyBtdWEgdGjhu7FjIHThur8gdGjhuqVwIl0pDQoNCiMgVOG7lW5nIHPhu5EgbmfGsOG7nWkgdHJvbmcgdOG7q25nIHPhu6ljIG11YQ0KdG90YWxzX1B1cmNoYXNpbmcgPC0gYyhzdW0odGttdDJiMVssICJT4bupYyBtdWEgdGjhu7FjIHThur8gY2FvIl0pLA0KICAgICAgICAgICAgICAgICAgIHN1bSh0a210MmIxWywgIlPhu6ljIG11YSB0aOG7sWMgdOG6vyB0aOG6pXAiXSkpDQoNCiMgS2nhu4NtIMSR4buLbmggdOG7iSBs4buHIG3hu5l0IHBow61hOiBwMSA+IHAyDQp0ZXN0X1B1cmNoYXNpbmdfZ3JlYXRlciA8LSBwcm9wLnRlc3QoY291bnRzX1B1cmNoYXNpbmcsIHRvdGFsc19QdXJjaGFzaW5nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmUgPSAiZ3JlYXRlciIsIGNvcnJlY3QgPSBGQUxTRSkNCg0KIyBIaeG7g24gdGjhu4sga+G6v3QgcXXhuqMNCnRlc3RfUHVyY2hhc2luZ19ncmVhdGVyDQpgYGANCg0KKioqTmjhuq1uIHjDqXQqKioNCg0KS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSBz4buxIGtow6FjIGJp4buHdCB24buBIHThu7cgbOG7hyBxdeG7kWMgZ2lhIGPDsyBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyBjYW8gZ2nhu69hIGhhaSBuaMOzbSBz4bupYyBtdWEgbMOgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ouIEPhu6UgdGjhu4MsIHThu7cgbOG7hyBxdeG7kWMgZ2lhIGPDsyBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyBjYW8gdHJvbmcgbmjDs20gY8OzIHPhu6ljIG11YSB0aOG7sWMgdOG6vyBjYW8gbOG7m24gaMahbiDEkcOhbmcga+G7gyBzbyB24bubaSBuaMOzbSBjw7Mgc+G7qWMgbXVhIHRo4buxYyB04bq/IHRo4bqlcC4gVuG7m2kgbeG7qWMgw70gbmdoxKlhIDUlLCB0YSBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgJEhfMCQuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IGPDsyBi4bqxbmcgY2jhu6luZyB0aOG7kW5nIGvDqiDEkeG7gyBraOG6s25nIMSR4buLbmggcuG6sW5nIHPhu6ljIG11YSB0aOG7sWMgdOG6vyBjYW8gduG7m2kga2jhuqMgbsSDbmcgxJHhuqF0IMSRxrDhu6NjIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhbyBjYW8gaMahbiBz4bupYyBtdWEgdGjhu7FjIHThur8gdGjhuqVwLiDEkGnhu4F1IG7DoHkgY+G7p25nIGPhu5EgZ2nhuqMgxJHhu4tuaCBy4bqxbmcgc+G7qWMgbXVhIHRo4buxYyB04bq/IGzDoCBt4buZdCB54bq/dSB04buRIHF1YW4gdHLhu41uZyDhuqNuaCBoxrDhu59uZyDEkeG6v24gY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY+G7p2EgbmfGsOG7nWkgZMOibi4NCg0KIyMjIyMgKiozLjMuMS4zLiBSZWxhdGl2ZSBSaXNrICoqDQpgYGB7cn0NClB1cmNoYXNpbmcgPC0gdGFibGUoZHQkUHVyY2hhc2luZ1Bvd2VyLGR0JFF1YWxpdHkpDQphZGRtYXJnaW5zKFB1cmNoYXNpbmcpDQpgYGANCg0KYGBge3J9DQpSZWxSaXNrKFB1cmNoYXNpbmcsIGNvbmYubGV2ZWwgPSAuOTUpDQpgYGANCioqKk5o4bqtbiB4w6l0KioqDQoNCkvhur90IHF14bqjIHBow6JuIHTDrWNoIFJlbGF0aXZlIFJpc2sgKFJSKSBjaG8gdGjhuqV5IHThu7cgbOG7hyBxdeG7kWMgZ2lhIGPDsyBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyBjYW8gdHJvbmcgbmjDs20gY8OzIHPhu6ljIG11YSB0aOG7sWMgdOG6vyBjYW8gZ+G6pXAga2hv4bqjbmcgNS44NSBs4bqnbiBzbyB24bubaSBuaMOzbSBjw7Mgc+G7qWMgbXVhIHRo4buxYyB04bq/IHRo4bqlcC4gxJDhu5ggdGluIGPhuq15IDk1JSBjaG8gUlIgbuG6sW0gdHJvbmcga2hv4bqjbmcgdOG7qyAzLjY4IMSR4bq/biA5LjQ2LCDEkWnhu4F1IG7DoHkgY2hvIHRo4bqleSBz4buxIGtow6FjIGJp4buHdCBsw6AgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqi4NCg0KTsOzaSBjw6FjaCBraMOhYywgc+G7qWMgbXVhIHRo4buxYyB04bq/IGNhbyBsw6AgbeG7mXQgeeG6v3UgdOG7kSBxdWFuIHRy4buNbmcgZ2nDunAgZ2lhIHTEg25nIGto4bqjIG7Eg25nIMSR4bqhdCDEkcaw4bujYyBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyBjYW8g4bufIGPDoWMgcXXhu5FjIGdpYS4gS+G6v3QgcXXhuqMgbsOgeSBj4bunbmcgY+G7kSB0aMOqbSBi4bqxbmcgY2jhu6luZyB24buBIG3hu5FpIGxpw6puIGjhu4cgY8O5bmcgY2hp4buBdSBnaeG7r2Egc+G7qWMgbXVhIHRo4buxYyB04bq/IHbDoCBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZy4NCg0KIyMjIyMgKiozLjMuMS40LiBPZGRzIHJhdGlvKioNCg0KYGBge3J9DQphZGRtYXJnaW5zKFB1cmNoYXNpbmcpDQpgYGANCg0KYGBge3J9DQpPZGRzUmF0aW8oUHVyY2hhc2luZywgY29uZi5sZXZlbCA9IC45NSkNCmBgYA0KKioqTmjhuq1uIHjDqXQqKioNCg0KVHJvbmcgc+G7kSBjw6FjIHF14buRYyBnaWEgY8OzIHPhu6ljIG11YSB0aOG7sWMgdOG6vyBjYW8sIHjDoWMgc3XhuqV0IMSR4buDIG3hu5l0IHF14buRYyBnaWEgY8OzIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhbyBjYW8gZ+G6pXAga2hv4bqjbmcgMTQuNTYgbOG6p24gc28gduG7m2kgeMOhYyBzdeG6pXQgdMawxqFuZyDhu6luZyDhu58gbmjDs20gcXXhu5FjIGdpYSBjw7Mgc+G7qWMgbXVhIHRo4bqlcC4NCg0KxJDhu5kgdGluIGPhuq15IDk1JSBkYW8gxJHhu5luZyB04burIDcuMzkgxJHhur9uIDI4LjY4LCB04bupYyBsw6AgbmdheSBj4bqjIHRyb25nIHRyxrDhu51uZyBo4bujcCDDrXQgY2jDqm5oIGzhu4djaCBuaOG6pXQsIG5ow7NtIGPDsyBz4bupYyBtdWEgY2FvIHbhuqtuIGPDsyBraOG6oyBuxINuZyDEkeG6oXQgY2jhuqV0IGzGsOG7o25nIHPhu5FuZyBjYW8gaMahbiDDrXQgbmjhuqV0IDcgbOG6p24gc28gduG7m2kgbmjDs20gY8OybiBs4bqhaS4NCg0KxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgc+G7qWMgbXVhIHRo4buxYyB04bq/IGzDoCBt4buZdCB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIG3huqFuaCDEkeG6v24gY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcsIHbDoCBt4buRaSBsacOqbiBo4buHIG7DoHkgbMOgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ouDQoNCiMjIyMgKiozLjMuMi4gQmnhur9uIFF1YWxpdHkgb2YgTGlmZSB2w6AgQmnhur9uIFNhZmV0eSoqDQoNCiMjIyMjICoqMy4zLjIuMS4gQuG6o25nIHThuqduIHPhu5EqKg0KDQpgYGB7cn0NCmR0JFF1YWxpdHk8LSBmYWN0b3IoZHQkUXVhbGl0eS5vZi5MaWZlLkNhdGVnb3J5LA0KICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkhpZ2giLCAiTG93IiksDQogICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiQ2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvIiwgIkNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHRo4bqlcCIpKQ0KZHQkU2FmZXR5IDwtIGZhY3RvcihkdCRTYWZldHkuQ2F0ZWdvcnksDQogICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkhpZ2giLCAiTG93IiksDQogICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIk3hu6ljIMSR4buZIGFuIHRvw6BuIGNhbyIsICJN4bupYyDEkeG7mSBhbiB0b8OgbiB0aOG6pXAiKSkNCiMgVOG6oW8gYuG6o25nIHThuqduIHN14bqldCBjaMOpbyANCg0KdGttdDJiMjwtIHRhYmxlKGR0JFF1YWxpdHksIGR0JFNhZmV0eSkNCg0KIyBUaMOqbSB04buVbmcgaMOgbmcgdsOgIHThu5VuZyBj4buZdA0Kc3VtdGttdDJiMjwtIGFkZG1hcmdpbnModGttdDJiMikNCnN1bXRrbXQyYjINCmBgYA0KDQpgYGB7cn0NCiMgQ2h1eeG7g24gYuG6o25nIHThuqduIHPhu5EgdGjDoG5oIGRhdGEgZnJhbWUNCmRmX3Bsb3QyYjIgPC0gYXMuZGF0YS5mcmFtZSh0a210MmIyKQ0KY29sbmFtZXMoZGZfcGxvdDJiMikgPC0gYygiUXVhbGl0eSIsICJTYWZldHkiLCAiQ291bnQiKQ0KDQojIFbhur0gYmnhu4N1IMSR4buTDQpsaWJyYXJ5KGdncGxvdDIpDQpnZ3Bsb3QoZGZfcGxvdDJiMiwgYWVzKHggPSBTYWZldHksIHkgPSBDb3VudCwgZmlsbCA9IFF1YWxpdHkpKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC43KSwgd2lkdGggPSAwLjYpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IENvdW50KSwNCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjcpLA0KICAgICAgICAgICAgdmp1c3QgPSAtMC4zLCBzaXplID0gMy41KSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIkNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhbyIgPSAiIzJFOEI1NyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHRo4bqlcCIgPSAiI0U3NEMzQyIpKSArDQogIGxhYnMoDQogICAgdGl0bGUgPSAiQmnhu4N1IMSR4buTIDMuMzogTeG7kWkgbGnDqm4gaOG7hyBnaeG7r2EgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdsOgIG3hu6ljIMSR4buZIGFuIHRvw6BuIiwNCiAgICB4ID0gIk3hu6ljIMSR4buZIGFuIHRvw6BuIiwNCiAgICB5ID0gIlPhu5EgcXXhu5FjIGdpYSIsDQogICAgZmlsbCA9ICJDaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyINCiAgKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpKQ0KDQoNCmBgYA0KDQoqKipOaOG6rW4geMOpdCoqKg0KDQpE4buxYSB0aGVvIGJp4buDdSDEkeG7kyAzLjMsIHRyb25nIHPhu5EgNjkgcXXhu5FjIGdpYSBjw7MgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvLCBwaOG6p24gbOG7m24gKDY3IHF14buRYyBnaWEsIHTGsMahbmcgxJHGsMahbmcga2hv4bqjbmcgOTclKSDEkeG7k25nIHRo4budaSBjw7MgbeG7qWMgxJHhu5kgYW4gdG/DoG4gY2FvLiBOZ8aw4bujYyBs4bqhaSwgdHJvbmcgbmjDs20gMTY3IHF14buRYyBnaWEgY8OzIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHRo4bqlcCwgY8OzIDEyMSBxdeG7kWMgZ2lhIChraG/huqNuZyA3MiUpIHbhuqtuIMSR4bqhdCBt4bupYyDEkeG7mSBhbiB0b8OgbiBjYW8sIG5oxrBuZyBjxaluZyBjw7MgdOG7m2kgNDYgcXXhu5FjIGdpYSAoZ+G6p24gMjglKSByxqFpIHbDoG8gbmjDs20gYW4gdG/DoG4gdGjhuqVwLiBT4buxIHBow6JuIGLhu5EgbsOgeSBjaG8gdGjhuqV5IG3hu6ljIMSR4buZIGFuIHRvw6BuIGPDsyB4dSBoxrDhu5tuZyDEkeG7k25nIGJp4bq/biB24bubaSBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyDigJMgY8OhYyBxdeG7kWMgZ2lhIGPDsyBjaOG6pXQgbMaw4bujbmcgc+G7kW5nIGNhbyBn4bqnbiBuaMawIGx1w7RuIGfhuq9uIGxp4buBbiB24bubaSBt4bupYyDEkeG7mSBhbiB0b8OgbiBjYW8uIFR1eSB24bqteSwgduG6q24gdOG7k24gdOG6oWkgbeG7mXQgc+G7kSBxdeG7kWMgZ2lhIGR1eSB0csOsIMSRxrDhu6NjIG3hu6ljIMSR4buZIGFuIHRvw6BuIGTDuSBjaOG6pXQgbMaw4bujbmcgc+G7kW5nIGNoxrBhIGNhbywgZ+G7o2kgw70gcuG6sW5nIGFuIHRvw6BuIGzDoCBt4buZdCB54bq/dSB04buRIHF1YW4gdHLhu41uZyBuaMawbmcgY2jGsGEgxJHhu6cgxJHhu4MgxJHhuqNtIGLhuqNvIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHRvw6BuIGRp4buHbi4NCg0KIyMjIyMgKiozLjMuMi4yLiBIaeG7h3UgdOG7iSBs4buHKioNCg0KYGBge3J9DQphZGRtYXJnaW5zKHRrbXQyYjIpDQpgYGANCg0KJCQNCnBfMSA9IFAoXHRleHR7UXVhbGl0eX0gPSBcdGV4dHtDaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyBjYW99IFxtaWQgXHRleHR7U2FmZXR5fSA9IE3hu6ljIMSR4buZIGFuIHRvw6BuIGNhbykNCiQkDQoNCiQkDQpwXzIgPSBQKFx0ZXh0e1F1YWxpdHl9ID0gXHRleHR7Q2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvfSBcbWlkIFx0ZXh0e1NhZmV0eX0gPSBN4bupYyDEkeG7mSBhbiB0b8OgbiB0aOG6pXApDQokJA0KDQoqKkdp4bqjIHRodXnhur90IGtp4buDbSDEkeG7i25oKioNCg0KJEhfMCQ6ICRwXzEgLSBwXzIgPSAwJCAoVOG7tyBs4buHIHF14buRYyBnaWEgY8OzIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhbyDhu58gbmjDs20gbeG7qWMgxJHhu5kgYW4gdG/DoG4gY2FvIGLhurFuZyB24bubaSBuaMOzbSBt4bupYyDEkeG7mSBhbiB0b8OgbiB0aOG6pXApDQoNCiRIXzEkOiAkcF8xIC0gcF8yID4gMCQgKFThu7cgbOG7hyBxdeG7kWMgZ2lhIGPDsyBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyBjYW8g4bufIG5ow7NtIG3hu6ljIMSR4buZIGFuIHRvw6BuIGNhbyBuaGnhu4F1IGjGoW4gbmjDs20gbeG7qWMgxJHhu5kgYW4gdG/DoG4gdGjhuqVwKQ0KDQpgYGB7cn0NCiMgU+G7kSBxdeG7kWMgZ2lhIGPDsyBjaOG6pXQgbMaw4bujbmcgc+G7kW5nIGNhbyB0cm9uZyB04burbmcgbmjDs20gbeG7qWMgxJHhu5kgYW4gdG/DoG4NCmNvdW50c19TYWZldHkgPC0gYyh0a210MmIyWyJDaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyBjYW8iLCAiTeG7qWMgxJHhu5kgYW4gdG/DoG4gY2FvIl0sDQogICAgICAgICAgICAgICAgICAgdGttdDJiMlsiQ2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvIiwgIk3hu6ljIMSR4buZIGFuIHRvw6BuIHRo4bqlcCJdKQ0KDQojIFThu5VuZyBz4buRIG5nxrDhu51pIHRyb25nIHThu6tuZyBuaMOzbSBt4bupYyDEkeG7mSBhbiB0b8Ogbg0KdG90YWxzX1NhZmV0eSA8LSBjKHN1bSh0a210MmIyWywgIk3hu6ljIMSR4buZIGFuIHRvw6BuIGNhbyJdKSwNCiAgICAgICAgICAgICAgICAgICBzdW0odGttdDJiMlssICJN4bupYyDEkeG7mSBhbiB0b8OgbiB0aOG6pXAiXSkpDQoNCiMgS2nhu4NtIMSR4buLbmggdOG7iSBs4buHIG3hu5l0IHBow61hOiBwMSA+IHAyDQp0ZXN0X1NhZmV0eV9ncmVhdGVyIDwtIHByb3AudGVzdChjb3VudHNfU2FmZXR5LCB0b3RhbHNfU2FmZXR5LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmUgPSAiZ3JlYXRlciIsIGNvcnJlY3QgPSBGQUxTRSkNCg0KIyBIaeG7g24gdGjhu4sga+G6v3QgcXXhuqMNCnRlc3RfU2FmZXR5X2dyZWF0ZXINCmBgYA0KKioqTmjhuq1uIHjDqXQqKioNCg0KVHJvbmcgbmjDs20gcXXhu5FjIGdpYSBjw7MgbeG7qWMgxJHhu5kgYW4gdG/DoG4gY2FvLCBraG/huqNuZyAzNS42JSBjw7MgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvLCB0cm9uZyBraGkg4bufIG5ow7NtIGFuIHRvw6BuIHRo4bqlcCwgdOG7tyBs4buHIG7DoHkgY2jhu4kgbMOgIDQuMiUuIEtp4buDbSDEkeG7i25oIHRo4buRbmcga8OqIGNobyBr4bq/dCBxdeG6oyBwLXZhbHVlID0gOS40MDjDlzEw4oG74oG2LCBuaOG7jyBoxqFuIDAuMDUsIG7Dqm4gYsOhYyBi4buPIGdp4bqjIHRodXnhur90ICRIXzAkLiDEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSB04bu3IGzhu4cgcXXhu5FjIGdpYSBjw7MgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvIHRyb25nIG5ow7NtIGFuIHRvw6BuIGNhbyBjYW8gaMahbiDEkcOhbmcga+G7gyBzbyB24bubaSBuaMOzbSBhbiB0b8OgbiB0aOG6pXAuIE7Ds2kgY8OhY2gga2jDoWMsIG3hu6ljIMSR4buZIGFuIHRvw6BuIGPDsyBt4buRaSBsacOqbiBo4buHIHTDrWNoIGPhu7FjIHbhu5tpIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nLg0KDQojIyMjIyAqKjMuMi4yLjMuIFJlbGF0aXZlIFJpc2sgKioNCg0KYGBge3J9DQpTYWZldHkgPC0gdGFibGUoZHQkU2FmZXR5LGR0JFF1YWxpdHkpDQphZGRtYXJnaW5zKFNhZmV0eSkNCmBgYA0KDQpgYGB7cn0NClJlbFJpc2soU2FmZXR5LCBjb25mLmxldmVsID0gLjk1KQ0KYGBgDQoqKipOaOG6rW4geMOpdCoqKg0KDQpL4bq/dCBxdeG6oyBwaMOibiB0w61jaCBSZWxhdGl2ZSBSaXNrIChSUikgY2hvIHRo4bqleSB04bu3IGzhu4cgcXXhu5FjIGdpYSBjw7MgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvIHRyb25nIG5ow7NtIGPDsyBt4bupYyDEkeG7mSBhbiB0b8OgbiBjYW8gZ+G6pXAga2hv4bqjbmcgOC41NSBs4bqnbiBzbyB24bubaSBuaMOzbSBjw7MgbeG7qWMgxJHhu5kgYW4gdG/DoG4gdGjhuqVwLiDEkOG7mSB0aW4gY+G6rXkgOTUlIGNobyBSUiBu4bqxbSB0cm9uZyBraG/huqNuZyB04burIDIuNTEgxJHhur9uIDMxLjMyLCBjaOG7qW5nIHThu48gc+G7sSBraMOhYyBiaeG7h3QgbsOgeSBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqLg0KDQrEkGnhu4F1IG7DoHkgY2hvIHRo4bqleSBy4bqxbmcgbeG7qWMgxJHhu5kgYW4gdG/DoG4gY2FvIGzDoCBt4buZdCB54bq/dSB04buRIHF1YW4gdHLhu41uZyBnw7NwIHBo4bqnbiBuw6JuZyBjYW8gY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcuIE7Ds2kgY8OhY2gga2jDoWMsIGPDoWMgcXXhu5FjIGdpYSBjw6BuZyBhbiB0b8OgbiB0aMOsIGPDoG5nIGPDsyBraOG6oyBuxINuZyDEkeG6oXQgxJHGsOG7o2MgY2jhuqV0IGzGsOG7o25nIHPhu5FuZyBjYW8uDQoNCiMjIyMjICoqMy4yLjIuNC4gT2RkcyByYXRpbyoqDQpgYGB7cn0NCmFkZG1hcmdpbnMoU2FmZXR5KQ0KYGBgDQpgYGB7cn0NCk9kZHNSYXRpbyhTYWZldHksIGNvbmYubGV2ZWwgPSAuOTUpDQpgYGANCioqKk5o4bqtbiB4w6l0KioqDQoNClRyb25nIHPhu5EgY8OhYyBxdeG7kWMgZ2lhIGPDsyBt4bupYyDEkeG7mSBhbiB0b8OgbiBjYW8sIGto4bqjIG7Eg25nIMSR4buDIMSR4bqhdCBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyBjYW8gY2FvIGjGoW4ga2hv4bqjbmcgMTIuNzQgbOG6p24gc28gduG7m2kgbmjDs20gcXXhu5FjIGdpYSBjw7MgbeG7qWMgxJHhu5kgYW4gdG/DoG4gdGjhuqVwLg0KDQpLaG/huqNuZyB0aW4gY+G6rXkgOTUlIGRhbyDEkeG7mW5nIHThu6sga2hv4bqjbmcgMy4wMCDEkeG6v24gNTQuMTIsIG5naMSpYSBsw6AgbmdheSBj4bqjIHRyb25nIHRyxrDhu51uZyBo4bujcCB0aOG6rW4gdHLhu41uZyBuaOG6pXQsIGPDoWMgcXXhu5FjIGdpYSBhbiB0b8OgbiB24bqrbiBjw7Mga2jhuqMgbsSDbmcgxJHhuqF0IGNo4bqldCBsxrDhu6NuZyBz4buRbmcgY2FvIGjGoW4gw610IG5o4bqldCAzIGzhuqduIHNvIHbhu5tpIG5ow7NtIGPDsm4gbOG6oWkuDQoNCsSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IHLhurFuZyBt4bupYyDEkeG7mSBhbiB0b8OgbiBjw7MgbeG7kWkgbGnDqm4gaOG7hyBt4bqhbmggduG7m2kgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdsOgIGvhur90IHF14bqjIG7DoHkgbMOgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ouDQoNCg0KIyMjIyAqKjMuMy4zLiBCaeG6v24gUXVhbGl0eSBvZiBMaWZlIHbDoCBCaeG6v24gSGVhbHRoIENhcmUqKg0KDQojIyMjIyAqKjMuMy4zLjEuQuG6o25nIHThuqduIHPhu5EqKg0KYGBge3J9DQpkdCRRdWFsaXR5PC0gZmFjdG9yKGR0JFF1YWxpdHkub2YuTGlmZS5DYXRlZ29yeSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJIaWdoIiwgIkxvdyIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIkNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhbyIsICJDaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB0aOG6pXAiKSkNCmR0JEhlYWx0aENhcmUgPC0gZmFjdG9yKGR0JEhlYWx0aC5DYXJlLkNhdGVnb3J5LA0KICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJIaWdoIiwgIkxvdyIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJDaOG6pXQgbMaw4bujbmcgeSB04bq/IGNhbyIsICJDaOG6pXQgbMaw4bujbmcgeSB04bq/IHRo4bqlcCIpKQ0KIyBU4bqhbyBi4bqjbmcgdOG6p24gc3XhuqV0IGNow6lvIA0KDQp0a210MmIzPC0gdGFibGUoZHQkUXVhbGl0eSwgZHQkSGVhbHRoQ2FyZSkNCg0KIyBUaMOqbSB04buVbmcgaMOgbmcgdsOgIHThu5VuZyBj4buZdA0Kc3VtdGttdDJiMzwtIGFkZG1hcmdpbnModGttdDJiMykNCnN1bXRrbXQyYjMNCmBgYA0KDQpgYGB7cn0NCiMgQ2h1eeG7g24gYuG6o25nIHThuqduIHPhu5EgdGjDoG5oIGRhdGEgZnJhbWUNCmRmX3Bsb3RfYjMgPC0gYXMuZGF0YS5mcmFtZSh0a210MmIzKQ0KY29sbmFtZXMoZGZfcGxvdF9iMykgPC0gYygiUXVhbGl0eSIsICJIZWFsdGhDYXJlIiwgIkNvdW50IikNCg0KIyBW4bq9IGJp4buDdSDEkeG7kw0KbGlicmFyeShnZ3Bsb3QyKQ0KDQpnZ3Bsb3QoZGZfcGxvdF9iMywgYWVzKHggPSBIZWFsdGhDYXJlLCB5ID0gQ291bnQsIGZpbGwgPSBRdWFsaXR5KSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNyksIHdpZHRoID0gMC42KSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSBDb3VudCksDQogICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC43KSwNCiAgICAgICAgICAgIHZqdXN0ID0gLTAuMywgc2l6ZSA9IDMuNSkgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCIjOUVDQUUxIiwgIiM4ODU2QTciKSkgKyANCiAgbGFicygNCiAgICB0aXRsZSA9ICJCaeG7g3UgxJHhu5MgMy40OiBN4buRaSBsacOqbiBo4buHIGdp4buvYSBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB2w6AgY2jhuqV0IGzGsOG7o25nIHkgdOG6vyIsDQogICAgeCA9ICJDaOG6pXQgbMaw4bujbmcgeSB04bq/IiwNCiAgICB5ID0gIlPhu5EgcXXhu5FjIGdpYSIsDQogICAgZmlsbCA9ICJDaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyINCiAgKSArDQogIHRoZW1lX21pbmltYWwoKQ0KDQpgYGANCg0KKioqTmjhuq1uIHjDqXQqKioNCg0KROG7sWEgdGhlbyBiaeG7g3UgxJHhu5MgMy40LCB04bqldCBj4bqjIDY5IHF14buRYyBnaWEgY8OzIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhbyDEkeG7gXUgY8OzIGNo4bqldCBsxrDhu6NuZyB5IHThur8gY2FvIChjaGnhur9tIDEwMCUpLCB0cm9uZyBraGkg4bufIG5ow7NtIHF14buRYyBnaWEgY8OzIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHRo4bqlcCwgY8OzIMSR4bq/biA0MiBxdeG7kWMgZ2lhICgyNSwxJSkgdGh14buZYyBuaMOzbSBjaOG6pXQgbMaw4bujbmcgeSB04bq/IHRo4bqlcC4gxJBp4buBdSBuw6B5IGNobyB0aOG6pXkgY2jhuqV0IGzGsOG7o25nIHkgdOG6vyBjYW8gbMOgIMSR4bq3YyDEkWnhu4NtIHBo4buVIGJp4bq/biDhu58gY8OhYyBxdeG7kWMgZ2lhIGPDsyBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB04buRdCwgxJHhu5NuZyB0aOG7nWkgZ+G7o2kgw70gcuG6sW5nIGNo4bqldCBsxrDhu6NuZyB5IHThur8gY8OzIHRo4buDIMSRw7NuZyB2YWkgdHLDsiBxdWFuIHRy4buNbmcgdHJvbmcgdmnhu4djIG7Dom5nIGNhbyBjaOG6pXQgbMaw4bujbmcgc+G7kW5nLg0KDQojIyMjIyAqKjMuMy4zLjIuIEhp4buHdSB04bu3IGzhu4cqKg0KDQpgYGB7cn0NCmFkZG1hcmdpbnModGttdDJiMykNCmBgYA0KJCQNCnBfMSA9IFAoXHRleHR7UXVhbGl0eX0gPSBcdGV4dHtDaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB0aOG6pXB9IFxtaWQgXHRleHR7SGVhbHRoQ2FyZX0gPSBDaOG6pXQgbMaw4bujbmcgeSB04bq/IGNhbykNCiQkDQoNCiQkDQpwXzIgPSBQKFx0ZXh0e1F1YWxpdHl9ID0gXHRleHR7Q2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdGjhuqVwfSBcbWlkIFx0ZXh0e0hlYWx0aENhcmV9ID0gQ2jhuqV0IGzGsOG7o25nIHkgdOG6vyB0aOG6pXApDQokJA0KDQoqKkdp4bqjIHRodXnhur90IGtp4buDbSDEkeG7i25oKioNCg0KJEhfMCQ6ICRwXzEgLSBwXzIgPSAwJCAoVOG7tyBs4buHIHF14buRYyBnaWEgY8OzIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHRo4bqlcCDhu58gbmjDs20gY2jhuqV0IGzGsOG7o25nIHkgdOG6vyBjYW8gYuG6sW5nIHbhu5tpIG5ow7NtIGNo4bqldCBsxrDhu6NuZyB5IHThur8gdGjhuqVwKQ0KDQokSF8xJDogJHBfMSAtIHBfMiA8IDAkIChU4bu3IGzhu4cgcXXhu5FjIGdpYSBjw7MgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdGjhuqVwIOG7nyBuaMOzbSBjaOG6pXQgbMaw4bujbmcgeSB04bq/IGNhbyBuaGnhu4F1IGjGoW4gbmjDs20gY2jhuqV0IGzGsOG7o25nIHkgdOG6vyB0aOG6pXApDQoNCmBgYHtyfQ0KIyBT4buRIHF14buRYyBnaWEgY8OzIGNo4bqldCBsxrDhu6NuZyBz4buRbmcgY2FvIHRyb25nIHThu6tuZyBuaMOzbSBjaOG6pXQgbMaw4bujbmcgeSB04bq/DQpjb3VudHNfSGVhbHRoQ2FyZSA8LSBjKHRrbXQyYjNbIkNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHRo4bqlcCIsICJDaOG6pXQgbMaw4bujbmcgeSB04bq/IGNhbyJdLA0KICAgICAgICAgICAgICAgICAgIHRrbXQyYjNbIkNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHRo4bqlcCIsICJDaOG6pXQgbMaw4bujbmcgeSB04bq/IHRo4bqlcCJdKQ0KDQojIFThu5VuZyBz4buRIG5nxrDhu51pIHRyb25nIHThu6tuZyBuaMOzbSBjaOG6pXQgbMaw4bujbmcgeSB04bq/DQp0b3RhbHNfSGVhbHRoQ2FyZSA8LSBjKHN1bSh0a210MmIzWywgIkNo4bqldCBsxrDhu6NuZyB5IHThur8gY2FvIl0pLA0KICAgICAgICAgICAgICAgICAgIHN1bSh0a210MmIzWywgIkNo4bqldCBsxrDhu6NuZyB5IHThur8gdGjhuqVwIl0pKQ0KDQojIEtp4buDbSDEkeG7i25oIHThu4kgbOG7hyBt4buZdCBwaMOtYTogcDEgPCBwMg0KdGVzdF9IZWFsdGhDYXJlX2xlc3MgPC0gcHJvcC50ZXN0KGNvdW50c19IZWFsdGhDYXJlLCB0b3RhbHNfSGVhbHRoQ2FyZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlID0gImxlc3MiLCBjb3JyZWN0ID0gRkFMU0UpDQoNCiMgSGnhu4NuIHRo4buLIGvhur90IHF14bqjDQp0ZXN0X0hlYWx0aENhcmVfbGVzcw0KYGBgDQoqKipOaOG6rW4geMOpdCoqKg0KDQpL4bq/dCBxdeG6oyBraeG7g20gxJHhu4tuaCB04bu3IGzhu4cgbeG7mXQgcGjDrWEgY2hvIHJhIGdpw6EgdHLhu4sgIHBfdmFsdWVcdGV4dHstdmFsdWV9ID0gMi4xNjhlIFx0aW1lcyAxMF57LTZ9LCBuaOG7jyBoxqFuIG3hu6ljIMO9IG5naMSpYSAwLjA1LiBEbyDEkcOzLCBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgJEhfMCQuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IHThu7cgbOG7hyBxdeG7kWMgZ2lhIGPDsyBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB0aOG6pXAgdHJvbmcgbmjDs20gY8OzIGNo4bqldCBsxrDhu6NuZyB5IHThur8gY2FvIHRo4bqlcCBoxqFuIMSRw6FuZyBr4buDIHNvIHbhu5tpIG5ow7NtIGPDsyBjaOG6pXQgbMaw4bujbmcgeSB04bq/IHRo4bqlcC4gTsOzaSBjw6FjaCBraMOhYywgY2jhuqV0IGzGsOG7o25nIHkgdOG6vyBjw6BuZyBjYW8gdGjDrCBraOG6oyBuxINuZyBjw7MgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdGjhuqVwIGPDoG5nIGdp4bqjbSwgaMOgbSDDvSBy4bqxbmcgY2jhuqV0IGzGsOG7o25nIHkgdOG6vyBjw7MgbeG7kWkgbGnDqm4gaOG7hyBjw7luZyBjaGnhu4F1IHbhu5tpIHThu7cgbOG7hyBxdeG7kWMgZ2lhIGPDsyBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZy4NCg0KIyMjIyMgKiozLjMuMy4zLiBSZWxhdGl2ZSBSaXNrKioNCmBgYHtyfQ0KSGVhbHRoQ2FyZSA8LSB0YWJsZShkdCRIZWFsdGhDYXJlLGR0JFF1YWxpdHkpDQphZGRtYXJnaW5zKEhlYWx0aENhcmUpDQpgYGANCg0KYGBge3J9DQpSZWxSaXNrKEhlYWx0aENhcmUsIGNvbmYubGV2ZWwgPSAuOTUpDQpgYGANCioqKk5o4bqtbiB4w6l0ICoqKg0KDQpUcm9uZyBt4bqrdSBxdWFuIHPDoXQsIGtow7RuZyBjw7MgcXXhu5FjIGdpYSBuw6BvIHRodeG7mWMgbmjDs20gY2jhuqV0IGzGsOG7o25nIHkgdOG6vyB0aOG6pXAgxJHhuqF0IMSRxrDhu6NjIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhbywgZOG6q24gxJHhur9uIHThu7cgc+G7kSBy4bunaSBybyAoUlIpIGLhurFuZyB2w7QgY8O5bmcuIMSQaeG7gXUgbsOgeSBwaOG6o24gw6FuaCBt4buZdCBt4buRaSBsacOqbiBo4buHIHLhuqV0IG3huqFuaCBnaeG7r2EgY2jhuqV0IGzGsOG7o25nIHkgdOG6vyB2w6AgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcuIFR1eSBuaGnDqm4sIGRvIG3hu5l0IMO0IHRyb25nIGLhuqNuZyB04bqnbiBzdeG6pXQgYuG6sW5nIDAsIGvhur90IHF14bqjIMaw4bubYyBsxrDhu6NuZyBSUiB0cuG7nyBuw6puIGtow7RuZyB4w6FjIMSR4buLbmggxJHhuqd5IMSR4bunLg0KDQpEw7kgduG6rXksIMSR4buZIHRpbiBj4bqteSA5NSUgY2hvIFJSIGPDsyBj4bqtbiBkxrDhu5tpIGzDoCA0LjIzLCBjaG8gdGjhuqV5IHLhurFuZyBuZ2F5IGPhuqMgdHJvbmcgdHLGsOG7nW5nIGjhu6NwIGTDuSB04bu3IHPhu5EgcuG7p2kgcm8gdGjhu7FjIHThur8gY2jhu4kgbuG6sW0g4bufIG3hu6ljIHRo4bqlcCBuaOG6pXQgLCBxdeG7kWMgZ2lhIGPDsyBjaOG6pXQgbMaw4bujbmcgeSB04bq/IGNhbyB24bqrbiBjw7Mga2jhuqMgbsSDbmcgxJHhuqF0IGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhbyBn4bqlcCBoxqFuIDQgbOG6p24gc28gduG7m2kgbmjDs20gY8OybiBs4bqhaS4gxJDDonkgbMOgIGLhurFuZyBjaOG7qW5nIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogdsOgIGfhu6NpIMO9IHZhaSB0csOyIHRoZW4gY2jhu5F0IGPhu6dhIGNo4bqldCBsxrDhu6NuZyB5IHThur8gdHJvbmcgdmnhu4djIGPhuqNpIHRoaeG7h24gY2jhuqV0IGzGsOG7o25nIHPhu5FuZyBxdeG7kWMgZ2lhLg0KDQojIyMjIyAqKjMuMy4zLjQuIE9kZHMgUmF0aW8qKg0KDQpgYGB7cn0NCmFkZG1hcmdpbnMoSGVhbHRoQ2FyZSkNCmBgYA0KYGBge3J9DQpPZGRzUmF0aW8oSGVhbHRoQ2FyZSwgY29uZi5sZXZlbCA9IC45NSkNCmBgYA0KDQoqKipOaOG6rW4geMOpdCoqKg0KDQpUcm9uZyBi4bqjbmcgcGjDom4gcGjhu5FpIGdp4buvYSBjaOG6pXQgbMaw4bujbmcgeSB04bq/IHbDoCBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZywga2jDtG5nIGPDsyBxdeG7kWMgZ2lhIG7DoG8gdGh14buZYyBuaMOzbSBjaOG6pXQgbMaw4bujbmcgeSB04bq/IHRo4bqlcCDEkeG6oXQgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvLiDEkGnhu4F1IG7DoHkgZOG6q24gxJHhur9uIHThu7cgbOG7hyBraOG6oyBuxINuZyDEkeG6oXQgY2jhuqV0IGzGsOG7o25nIHPhu5FuZyBjYW8g4bufIG5ow7NtIHkgdOG6vyB0aOG6pXAgbMOgIGLhurFuZyAwLCB0cm9uZyBraGkgbmjDs20geSB04bq/IGNhbyB24bqrbiBjw7Mgc+G7kSBsxrDhu6NuZyDEkcOhbmcga+G7gyBjw6FjIHF14buRYyBnaWEgxJHhuqF0IMSRxrDhu6NjIG3hu6ljIHPhu5FuZyBjYW8uDQoNClBow6JuIHTDrWNoIGLhurFuZyB04bu3IHPhu5Egb2RkcyAoT2RkcyBSYXRpbykgY2hvIHRo4bqleSBy4bqxbmcgY8OhYyBxdeG7kWMgZ2lhIGPDsyBjaOG6pXQgbMaw4bujbmcgeSB04bq/IGNhbyBjw7Mga2jhuqMgbsSDbmcgxJHhuqF0IGNo4bqldCBsxrDhu6NuZyBz4buRbmcgY2FvIGfhuqVwIGtob+G6o25nIDQ3IGzhuqduIHNvIHbhu5tpIG5ow7NtIGPDsyBjaOG6pXQgbMaw4bujbmcgeSB04bq/IHRo4bqlcCAoT1I9NDcuMDcpLiBLaG/huqNuZyB0aW4gY+G6rXkgOTUlIGNobyBr4bq/dCBxdeG6oyBuw6B5IGRhbyDEkeG7mW5nIHThu6sgMi44NSDEkeG6v24gNzc2LjczLCBwaOG6o24gw6FuaCBz4buxIGtow6FjIGJp4buHdCByw7UgcuG7h3QgbmjGsG5nIGPFqW5nIHRo4buDIGhp4buHbiDEkeG7mSBi4bqldCDEkeG7i25oIGNhbyBkbyBjw7Mgw7QgZOG7ryBsaeG7h3UgYuG6sW5nIDAgdHJvbmcgYuG6o25nIGNow6lvLg0KDQojIyMjICoqMy4zLjQuIEJp4bq/biBRdWFsaXR5IG9mIExpZmUgdsOgIEJp4bq/biBDbGltYXRlKioNCg0KIyMjIyMgKiozLjMuNC4xLkLhuqNuZyB04bqnbiBz4buRKioNCmBgYHtyfQ0KZHQkUXVhbGl0eTwtIGZhY3RvcihkdCRRdWFsaXR5Lm9mLkxpZmUuQ2F0ZWdvcnksDQogICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiSGlnaCIsICJMb3ciKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJDaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyBjYW8iLCAiQ2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdGjhuqVwIikpDQpkdCRDbGltYXRlIDwtIGZhY3RvcihkdCRDbGltYXRlLkNhdGVnb3J5LA0KICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJIaWdoIiwgIkxvdyIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCLEkGnhu4F1IGtp4buHbiBraMOtIGjhuq11IHRodeG6rW4gbOG7o2kiLCAixJBp4buBdSBraeG7h24ga2jDrSBo4bqtdSBraOG6r2MgbmdoaeG7h3QiKSkNCiMgVOG6oW8gYuG6o25nIHThuqduIHN14bqldCBjaMOpbyANCg0KdGttdDJiNDwtIHRhYmxlKGR0JFF1YWxpdHksIGR0JENsaW1hdGUpDQoNCiMgVGjDqm0gdOG7lW5nIGjDoG5nIHbDoCB04buVbmcgY+G7mXQNCnN1bXRrbXQyYjQ8LSBhZGRtYXJnaW5zKHRrbXQyYjQpDQpzdW10a210MmI0DQpgYGANCmBgYHtyfQ0KIyBDaHV54buDbiBi4bqjbmcgdOG6p24gc3XhuqV0IHRow6BuaCBkYXRhIGZyYW1lDQpkZl9wbG90X2I0IDwtIGFzLmRhdGEuZnJhbWUodGttdDJiNCkNCmNvbG5hbWVzKGRmX3Bsb3RfYjQpIDwtIGMoIlF1YWxpdHkiLCAiQ2xpbWF0ZSIsICJDb3VudCIpDQoNCiMgVuG6vSBiaeG7g3UgxJHhu5MNCmxpYnJhcnkoZ2dwbG90MikNCmdncGxvdChkZl9wbG90X2I0LCBhZXMoeCA9IENsaW1hdGUsIHkgPSBDb3VudCwgZmlsbCA9IFF1YWxpdHkpKSArDQogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC43KSwgd2lkdGggPSAwLjYpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IENvdW50KSwNCiAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjcpLA0KICAgICAgICAgICAgdmp1c3QgPSAtMC4zLCBzaXplID0gMy41KSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIiM3NEM0NzYiLCAiIzIzOEI0NSIpKSArICAjIHhhbmggbMOhIGPDonkgY2hvIGtow60gaOG6rXUNCiAgbGFicygNCiAgICB0aXRsZSA9ICJCaeG7g3UgxJHhu5MgMy41OiBN4buRaSBsacOqbiBo4buHIGdp4buvYSBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB2w6AgxJFp4buBdSBraeG7h24ga2jDrSBo4bqtdSIsDQogICAgeCA9ICLEkGnhu4F1IGtp4buHbiBraMOtIGjhuq11IiwNCiAgICB5ID0gIlPhu5EgbMaw4bujbmcgcXXhu5FjIGdpYSIsDQogICAgZmlsbCA9ICJDaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyINCiAgKSArDQogIHRoZW1lX21pbmltYWwoKQ0KDQpgYGANCg0KKioqTmjhuq1uIHjDqXQqKioNCkThu7FhIHbDoG8gYmnhu4N1IMSR4buTIDMuNSwgdHJvbmcgc+G7kSA2OSBxdeG7kWMgZ2lhIGPDsyBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyBjYW8gxJHhu4F1IGPDsyDEkWnhu4F1IGtp4buHbiBraMOtIGjhuq11IHRodeG6rW4gbOG7o2kgKGNoaeG6v20gMTAwJSkuIE5nxrDhu6NjIGzhuqFpLCB0cm9uZyBuaMOzbSAxNjcgcXXhu5FjIGdpYSBjw7MgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdGjhuqVwLCB04bu3IGzhu4cgY8OzIMSRaeG7gXUga2nhu4duIGtow60gaOG6rXUga2jhuq9jIG5naGnhu4d0IGNhbyBoxqFuIMSRw6FuZyBr4buDICg3NyBxdeG7kWMgZ2lhLCB0xrDGoW5nIMSRxrDGoW5nIDQ2LDElKS4gS+G6v3QgcXXhuqMgbsOgeSBn4bujaSDDvSBy4bqxbmcgxJFp4buBdSBraeG7h24ga2jDrSBo4bqtdSBjw7MgdGjhu4MgbMOgIG3hu5l0IHnhur91IHThu5EgbGnDqm4gcXVhbiDEkeG6v24gbeG7qWMgxJHhu5kgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY+G7p2EgbmfGsOG7nWkgZMOibiDhu58gY8OhYyBxdeG7kWMgZ2lhLg0KDQoNCiMjIyMjICoqMy4zLjQuMi4gSGnhu4d1IHThu7cgbOG7hyoqDQoNCmBgYHtyfQ0KYWRkbWFyZ2lucyh0a210MmI0KQ0KYGBgDQoNCiQkDQpwXzEgPSBQKFx0ZXh0e1F1YWxpdHl9ID0gXHRleHR7Q2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdGjhuqVwfSBcbWlkIFx0ZXh0e0NsaW1hdGV9ID0gxJBp4buBdSBraeG7h24ga2jDrSBo4bqtdSB0aHXhuq1uIGzhu6NpKQ0KJCQNCg0KJCQNCnBfMiA9IFAoXHRleHR7UXVhbGl0eX0gPSBcdGV4dHtDaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB0aOG6pXB9IFxtaWQgXHRleHR7Q2xpbWF0ZX0gPSDEkGnhu4F1IGtp4buHbiBraMOtIGjhuq11IGto4bqvYyBuZ2hp4buHdCkNCiQkDQoNCioqR2nhuqMgdGh1eeG6v3Qga2nhu4NtIMSR4buLbmgqKg0KDQokSF8wJDogJHBfMSAtIHBfMiA9IDAkIChU4bu3IGzhu4cgcXXhu5FjIGdpYSBjw7MgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdGjhuqVwIOG7nyBuaMOzbSDEkWnhu4F1IGtp4buHbiBraMOtIGjhuq11IHRodeG6rW4gbOG7o2kgYuG6sW5nIHbhu5tpIG5ow7NtIMSRaeG7gXUga2nhu4duIGtow60gaOG6rXUga2jhuq9jIG5naGnhu4d0KQ0KDQokSF8xJDogJHBfMSAtIHBfMiA8IDAkIChU4bu3IGzhu4cgcXXhu5FjIGdpYSBjw7MgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdGjhuqVwIOG7nyBuaMOzbSDEkWnhu4F1IGtp4buHbiBraMOtIGjhuq11IHRodeG6rW4gbOG7o2kgw610IGjGoW4gbmjDs20gY2jhuqV0IMSRaeG7gXUga2nhu4duIGtow60gaOG6rXUga2jhuq9jIG5naGnhu4d0KQ0KDQoNCmBgYHtyfQ0KIyBT4buRIHF14buRYyBnaWEgY8OzIGNo4bqldCBsxrDhu6NuZyBz4buRbmcgY2FvIHRyb25nIHThu6tuZyBuaMOzbSBz4bupYyBtdWEgDQpjb3VudHNfQ2xpbWF0ZSA8LSBjKHRrbXQyYjRbIkNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHRo4bqlcCIsICLEkGnhu4F1IGtp4buHbiBraMOtIGjhuq11IHRodeG6rW4gbOG7o2kiXSwNCiAgICAgICAgICAgICAgICAgICB0a210MmI0WyJDaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB0aOG6pXAiLCAixJBp4buBdSBraeG7h24ga2jDrSBo4bqtdSBraOG6r2MgbmdoaeG7h3QiXSkNCg0KIyBU4buVbmcgc+G7kSBuZ8aw4budaSB0cm9uZyB04burbmcgc+G7qWMgbXVhDQp0b3RhbHNfQ2xpbWF0ZSA8LSBjKHN1bSh0a210MmI0WywgIsSQaeG7gXUga2nhu4duIGtow60gaOG6rXUgdGh14bqtbiBs4bujaSJdKSwNCiAgICAgICAgICAgICAgICAgICBzdW0odGttdDJiNFssICLEkGnhu4F1IGtp4buHbiBraMOtIGjhuq11IGto4bqvYyBuZ2hp4buHdCJdKSkNCg0KIyBLaeG7g20gxJHhu4tuaCB04buJIGzhu4cgbeG7mXQgcGjDrWE6IHAxIDwgcDINCnRlc3RfQ2xpbWF0ZV9sZXNzIDwtIHByb3AudGVzdChjb3VudHNfQ2xpbWF0ZSwgdG90YWxzX0NsaW1hdGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZSA9ICJsZXNzIiwgY29ycmVjdCA9IEZBTFNFKQ0KDQojIEhp4buDbiB0aOG7iyBr4bq/dCBxdeG6ow0KdGVzdF9DbGltYXRlX2xlc3MNCmBgYA0KKioqTmjhuq1uIHjDqXQqKioNCg0KS+G6v3QgcXXhuqMga2nhu4NtIMSR4buLbmggY2hvIHRo4bqleSB04bu3IGzhu4cgcXXhu5FjIGdpYSBjw7MgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgdGjhuqVwIHRyb25nIG5ow7NtIGPDsyDEkWnhu4F1IGtp4buHbiBraMOtIGjhuq11IHRodeG6rW4gbOG7o2kgbMOgIDM4LDklLCB0aOG6pXAgaMahbiDEkcOhbmcga+G7gyBzbyB24bubaSAxMDAlIOG7nyBuaMOzbSBraMOtIGjhuq11IGto4bqvYyBuZ2hp4buHdC4gVuG7m2kgcC12YWx1ZSA8IDIuMsOXMTDigbvCueKBtiB2w6Aga2hv4bqjbmcgdGluIGPhuq15IGhp4buHdSBz4buRIHThu7cgbOG7hyBu4bqxbSBob8OgbiB0b8OgbiBwaMOtYSDDom0gDQpbLTEuMDAwLCDiiJIwLjUzNV0sIHRhIGLDoWMgYuG7jyBnaeG6oyB0aHV54bq/dCAkSF8wJC4gTsOzaSBjw6FjaCBraMOhYywgxJFp4buBdSBraeG7h24ga2jDrSBo4bqtdSB0aHXhuq1uIGzhu6NpIGPDsyBsacOqbiBo4buHIGPDuW5nIGNoaeG7gXUgduG7m2kgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmc6IGtow60gaOG6rXUgY8OgbmcgdGh14bqtbiBs4bujaSB0aMOsIGto4bqjIG7Eg25nIGPDsyBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB0aOG6pXAgY8OgbmcgZ2nhuqNtLg0KDQojIyMjIyAqKjMuMy40LjMuIFJlbGF0aXZlIFJpc2sqKg0KDQpgYGB7cn0NCkNsaW1hdGUgPC0gdGFibGUoZHQkQ2xpbWF0ZSxkdCRRdWFsaXR5KQ0KYWRkbWFyZ2lucyhDbGltYXRlKQ0KYGBgDQoNCmBgYHtyfQ0KUmVsUmlzayhDbGltYXRlLCBjb25mLmxldmVsID0gLjk1KQ0KYGBgDQoNCioqKk5o4bqtbiB4w6l0KioqDQoNClRyb25nIG3huqt1IG5naGnDqm4gY+G7qXUsIGtow7RuZyBjw7MgcXXhu5FjIGdpYSBuw6BvIHRodeG7mWMgbmjDs20gY8OzIMSRaeG7gXUga2nhu4duIGtow60gaOG6rXUga2jhuq9jIG5naGnhu4d0IMSR4bqhdCDEkcaw4bujYyBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyBjYW8uIEvhur90IHF14bqjIG7DoHkgZOG6q24gxJHhur9uIHThu7cgc+G7kSBy4bunaSBybyAoUlIpIGLhurFuZyB2w7QgY8O5bmcsIHBo4bqjbiDDoW5oIG3hu5FpIGxpw6puIGjhu4cgY+G7sWMga+G7syBt4bqhbmggZ2nhu69hIMSRaeG7gXUga2nhu4duIGtow60gaOG6rXUgdsOgIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nLg0KDQpN4bq3YyBkw7kgxrDhu5tjIGzGsOG7o25nIFJSIGzDoCB2w7QgY8O5bmcgZG8gbeG7mXQgw7QgYuG6sW5nIDAgdHJvbmcgYuG6o25nIHThuqduIHN14bqldCwgxJHhu5kgdGluIGPhuq15IDk1JSB24bubaSBraG/huqNuZyB04burIDIwLjE1IMSR4bq/biDiiJ4gY2hvIHRo4bqleSBy4bqxbmcgbmdheSBj4bqjIHRyb25nIHRyxrDhu51uZyBo4bujcCBiaSBxdWFuIG5o4bqldCwgcXXhu5FjIGdpYSBjw7MgxJFp4buBdSBraeG7h24ga2jDrSBo4bqtdSB0aHXhuq1uIGzhu6NpIHbhuqtuIGPDsyBuZ3V5IGPGoSDEkeG6oXQgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvIGfhuqVwIMOtdCBuaOG6pXQgMjAgbOG6p24gc28gduG7m2kgbmjDs20ga2jDrSBo4bqtdSBraOG6r2MgbmdoaeG7h3QuIMSQw6J5IGzDoCBr4bq/dCBxdeG6oyBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIGNhbywgY+G7p25nIGPhu5EgZ2nhuqMgdGh1eeG6v3QgcuG6sW5nIMSRaeG7gXUga2nhu4duIGtow60gaOG6rXUgbMOgIG3hu5l0IHnhur91IHThu5Eg4bqjbmggaMaw4bufbmcgxJHhur9uIGNo4bqldCBsxrDhu6NuZyBz4buRbmcuDQoNCg0KIyMjIyMgKiozLjMuNC40LiBPZGRzIHJhdGlvKioNCg0KYGBge3J9DQphZGRtYXJnaW5zKENsaW1hdGUpDQpgYGANCmBgYHtyfQ0KT2Rkc1JhdGlvKENsaW1hdGUsIGNvbmYubGV2ZWwgPSAuOTUpDQpgYGANCioqKk5o4bqtbiB4w6l0KioqDQoNClBow6JuIHTDrWNoIGLhuqNuZyBwaMOibiBwaOG7kWkgZ2nhu69hIMSRaeG7gXUga2nhu4duIGtow60gaOG6rXUgdsOgIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNobyB0aOG6pXkga2jDtG5nIGPDsyBxdeG7kWMgZ2lhIG7DoG8gY8OzIMSRaeG7gXUga2nhu4duIGtow60gaOG6rXUga2jhuq9jIG5naGnhu4d0IMSR4bqhdCBjaOG6pXQgbMaw4bujbmcgc+G7kW5nIGNhby4gVHJvbmcga2hpIMSRw7MsIHThuqV0IGPhuqMgY8OhYyBxdeG7kWMgZ2lhIGPDsyBjaOG6pXQgbMaw4bujbmcgc+G7kW5nIGNhbyDEkeG7gXUgdGh14buZYyBuaMOzbSBjw7MgxJFp4buBdSBraeG7h24ga2jDrSBo4bqtdSB0aHXhuq1uIGzhu6NpLiDEkGnhu4F1IG7DoHkgZOG6q24gxJHhur9uIHThu7cgc+G7kSBvZGRzIChPZGRzIFJhdGlvKSBj4buxYyBr4buzIGzhu5tuLCBsw6puIHThu5tpIDM4NS43NiwgduG7m2kga2hv4bqjbmcgdGluIGPhuq15IDk1JSB04burIDIzLjM5IMSR4bq/biA2MzYxLjQ2Lg0KDQpL4bq/dCBxdeG6oyBuw6B5IG5n4bulIMO9IHLhurFuZyBjw6FjIHF14buRYyBnaWEgY8OzIMSRaeG7gXUga2nhu4duIGtow60gaOG6rXUgdGh14bqtbiBs4bujaSBjw7Mga2jhuqMgbsSDbmcgxJHhuqF0IGNo4bqldCBsxrDhu6NuZyBz4buRbmcgY2FvIGNhbyBoxqFuIGtob+G6o25nIDM4NiBs4bqnbiBzbyB24bubaSBuaMOzbSBjw7Mga2jDrSBo4bqtdSBraOG6r2MgbmdoaeG7h3QuIFR1eSBuaGnDqm4sIGRvIHThu5NuIHThuqFpIMO0IGThu68gbGnhu4d1IGLhurFuZyAwIHRoxrDhu51uZyBk4bqrbiDEkeG6v24gxrDhu5tjIGzGsOG7o25nIGtow7RuZyDhu5VuIMSR4buLbmgsIGtoaeG6v24ga2hv4bqjbmcgdGluIGPhuq15IHRy4bufIG7Dqm4gcuG7mW5nIHbDoCDEkeG7mSBjaMOtbmggeMOhYyBi4buLIOG6o25oIGjGsOG7n25nLg0KDQpEbyDEkcOzLCBt4bq3YyBkw7kga+G6v3QgcXXhuqMgbsOgeSBj4bunbmcgY+G7kSBnaeG6oyB0aHV54bq/dCBy4bqxbmcga2jDrSBo4bqtdSBsw6AgeeG6v3UgdOG7kSDhuqNuaCBoxrDhu59uZyBs4bubbiDEkeG6v24gY2jhuqV0IGzGsOG7o25nIHPhu5FuZywgdGEgY+G6p24ga+G6v3QgaOG7o3AgduG7m2kgY8OhYyBwaMawxqFuZyBwaMOhcCB0aOG7kW5nIGvDqiBi4buVIHN1bmcgKG5oxrAgcGjDom4gdMOtY2ggdOG7iSBs4buHIGhv4bq3YyBSUikgxJHhu4Mga2jhurNuZyDEkeG7i25oIGNo4bqvYyBjaOG6r24gaMahbiBt4buRaSBsacOqbiBo4buHIG7DoHkuDQoNCg0KIyMjICoqMy40LiBNw7QgaMOsbmggTG9naXQqKg0KDQokSF8wJDogQmnhur9uIGtow7RuZyBjw7Mg4bqjbmggaMaw4bufbmcgxJHhur9uIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGPhu6dhIGPDoWMgcXXhu5FjIGdpYQ0KDQokSF8xJDogQmnhur9uIGPDsyDhuqNuaCBoxrDhu59uZyDEkeG6v24gY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY+G7p2EgY8OhYyBxdeG7kWMgZ2lhDQoNClRyb25nIHF1w6EgdHLDrG5oIGtp4buDbSB0cmEgbcO0IGjDrG5oIGjhu5NpIHF1eSBuaOG7iyBwaMOibiB24bubaSBiaeG6v24gSGVhbHRoQ2FyZSB2w6AgQ2hpbWF0ZSwgbmjhuq1uIHRo4bqleSBk4buvIGxp4buHdSB4deG6pXQgaGnhu4duIGhp4buHbiB0xrDhu6NuZyBwaMOibiB0w6FjaCBob8OgbiBo4bqjbyAocGVyZmVjdCBzZXBhcmF0aW9uKSwgZOG6q24gxJHhur9uIGjhu4cgc+G7kSDGsOG7m2MgbMaw4bujbmcga2jDtG5nIOG7lW4gxJHhu4tuaCwgc2FpIHPhu5EgY2h14bqpbiBy4bqldCBs4bubbiB2w6AgZ2nDoSB0cuG7iyBwIGtow7RuZyBjw7Mgw70gbmdoxKlhLiBEbyDEkcOzLCBiaeG6v24gSGVhbHRoQ2FyZSB2w6AgYmnhur9uIENsaW1hdGUga2jDtG5nIMSRxrDhu6NjIMSRxrBhIHbDoG8gcGjDom4gdMOtY2ggaOG7k2kgcXV5IMSR4buDIMSR4bqjbSBi4bqjbyDEkeG7mSB0aW4gY+G6rXkgY+G7p2EgbcO0IGjDrG5oLg0KDQojIyMjICoqMy40LjEgQmnhur9uIFB1cmNoYXNpbmcqKg0KDQpgYGB7cn0NCmR0JGhxUXVhbGl0eSA8LSBpZmVsc2UoZHQkUXVhbGl0eSA9PSAiQ2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvIiwgMSwgMCkNCg0KIyBNw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2lzdGljIHbhu5tpIGJp4bq/biBQdXJjaGFzaW5nUG93ZXINCnJlZ2xvZ2l0UHVyY2hhc2luZyA8LSBnbG0oaHFRdWFsaXR5IH4gUHVyY2hhc2luZ1Bvd2VyLCBkYXRhID0gZHQsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAnbG9naXQnKSkNCnN1bW1hcnkocmVnbG9naXRQdXJjaGFzaW5nKQ0KYGBgDQoNCkjDoG0gaOG7k2kgcXV5IGxvZ2lzdGljIMSRxrDhu6NjIMaw4bubYyBsxrDhu6NuZyBuaMawIHNhdToNCg0KJCQNClxsb2dcbGVmdChcZnJhY3tcaGF0e1xwaX19ezEgLSBcaGF0e1xwaX19XHJpZ2h0KSA9IDAuNTgzOSAtIDIuNjc4MCBcY2RvdCBcdGV4dHtQdXJjaGFzaW5nUG93ZXJ9X3tcdGV4dHt0aOG6pXB9fQ0KJCQNCg0KYGBge3J9DQpjb25maW50KHJlZ2xvZ2l0UHVyY2hhc2luZykNCmBgYA0KDQoqKipOaOG6rW4geMOpdCoqKg0KDQpL4bq/dCBxdeG6oyBtw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2lzdGljIHbhu5tpIGJp4bq/biBQdXJjaGFzaW5nUG93ZXIgKFPhu6ljIG11YSB0aOG7sWMgdOG6vykgY2hvIHRo4bqleSBy4bqxbmcgeeG6v3UgdOG7kSBuw6B5IGPDsyDhuqNuaCBoxrDhu59uZyB0acOqdSBj4buxYyB2w6AgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiBt4bqhbmggxJHhur9uIHjDoWMgc3XhuqV0IMSR4bqhdCBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyBjYW8uIEPhu6UgdGjhu4MsIHNvIHbhu5tpIG5ow7NtIGPDsyBz4bupYyBtdWEgdGjhu7FjIHThur8gY2FvLCBuaMOzbSBxdeG7kWMgZ2lhIGPDsyBz4bupYyBtdWEgdGjhuqVwIGPDsyBo4buHIHPhu5EgaOG7k2kgcXV5IGzDoA0K4oiSMi42NzggKHAgPCAwLjAwMSksIHTGsMahbmcg4bupbmcgduG7m2kgT2RkcyBSYXRpbyBraG/huqNuZyAwLjA2OS4gxJBp4buBdSBuw6B5IGPDsyBuZ2jEqWEgbMOgIGPDoWMgcXXhu5FjIGdpYSBjw7Mgc+G7qWMgbXVhIHRo4bqlcCBjaOG7iSBjw7Mga2hv4bqjbmcgNi45JSBraOG6oyBuxINuZyDEkeG6oXQgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvIHNvIHbhu5tpIG5ow7NtIGPDsyBz4bupYyBtdWEgY2FvLCBu4bq/dSBjw6FjIHnhur91IHThu5Ega2jDoWMgZ2nhu68gbmd1ecOqbi4gxJDhu5kgdGluIGPhuq15IDk1JSBjaG8gaOG7hyBz4buRIG7hurFtIHRyb25nIGtob+G6o25nIHThu6sg4oiSMy4zOCDEkeG6v24g4oiSMi4wMiwga2jhurNuZyDEkeG7i25oIHTDoWMgxJHhu5luZyDDom0gY+G7p2EgbeG7kWkgcXVhbiBo4buHIG7DoHkuIFThu5VuZyB0aOG7gywgbcO0IGjDrG5oIGPDsyBt4bupYyDEkeG7mSBwaMO5IGjhu6NwIHThu5F0IChBSUMgPSAyMTYuODgpLCBjaG8gdGjhuqV5IHPhu6ljIG11YSBsw6AgbeG7mXQgeeG6v3UgdOG7kSBk4buxIGLDoW8gxJHDoW5nIHRpbiBj4bqteSBjaG8gY2jhuqV0IGzGsOG7o25nIHPhu5FuZy4NCg0KDQojIyMjICoqMy40LjIuIEJp4bq/biBTYWZldHkqKg0KYGBge3J9DQojIE3DtCBow6xuaCBo4buTaSBxdXkgbG9naXN0aWMgduG7m2kgYmnhur9uIFNhZmV0eQ0KcmVnbG9naXRTYWZldHkgPC0gZ2xtKGhxUXVhbGl0eSB+IFNhZmV0eSwgZGF0YSA9IGR0LCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gJ2xvZ2l0JykpDQpzdW1tYXJ5KHJlZ2xvZ2l0U2FmZXR5KQ0KYGBgDQoNCmBgYHtyfQ0KY29uZmludChyZWdsb2dpdFNhZmV0eSkNCmBgYA0KJCQNClxsb2dcbGVmdChcZnJhY3tccGl9ezEgLSBccGl9XHJpZ2h0KSA9IC0wLjU5MTEgLSAyLjU0NDQgXGNkb3QgXHRleHR7U2FmZXR5fV97XHRleHR7dGjhuqVwfX0NCiQkDQoNCg0KKioqTmjhuq1uIHjDqXQqKioNCg0KTcO0IGjDrG5oIGjhu5NpIHF1eSBsb2dpc3RpYyBraeG7g20gxJHhu4tuaCBt4buRaSBsacOqbiBo4buHIGdp4buvYSBt4bupYyDEkeG7mSBhbiB0b8OgbiAoU2FmZXR5KSB2w6AgeMOhYyBzdeG6pXQgxJHhuqF0IGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhbyBjaG8gdGjhuqV5IHLhurFuZywgc28gduG7m2kgbmjDs20gY8OzIG3hu6ljIMSR4buZIGFuIHRvw6BuIGNhbywgY8OhYyBxdeG7kWMgZ2lhIGPDsyBt4bupYyDEkeG7mSBhbiB0b8OgbiB0aOG6pXAgY8OzIGjhu4cgc+G7kSBo4buTaSBxdXkgbMOgIOKIkjIuNTQ0NCAocCA8IDAuMDAxKSB0xrDGoW5nIMSRxrDGoW5nIHbhu5tpIE9kZHMgUmF0aW8gbMOgIDAuMDc4LCBjaG8gdGjhuqV5IHTDoWMgxJHhu5luZyDDom0gcsO1IHLhu4d0IHbDoCBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqLiDEkOG7mSB0aW4gY+G6rXkgOTUlIGNobyBo4buHIHPhu5EgbsOgeSBu4bqxbSB0cm9uZyBraG/huqNuZyBb4oiSNC4zNzYs4oiSMS4zMjhdLCDEkWnhu4F1IG7DoHkgY8OzIHRo4buDIGRp4buFbiBnaeG6o2kgcuG6sW5nLCB0cm9uZyDEkWnhu4F1IGtp4buHbiBnaeG7ryBuZ3V5w6puIGPDoWMgeeG6v3UgdOG7kSBraMOhYywgbeG7qWMgxJHhu5kgYW4gdG/DoG4gdGjhuqVwIGzDoG0gZ2nhuqNtIMSRw6FuZyBr4buDIHjDoWMgc3XhuqV0IG3hu5l0IHF14buRYyBnaWEgxJHhuqF0IGNo4bqldCBsxrDhu6NuZyBz4buRbmcgY2FvLCBjaG8gdGjhuqV5IGFuIHRvw6BuIHjDoyBo4buZaSBsw6AgbeG7mXQgeeG6v3UgdOG7kSDhuqNuaCBoxrDhu59uZyBt4bqhbmggxJHhur9uIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nLg0KDQoNCiMjIyAqKjMuNS4gTcO0IGjDrG5oIFByb2JpdCoqDQoNCiMjIyMgKiozLjUuMS4gQmnhur9uIFB1cmNoYXNpbmcqKg0KDQpgYGB7cn0NCiMgTcO0IGjDrG5oIFByb2JpdCB24bubaSBiaeG6v24gUHVyY2hhc2luZw0KcHJvYml0UHVyY2hhc2luZyA8LSBnbG0oaHFRdWFsaXR5IH4gUHVyY2hhc2luZ1Bvd2VyLCBkYXRhID0gZHQsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAicHJvYml0IikpDQpzdW1tYXJ5KHByb2JpdFB1cmNoYXNpbmcpDQpgYGANCg0KJCQNClxQaGleey0xfShccGkpID0gMC4zNjM3IC0gMS41OTIwIFxjZG90IFx0ZXh0e1B1cmNoYXNpbmdQb3dlcn1fe1x0ZXh0eyB0aOG6pXB9fQ0KJCQNCg0KYGBge3J9DQpjb25maW50KHByb2JpdFB1cmNoYXNpbmcpDQpgYGANCg0KKioqTmjhuq1uIHjDqXQqKioNCg0KS+G6v3QgcXXhuqMgbcO0IGjDrG5oIGNobyB0aOG6pXksIHZp4buHYyBt4buZdCBxdeG7kWMgZ2lhIGPDsyBz4bupYyBtdWEgdGjhu7FjIHThur8gdGjhuqVwIGzDoG0gZ2nhuqNtIMSRw6FuZyBr4buDIHjDoWMgc3XhuqV0IGPDsyBjaOG6pXQgbMaw4bujbmcgc+G7kW5nIGNhby4gSOG7hyBz4buRIMOibSByw7UgcuG7h3QgdsOgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogY2FvIChwX3ZhbHVlIDwgMC4wMDUpLiBLaG/huqNuZyB0aW4gY+G6rXkgWy0xLjk4OyAtMS4yMV0gY2hvIGvhur90IGx14bqtbiBy4bqxbmcgeeG6v3UgdOG7kSBz4bupYyBtdWEgdGjhu7FjIHThur8gdGjhuqVwIGzDoCBt4buZdCB54bq/dSB04buRIHRpw6p1IGPhu7FjIHF1YW4gdHLhu41uZyDhuqNuaCBoxrDhu59uZyDEkeG6v24gY2jhuqV0IGzGsOG7o25nIHPhu5FuZy4NCg0KIyMjIyAqKjMuNS4yLkJp4bq/biBTYWZldHkqKg0KDQpgYGB7cn0NCiMgTcO0IGjDrG5oIHjDoWMgc3XhuqV0IHR1eeG6v24gdMOtbmggduG7m2kgYmnhur9uIFNhZmV0eQ0KcHJvYml0U2FmZXR5IDwtIGdsbShocVF1YWxpdHkgfiBTYWZldHksIGRhdGEgPSBkdCwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJwcm9iaXQiKSkNCnN1bW1hcnkocHJvYml0U2FmZXR5KQ0KYGBgDQoNCiQkDQpcUGhpXnstMX0oXHBpKSA9IC0wLjM2ODEgLSAxLjM2MzUgXGNkb3QgXHRleHR7U2FmZXR5fV97XHRleHR7VGjhuqVwfX0NCiQkDQoNCg0KYGBge3J9DQpjb25maW50KHByb2JpdFNhZmV0eSkNCmBgYA0KDQpNw7QgaMOsbmggUHJvYml0IHbhu5tpIGJp4bq/biBTYWZldHkgY2hvIHRo4bqleSBo4buHIHPhu5EgY+G7p2EgYmnhur9uIOKAnE3hu6ljIMSR4buZIGFuIHRvw6BuIHRo4bqlcOKAnSBsw6Ag4oiSMS4zNjM1LCB24bubaSDEkeG7mSB0aW4gY+G6rXkgOTUlIGzDoCBb4oiSMi4xMTviiJIwLjc2XSB2w6AgZ2nDoSB0cuG7iyBwX3ZhbHVlIChwIDwgMC4wNSksIGNobyB0aOG6pXkgbeG7kWkgbGnDqm4gaOG7hyBuw6B5IGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogY2FvLiBOaMawIHbhuq15LCBraGkgbeG7mXQgcXXhu5FjIGdpYSBjw7MgbeG7qWMgxJHhu5kgYW4gdG/DoG4gdGjhuqVwLCB4w6FjIHN14bqldCDEkeG6oXQgY2jhuqV0IGzGsOG7o25nIHPhu5FuZyBjYW8gc+G6vSBnaeG6o20gxJHDoW5nIGvhu4Mgc28gduG7m2kgcXXhu5FjIGdpYSBjw7MgbeG7qWMgxJHhu5kgYW4gdG/DoG4gY2FvIChnaeG7ryBjw6FjIHnhur91IHThu5Ega2jDoWMga2jDtG5nIMSR4buVaSkuIEvhur90IHF14bqjIG7DoHkgcGjDuSBo4bujcCB24bubaSBnaeG6oyB0aHV54bq/dCBy4bqxbmcgbcO0aSB0csaw4budbmcgc+G7kW5nIGFuIHRvw6BuIGzDoCB54bq/dSB04buRIHRoaeG6v3QgeeG6v3UgZ8OzcCBwaOG6p24gbsOibmcgY2FvIGNo4bqldCBsxrDhu6NuZyBz4buRbmcuDQoNCiMjIyAqKjMuNi4gTcO0IGjDrG5oIGjhu5NpIENsb2dsb2cqKg0KDQojIyMjICoqMy42LjEuIEJp4bq/biBQdXJjaGFzaW5nKioNCg0KYGBge3J9DQojIE3DtCBow6xuaCBDbG9nbG9nIHbhu5tpIGJp4bq/biBQdXJjaGFzaW5nDQpjbG9nbG9nX1B1cmNoYXNpbmcgPC0gZ2xtKGhxUXVhbGl0eSB+IFB1cmNoYXNpbmdQb3dlciwgZGF0YSA9IGR0LCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImNsb2dsb2ciKSkNCnN1bW1hcnkoY2xvZ2xvZ19QdXJjaGFzaW5nKQ0KYGBgDQogDQokJA0KXGxvZygtXGxvZygxIC0gXHBpKSkgPSAwLjAyNjggLSAyLjE3OTUgXGNkb3QgXHRleHR7UHVyY2hhc2luZ1Bvd2VyfV97XHRleHR7VGjhuqVwfX0NCiQkDQoNCioqKk5o4bqtbiB4w6l0KioqDQoNClRyb25nIG3DtCBow6xuaCBo4buTaSBxdXkgQ2xvZ2xvZyB24bubaSBiaeG6v24gU+G7qWMgbXVhIHRo4buxYyB04bq/IChQdXJjaGFzaW5nUG93ZXIpLCBo4buHIHPhu5EgxrDhu5tjIGzGsOG7o25nIGNobyBuaMOzbSAiU+G7qWMgbXVhIHRo4buxYyB04bq/IHRo4bqlcCIgbMOgIOKIkjIuMTc5NSB24bubaSBnacOhIHRy4buLIHBfdmFsdWU8MC4wNSwgY2hvIHRo4bqleSBiaeG6v24gbsOgeSBjw7Mg4bqjbmggaMaw4bufbmcgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiDEkeG6v24geMOhYyBzdeG6pXQgxJHDoW5oIGdpw6EgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvLiBI4buHIHPhu5Egw6JtIGNobyB0aOG6pXkgcuG6sW5nIGPDoWMgcXXhu5FjIGdpYSBjw7Mgc+G7qWMgbXVhIHRo4buxYyB04bq/IHRo4bqlcCBjw7MgeMOhYyBzdeG6pXQgxJHhuqF0IGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhbyB0aOG6pXAgaMahbiBzbyB24bubaSBuaMOzbSBjw7Mgc+G7qWMgbXVhIHRo4buxYyB04bq/IGNhby4gDQoNCiMjIyMgKiozLjYuMi4gQmnhur9uIFNhZmV0eSoqDQoNCmBgYHtyfQ0KIyBNw7QgaMOsbmggQ2xvZ2xvZyB24bubaSBiaeG6v24gYmV2ZXJhZ2VfY29mZmVlDQpjbG9nbG9nX1NhZmV0eSA8LSBnbG0oaHFRdWFsaXR5IH4gU2FmZXR5LCBkYXRhID0gZHQsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAiY2xvZ2xvZyIpKQ0Kc3VtbWFyeShjbG9nbG9nX1NhZmV0eSkNCmBgYA0KDQokJA0KXGxvZygtXGxvZygxIC0gXHBpKSkgPSAtMC44MTk1IC0gMi4zMzczIFxjZG90IFx0ZXh0e1NhZmV0eX1fe1x0ZXh0e1Ro4bqlcH19DQokJA0KDQoqKipOaOG6rW4geMOpdCoqKg0KDQpUcm9uZyBtw7QgaMOsbmggaOG7k2kgcXV5IENsb2dsb2cgduG7m2kgYmnhur9uIG3hu6ljIMSR4buZIGFuIHRvw6BuIChTYWZldHkpLCBo4buHIHPhu5EgxrDhu5tjIGzGsOG7o25nIGNobyBuaMOzbSAiTeG7qWMgxJHhu5kgYW4gdG/DoG4gdGjhuqVwIiBsw6Ag4oiSMi4zMzczIHbhu5tpIGdpw6EgdHLhu4sgcF92YWx1ZSA9IDAuMDAxMTMgPCAwLjA1LCBjaG8gdGjhuqV5IOG6o25oIGjGsOG7n25nIG7DoHkgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiDhu58gbeG7qWMgNSUuIEThuqV1IMOibSBj4bunYSBo4buHIHPhu5EgY2jhu4kgcmEgcuG6sW5nIGPDoWMgcXXhu5FjIGdpYSBjw7MgbeG7qWMgxJHhu5kgYW4gdG/DoG4gdGjhuqVwIGPDsyB4w6FjIHN14bqldCDEkeG6oXQgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvIHRo4bqlcCBoxqFuIHNvIHbhu5tpIG5ow7NtIGPDsyBt4bupYyDEkeG7mSBhbiB0b8OgbiBjYW8uIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IHnhur91IHThu5EgYW4gdG/DoG4gY8OzIHZhaSB0csOyIHF1YW4gdHLhu41uZyB0cm9uZyB2aeG7h2MgxJHDoW5oIGdpw6EgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcuDQoNCg0KDQojIyMgKiozLjcuIE3DtCBow6xuaCBo4buTaSBxdXkgYuG7mWkqKg0KDQojIyMjICoqMy43LjEuIE3DtCBow6xuaCBMb2dpdCoqDQoNCmBgYHtyfQ0KbWhocV9sb2dpdCA8LSBnbG0oaHFRdWFsaXR5IH4gUHVyY2hhc2luZ1Bvd2VyICsgU2FmZXR5LCBkYXRhID0gZHQsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAibG9naXQiKSkNCnN1bW1hcnkobWhocV9sb2dpdCkNCmBgYA0KKipQaMawxqFuZyB0csOsbmggaOG7k2kgcXV5IGxvZ2l0IGPDsyBk4bqhbmc6KioNCg0KJCQNClxsb2dcbGVmdChcZnJhY3tccGl9ezEgLSBccGl9XHJpZ2h0KSA9IDAuNzc3NiAtIDIuNTY4NiBcY2RvdCBcdGV4dHtQdXJjaGFzaW5nUG93ZXJ9X3tcdGV4dHtUaOG6pXB9fSAtIDIuMjU4MiBcY2RvdCBcdGV4dHtTYWZldHl9X3tcdGV4dHtUaOG6pXB9fQ0KJCQNCg0KDQoqKipOaOG6rW4geMOpdCoqKg0KDQpNw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2lzdGljIGLhu5lpIMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIMSRw6FuaCBnacOhIHTDoWMgxJHhu5luZyDEkeG7k25nIHRo4budaSBj4bunYSBz4bupYyBtdWEgdGjhu7FjIHThur8gdsOgIG3hu6ljIMSR4buZIGFuIHRvw6BuIMSR4bq/biB4w6FjIHN14bqldCBz4bqjbiBwaOG6qW0gxJHhuqF0IGNo4bqldCBsxrDhu6NuZyBjYW8uIEvhur90IHF14bqjIGNobyB0aOG6pXkgY+G6oyBoYWkgYmnhur9uIMSR4buZYyBs4bqtcCDEkeG7gXUgY8OzIOG6o25oIGjGsOG7n25nIHRpw6p1IGPhu7FjIHbDoCBjw7Mgw70gbmdoxKlhIHRo4buRbmcga8OqIMSR4bq/biBjaOG6pXQgbMaw4bujbmcgc+G6o24gcGjhuqltLiBD4bulIHRo4buDLCBraGkgc+G7qWMgbXVhIHRo4buxYyB04bq/IHRo4bqlcCwgb2RkcyDEkeG7gyBxdeG7kWMgZ2lhIMSR4bqhdCBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyBjYW8gY2jhu4kgYuG6sW5nIDcuNjglIHNvIHbhu5tpIHPhu6ljIG11YSB0aOG7sWMgdOG6vyBjYW8gKHAgPCAwLjAwMSksIHbDoCBraGkgbeG7qWMgxJHhu5kgYW4gdG/DoG4gdGjhuqVwLCBvZGRzIMSR4buDIHF14buRYyBnaWEgxJHhuqF0IGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhbyBjaOG7iSBi4bqxbmcgMTAuNDclIHNvIHbhu5tpIG3hu6ljIGFuIHRvw6BuIGNhbyAocCA9IDAuMDAzNzMpLg0KDQojIyMjICoqMy43LjIuIE3DtCBow6xuaCBQcm9iaXQqKg0KDQpgYGB7cn0NCm1oaHFfcHJvYml0IDwtIGdsbShocVF1YWxpdHkgfiBQdXJjaGFzaW5nUG93ZXIgKyBTYWZldHksIGRhdGEgPSBkdCwgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJwcm9iaXQiKSkNCnN1bW1hcnkobWhocV9wcm9iaXQpDQpgYGANCioqUGjGsMahbmcgdHLDrG5oIGjhu5NpIHF1eSBsb2dpdCBjw7MgZOG6oW5nOioqDQoNCiQkDQpcUGhpXnstMX0oXHBpKSA9IDAuNDY2MSAtIDEuNTE5OCBcY2RvdCBcdGV4dHtQdXJjaGFzaW5nUG93ZXJ9X3tcdGV4dHtUaOG6pXB9fSAtIDEuMTY0NSBcY2RvdCBcdGV4dHtTYWZldHl9X3tcdGV4dHtUaOG6pXB9fQ0KJCQNCg0KKioqTmjhuq1uIHjDqXQqKioNCg0KTcO0IGjDrG5oIGjhu5NpIHF1eSBwcm9iaXQgxJHGsOG7o2MgxJFp4buBdSBjaOG7iW5oIGNo4buJIGPDsm4gbOG6oWkgaGFpIGJp4bq/biDEkeG7mWMgbOG6rXAgbMOgICJT4bupYyBtdWEgdGjhu7FjIHThur8iIHbDoCAiTeG7qWMgxJHhu5kgYW4gdG/DoG4iIGNobyB0aOG6pXkgY+G6oyBoYWkgxJHhu4F1IGPDsyDhuqNuaCBoxrDhu59uZyB0acOqdSBj4buxYyB2w6AgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiByw7UgcsOgbmcgxJHhur9uIHjDoWMgc3XhuqV0IG5nxrDhu51pIGTDom4gY8OzIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIGNhby4gxJBp4buBdSBuw6B5IHBow7kgaOG7o3AgduG7m2kgbMO9IHRodXnhur90IHbDoCB0aOG7sWMgdGnhu4VuOiBraGkgbmfGsOG7nWkgZMOibiBjw7Mgc+G7qWMgbXVhIHRo4bqlcCBob+G6t2Mgc+G7kW5nIHRyb25nIG3DtGkgdHLGsOG7nW5nIHRoaeG6v3UgYW4gdG/DoG4sIGto4bqjIG7Eg25nIMSR4bqhdCDEkcaw4bujYyBjaOG6pXQgbMaw4bujbmcgc+G7kW5nIGNhbyBz4bq9IGdp4bqjbSDEkcOhbmcga+G7gy4gVmnhu4djIGxv4bqhaSBi4buPIGPDoWMgYmnhur9uIGtow7RuZyBjw7Mgw70gbmdoxKlhIG5oxrAgIkNo4bqldCBsxrDhu6NuZyB5IHThur8iIHbDoCAiS2jDrSBo4bqtdSIgxJHDoyBnacO6cCBj4bqjaSB0aGnhu4duIMSRw6FuZyBr4buDIMSR4buZIHBow7kgaOG7o3AgY+G7p2EgbcO0IGjDrG5oIHbDoCB0csOhbmggaGnhu4duIHTGsOG7o25nIHBow6JuIHTDoWNoIGhvw6BuIGjhuqNvLg0KDQpLaGkgbeG7mXQgcXXhu5FjIGdpYSB0aHXhu5ljIG5ow7NtIGPDsyBz4bupYyBtdWEgdGjhu7FjIHThur8gdGjhuqVwLCB4w6FjIHN14bqldCDEkeG6oXQgY2jhuqV0IGzGsOG7o25nIHPhu5FuZyBjYW8gc+G6vSBnaeG6o20gMS41MTk4IMSRxqFuIHbhu4sgc28gduG7m2kgbmjDs20gY8OzIHPhu6ljIG11YSBjYW8uIE7hur91IGdp4buvIGPDoWMgeeG6v3UgdOG7kSBraMOhYyBraMO0bmcgxJHhu5VpLCB4w6FjIHN14bqldCDEkeG6oXQgY2jhuqV0IGzGsOG7o25nIHPhu5FuZyBjYW8gY+G7p2EgcXXhu5FjIGdpYSBuw6B5IGdp4bqjbSB04burIGtob+G6o25nIDY3LjklIChraGkgc+G7qWMgbXVhIGNhbykgeHXhu5FuZyBjw7JuIDE0LjclIChraGkgc+G7qWMgbXVhIHRo4bqlcCkuIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IHPhu6ljIG11YSBsw6AgeeG6v3UgdOG7kSBjw7MgdMOhYyDEkeG7mW5nIHLhuqV0IG3huqFuaCDEkeG6v24gY2jhuqV0IGzGsOG7o25nIHPhu5FuZy4NCg0KS2hpIG3hu5l0IHF14buRYyBnaWEgbuG6sW0gdHJvbmcgbmjDs20gY8OzIG3hu6ljIMSR4buZIGFuIHRvw6BuIHRo4bqlcCwgeMOhYyBzdeG6pXQgcXXhu5FjIGdpYSDEkeG6oXQgY2jhuqUgbMaw4bujbmcgc+G7kW5nIGNhbyB0aOG6pXAgaMahbiAxLjE2NDUgxJHGoW4gduG7iyBzbyB24bubaSBuaMOzbSBhbiB0b8OgbiBjYW8uIFRyb25nIMSRaeG7gXUga2nhu4duIGPDoWMgeeG6v3UgdOG7kSBraMOhYyBraMO0bmcgxJHhu5VpLCB4w6FjIHN14bqldCDEkeG6oXQgY2jhuqV0IGzGsOG7o25nIHPhu5FuZyBjYW8gZ2nhuqNtIHThu6sga2hv4bqjbmcgNjcuOSUgKGtoaSBhbiB0b8OgbiBjYW8pIHh14buRbmcgY8OybiAyNC4zJSAoa2hpIGFuIHRvw6BuIHRo4bqlcCkuIMSQaeG7gXUgbsOgeSBuaOG6pW4gbeG6oW5oIHZhaSB0csOyIHRoaeG6v3QgeeG6v3UgY+G7p2EgbcO0aSB0csaw4budbmcgc+G7kW5nIGFuIHRvw6BuIMSR4buRaSB24bubaSBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZy4NCg0KIyMjIyAqKjMuNy4zLiBNw7QgaMOsbmggQ2xvZ2xvZyoqDQpgYGB7cn0NCm1oaHFfY2xvZ2xvZyA8LSBnbG0oaHFRdWFsaXR5IH4gUHVyY2hhc2luZ1Bvd2VyICsgU2FmZXR5LCBkYXRhID0gZHQsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAiY2xvZ2xvZyIpKQ0Kc3VtbWFyeShtaGhxX2Nsb2dsb2cpDQpgYGANCioqSMOgbSBo4buTaSBxdXkgQ2xvZ2xvZyBj4bunYSBtw7QgaMOsbmggbsOgeSDEkcaw4bujYyBiaeG7g3UgZGnhu4VuIG5oxrAgc2F1OioqDQoNCiQkDQpcbG9nKC1cbG9nKDEgLSBccGkpKSA9IDAuMTUzNSAtIDIuMDM2MSBcY2RvdCBcdGV4dHtQdXJjaGFzaW5nUG93ZXJ9X3tcdGV4dHtUaOG6pXB9fSAtIDEuOTI2MSBcY2RvdCBcdGV4dHtTYWZldHl9X3tcdGV4dHtUaOG6pXB9fQ0KJCQNCg0KKioqTmjhuq1uIHjDqXQqKioNCg0KS+G6v3QgcXXhuqMgdOG7qyBtw7QgaMOsbmggaOG7k2kgcXV5IENsb2dsb2cgduG7m2kgaGFpIGJp4bq/biDEkeG7mWMgbOG6rXAgbMOgIFB1cmNoYXNpbmdQb3dlciB2w6AgU2FmZXR5IGNobyB0aOG6pXkgY+G6oyBoYWkgYmnhur9uIMSR4buBdSBjw7Mg4bqjbmggaMaw4bufbmcgdGnDqnUgY+G7sWMgdsOgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogxJHhur9uIHjDoWMgc3XhuqV0IHF14buRYyBnaWEgxJHDoW5oIGdpw6EgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvIChocVF1YWxpdHk9MSkuIEPhu6UgdGjhu4MsIGtoaSBz4bupYyBtdWEgdGjhu7FjIHThur8gdGjhuqVwLCBo4buHIHPhu5EgxrDhu5tjIGzGsOG7o25nIGzDoCDiiJIyLjAzNjEgKHBfdmFsdWUgPCAwLjA1KSwgY2hvIHRo4bqleSBy4bqxbmcga2jhuqMgbsSDbmcgcXXhu5FjIGdpYSDEkeG6oXQgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvIHRo4bqlcCBoxqFuIHPhu6ljIG11YSB0aOG7sWMgdOG6vyBjYW8uIFTGsMahbmcgdOG7sSwga2hpIG3hu6ljIMSR4buZIGFuIHRvw6BuIHRo4bqlcCwgaOG7hyBz4buRIGzDoCDiiJIxLjkyNjEgKHBfdmFsdWUgPSAwLjAwNzY2KSwgcXXhu5FjIGdpYSDEkeG6oXQgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvIHRo4bqlcCBoxqFuIHNvIHbhu5tpIG3hu6ljIMSR4buZIGFuIHRvw6BuIGNhby4gSOG7hyBz4buRIGNo4bq3biAoaW50ZXJjZXB0KSBraMO0bmcgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiAocCA9IDAuMjk3NjApLCB0dXkgbmhpw6puIG3DtCBow6xuaCB24bqrbiB0aOG7gyBoaeG7h24gcsO1IHZhaSB0csOyIGPhu6dhIGhhaSBiaeG6v24gxJHhu5ljIGzhuq1wIHRyb25nIHZp4buHYyBnaeG6o2kgdGjDrWNoIGJp4bq/biBwaOG7pSB0aHXhu5ljLg0KDQojIyMgKiozLjguIMSQw6FuaCBnacOhIG3DtCBow6xuaCBo4buTaSBxdXkgYuG7mWkqKg0KDQoqKkNo4buJIHPhu5EgQUlDKioNCg0KDQpgYGB7cn0NCkFJQyhtaGhxX2xvZ2l0KQ0KYGBgDQoNCg0KYGBge3J9DQpBSUMobWhocV9wcm9iaXQpDQpgYGANCg0KYGBge3J9DQpBSUMobWhocV9jbG9nbG9nKQ0KYGBgDQoNCioqQ2jhu4kgc+G7kSBCSUMqKg0KDQoNCmBgYHtyfQ0KQklDKG1oaHFfbG9naXQpDQpgYGANCg0KDQpgYGB7cn0NCkJJQyhtaGhxX3Byb2JpdCkNCmBgYA0KDQpgYGB7cn0NCkJJQyhtaGhxX2Nsb2dsb2cpDQpgYGANCg0KKipDaOG7iSBz4buRIExvZy1MaWtlbGlob29kKioNCg0KYGBge3J9DQpsb2dMaWsobWhocV9sb2dpdCkNCmBgYA0KDQpgYGB7cn0NCmxvZ0xpayhtaGhxX3Byb2JpdCkNCmBgYA0KDQpgYGB7cn0NCmxvZ0xpayhtaGhxX2Nsb2dsb2cpDQpgYGANCioqQ2jhu4kgc+G7kSBNY0ZhZGRlbl9SMioqDQoNCmBgYHtyfQ0KcFIyKG1oaHFfbG9naXQpWyJNY0ZhZGRlbiJdDQpgYGANCg0KYGBge3J9DQpwUjIobWhocV9wcm9iaXQpWyJNY0ZhZGRlbiJdDQpgYGANCg0KYGBge3J9DQpwUjIobWhocV9jbG9nbG9nKVsiTWNGYWRkZW4iXQ0KYGBgDQoqKlNvIHPDoW5oIGPDoWMgbcO0IGjDrG5oKioNCg0KfCBNw7QgaMOsbmggICAgICAgIHwgQUlDICAgICAgfCBCSUMgICAgICB8IExvZy1MaWtlbGlob29kIHwgTWNGYWRkZW4gUsKyIHwNCnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18DQp8IExvZ2l0ICAgICAgICAgIHwgMjA1LjU1ODEgfCAyMTUuOTQ5NiB8IC05OS43NzkxICAgICAgIHwgMC4zMDAzICAgICAgfA0KfCBQcm9iaXQgICAgICAgICB8IDIwNi4xNDA4IHwgMjE2LjUzMjMgfCAtMTAwLjA3MDQgICAgICB8IDAuMjk4MyAgICAgIHwNCnwgQ2xvZ2xvZyAgICAgICAgfCAyMDUuMzY1NCB8IDIxNS43NTY5IHwgLTk5LjY4MjcgICAgICAgfCAwLjMwMTAgICAgICB8DQoNCg0KROG7sWEgdHLDqm4ga+G6v3QgcXXhuqMgc28gc8OhbmggZ2nhu69hIGJhIG3DtCBow6xuaCBo4buTaSBxdXkgYuG7mWkgZ+G7k20gTG9naXQsIFByb2JpdCB2w6AgQ2xvZ2xvZyB0aMO0bmcgcXVhIGPDoWMgdGnDqnUgY2jDrSDEkcOhbmggZ2nDoSBuaMawIEFJQywgQklDLCBMb2ctbGlrZWxpaG9vZCB2w6AgaOG7hyBz4buRIHjDoWMgxJHhu4tuaCBNY0ZhZGRlbiBSwrIsIG3DtCBow6xuaCBDbG9nbG9nIGNobyB0aOG6pXkgaGnhu4d1IHF14bqjIHbGsOG7o3QgdHLhu5lpIGjGoW4gY+G6oy4gQ+G7pSB0aOG7gywgbcO0IGjDrG5oIG7DoHkgY8OzIGdpw6EgdHLhu4sgQUlDICgyMDUuMzcpIHbDoCBCSUMgKDIxNS43NikgdGjhuqVwIG5o4bqldCwgxJHhu5NuZyB0aOG7nWkgxJHhuqF0IExvZy1saWtlbGlob29kIGNhbyBuaOG6pXQgKC05OS42OCkgdsOgIGjhu4cgc+G7kSBNY0ZhZGRlbiBSwrIgbOG7m24gbmjhuqV0ICgwLjMwMTApLiBOaOG7r25nIHnhur91IHThu5EgbsOgeSBjaG8gdGjhuqV5IG3DtCBow6xuaCBDbG9nbG9nIGtow7RuZyBjaOG7iSBwaMO5IGjhu6NwIHbhu5tpIGThu68gbGnhu4d1IG3DoCBjw7JuIGPDsyBraOG6oyBuxINuZyBnaeG6o2kgdGjDrWNoIGJp4bq/biBwaOG7pSB0aHXhu5ljIHThu5F0IGjGoW4gc28gduG7m2kgaGFpIG3DtCBow6xuaCBjw7JuIGzhuqFpLiBEbyDEkcOzLCBtw7QgaMOsbmggQ2xvZ2xvZyDEkcaw4bujYyBs4buxYSBjaOG7jW4gbMOgIG3DtCBow6xuaCBwaMO5IGjhu6NwIG5o4bqldCB0cm9uZyBwaMOibiB0w61jaCBo4buTaSBxdXkgYuG7mWkgY2hvIGJp4bq/biBocVF1YWxpdHkuDQoNCk3hurdjIGTDuSBtw7QgaMOsbmggQ2xvZ2xvZyBjw7MgZ2nDoSB0cuG7iyBBSUMsIEJJQyB2w6AgTWNGYWRkZW4gUsKyIHThu5F0IG5o4bqldCB24buBIG3hurd0IHPhu5EgaOG7jWMsIG5oxrBuZyBz4buxIGNow6puaCBs4buHY2ggbsOgeSBsw6Aga2jDtG5nIMSRw6FuZyBr4buDIHNvIHbhu5tpIG3DtCBow6xuaCBMb2dpdC4gRG8gxJHDsywga2hpIHjDqXQgxJHhur9uIHTDrW5oIGThu4UgaGnhu4N1LCBwaOG7lSBiaeG6v24gdHJvbmcgdGjhu7FjIGjDoG5oIHbDoCBkaeG7hW4gZ2nhuqNpIHRy4buxYyBxdWFuIGjGoW4gdGjDtG5nIHF1YSBvZGRzLCBtw7QgaMOsbmggTG9naXQgxJHGsOG7o2MgbOG7sWEgY2jhu41uIGzDoG0gbcO0IGjDrG5oIMSR4bqhaSBkaeG7h24gdHJvbmcgcGjDom4gdMOtY2ggY3Xhu5FpIGPDuW5nLg0KDQoNCiMjICoqQ0jGr8agTkcgNDogS+G6vlQgTFXhuqxOIFbDgCBLSeG6vk4gTkdI4buKKioNCg0KIyMjICoqNC4xLiBL4bq/dCBsdeG6rW4qKg0KDQrEkOG7gSB0w6BpICJQaMOibiB0w61jaCBjw6FjIHnhur91IHThu5Eg4bqjbmggaMaw4bufbmcgxJHhur9uIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nIHThuqFpIGPDoWMgcXXhu5FjIGdpYSB0csOqbiB0aOG6vyBnaeG7m2kiIMSRw6MgaG/DoG4gdGjDoG5oIG3hu6VjIHRpw6p1IMSR4buBIHJhIGzDoCBuaOG6rW4gZGnhu4duIHbDoCBsxrDhu6NuZyBow7NhIHTDoWMgxJHhu5luZyBj4bunYSBjw6FjIHnhur91IHThu5Ega2luaCB04bq/IOKAkyB4w6MgaOG7mWkgxJHhur9uIGto4bqjIG7Eg25nIG3hu5l0IHF14buRYyBnaWEgxJHGsOG7o2MgeOG6v3AgdsOgbyBuaMOzbSBjw7MgY2jhuqV0IGzGsOG7o25nIGN14buZYyBz4buRbmcgY2FvLiBC4bqxbmcgY8OhY2gga2hhaSB0aMOhYyBi4buZIGThu68gbGnhu4d1IHThu6sgbuG7gW4gdOG6o25nIEthZ2dsZSB2w6Agw6FwIGThu6VuZyBjw6FjIHBoxrDGoW5nIHBow6FwIHRo4buRbmcga8OqIHN1eSBkaeG7hW4gY8O5bmcgYmEgbcO0IGjDrG5oIGjhu5NpIHF1eSBuaOG7iyBwaMOibjogTG9naXQsIFByb2JpdCB2w6AgQ2xvZ2xvZywgbmdoacOqbiBj4bupdSDEkcOjIHLDunQgcmEgY8OhYyBr4bq/dCBsdeG6rW4gY2jDrW5oIHNhdToNCg0KLSBT4bupYyBtdWEgdGjhu7FjIHThur8gKFB1cmNoYXNpbmcgUG93ZXIpIHbDoCBN4bupYyDEkeG7mSBhbiB0b8OgbiAoU2FmZXR5KSBsw6AgaGFpIHnhur91IHThu5EgY8OzIOG6o25oIGjGsOG7n25nIHRpw6p1IGPhu7FjLCByw7UgcuG7h3QgdsOgIGPDsyDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ogbeG6oW5oIG3hur0gxJHhur9uIHjDoWMgc3XhuqV0IG3hu5l0IHF14buRYyBnaWEgY8OzIGNo4bqldCBsxrDhu6NuZyBz4buRbmcgY2FvLiBD4bqjIGJhIG3DtCBow6xuaCBo4buTaSBxdXkgxJHhu4F1IGNobyB0aOG6pXkgaOG7hyBz4buRIMaw4bubYyBsxrDhu6NuZyBj4bunYSBoYWkgYmnhur9uIG7DoHkgxJHhu4F1IMOibSwgdsOgIGPDsyBnacOhIHRy4buLIHBfdmFsdWUgPDAuMDUuIMSQaeG7gXUgbsOgeSBow6BtIMO9IHLhurFuZyBxdeG7kWMgZ2lhIGPDsyBz4bupYyBtdWEgdGjhuqVwIGhv4bq3YyBt4bupYyDEkeG7mSBhbiB0b8OgbiB0aOG6pXAgc+G6vSBnaeG6o20gxJHDoW5nIGvhu4Mga2jhuqMgbsSDbmcgxJHhuqF0IGNo4bqldCBsxrDhu6NuZyBz4buRbmcgY2FvLg0KDQotIFkgdOG6vyAoSGVhbHRoIENhcmUpIHbDoCBLaMOtIGjhuq11IChDbGltYXRlKSBt4bq3YyBkw7kga2jDtG5nIMSRxrBhIMSRxrDhu6NjIHbDoG8gbcO0IGjDrG5oIGjhu5NpIHF1eSBkbyBoaeG7h24gdMaw4bujbmcgcGjDom4gdMOhY2ggaG/DoG4gaOG6o28gKHThuqV0IGPhuqMgcXXhu5FjIGdpYSBjaOG6pXQgbMaw4bujbmcgc+G7kW5nIGNhbyDEkeG7gXUgY8OzIHkgdOG6vyB04buRdCB2w6Aga2jDrSBo4bqtdSB0aHXhuq1uIGzhu6NpKSwgbmjGsG5nIGPDoWMga2nhu4NtIMSR4buLbmggYmFuIMSR4bqndSAoQ2hpIGLDrG5oIHBoxrDGoW5nLCBSZWxhdGl2ZSBSaXNrLCBPZGRzIFJhdGlvKSDEkeG7gXUgY2hvIHRo4bqleSBjaMO6bmcgbMOgIMSRaeG7gXUga2nhu4duIGfhuqduIG5oxrAgYuG6r3QgYnXhu5ljIMSR4buDIGPDsyBjaOG6pXQgbMaw4bujbmcgc+G7kW5nIGNhby4gxJBp4buBdSBuw6B5IHBo4bqjbiDDoW5oIHZhaSB0csOyIHF1eeG6v3QgxJHhu4tuaCBj4bunYSBoYWkgeeG6v3UgdOG7kSBuw6B5IHRyb25nIHRo4buxYyB04bq/Lg0KDQotIEPDoWMgYmnhur9uIG5oxrAgQ2hpIHBow60gc2luaCBob+G6oXQgKENvc3Qgb2YgTGl2aW5nKSwgVOG7tyBs4buHIGdpw6EgbmjDoCB0csOqbiB0aHUgbmjhuq1wIChQcmljZSB0byBJbmNvbWUgUmF0aW8pLCBUaOG7nWkgZ2lhbiBkaSBjaHV54buDbiAoQ29tbXV0ZSBUaW1lKSB2w6Agw5Qgbmhp4buFbSAoUG9sbHV0aW9uKSBraMO0bmcgY8OzIG3hu5FpIGxpw6puIGjhu4cgY8OzIMO9IG5naMSpYSB0aOG7kW5nIGvDqiB24bubaSBjaOG6pXQgbMaw4bujbmcgY3Xhu5ljIHPhu5FuZyB0cm9uZyBtw7QgaMOsbmggaGnhu4duIHThuqFpLiDEkGnhu4F1IG7DoHkgY8OzIHRo4buDIGRvOiBDw6FjaCBwaMOibiBsb+G6oWkgZOG7ryBsaeG7h3UgKG5o4buLIHBow6JuIGNhby90aOG6pXApIGzDoG0gbeG6pXQgdGjDtG5nIHRpbiBjaGkgdGnhur90IHbDoCDhuqNuaCBoxrDhu59uZyBj4bunYSBjw6FjIHnhur91IHThu5EgbsOgeSDEkcOjIMSRxrDhu6NjIGdpw6FuIHRp4bq/cCB0aOG7gyBoaeG7h24gdGjDtG5nIHF1YSBiaeG6v24ga2jDoWMgbmjGsCBz4bupYyBtdWEuDQoNCi0gVuG7gSBzbyBzw6FuaCBtw7QgaMOsbmg6IE3DtCBow6xuaCBDbG9nbG9nIGNobyB0aOG6pXkgxJHhu5kgcGjDuSBo4bujcCB04buRdCBuaOG6pXQgduG7m2kgZOG7ryBsaeG7h3UsIHbhu5tpIGPDoWMgY2jhu4kgc+G7kSBBSUMgKDIwNS4zNykgdsOgIEJJQyAoMjE1Ljc2KSB0aOG6pXAgbmjhuqV0LCBjw7luZyBo4buHIHPhu5EgTWNGYWRkZW4gUsKyIGNhbyBuaOG6pXQgKDAuMzAxMCkuIFR1eSBuaGnDqm4sIHPhu7Ega2jDoWMgYmnhu4d0IGdp4buvYSBiYSBtw7QgaMOsbmggKExvZ2l0LCBQcm9iaXQsIENsb2dsb2cpIGzDoCBraMO0bmcgbOG7m24sIHbDoCBjw6FjIGjhu4cgc+G7kSDGsOG7m2MgbMaw4bujbmcgxJHhu4F1IG5o4bqldCBxdcOhbiB24buBIGThuqV1IHbDoCDDvSBuZ2jEqWEgdGjhu5FuZyBrw6ouIMSQaeG7gXUgbsOgeSBjaG8gdGjhuqV5IGvhur90IHF14bqjIHBow6JuIHTDrWNoIGPDsyB0w61uaCDhu5VuIMSR4buLbmggY2FvLiBWw6wgbMO9IGRvIMSRw7MsIHbDoCBuaOG6sW0gdGh14bqtbiB0aeG7h24gY2hvIHZp4buHYyBkaeG7hW4gZ2nhuqNpIGvhur90IHF14bqjIHRoZW8geMOhYyBzdeG6pXQgdsOgIG9kZHMgcmF0aW8g4oCTIHbhu5FuIGThu4UgaGnhu4N1IHbDoCBwaOG7lSBiaeG6v24gdHJvbmcgdGjhu7FjIHRp4buFbiDigJMgbcO0IGjDrG5oIExvZ2l0IMSRxrDhu6NjIGzhu7FhIGNo4buNbiBsw6BtIG3DtCBow6xuaCB0csOsbmggYsOgeSBjaMOtbmggdHJvbmcgbmdoacOqbiBj4bupdSBuw6B5Lg0KDQotIFThu5VuZyBr4bq/dCBs4bqhaSwgbmdoacOqbiBj4bupdSDEkcOjIGNo4bupbmcgbWluaCB0w61uaCBo4buvdSDDrWNoIGPhu6dhIGPDoWMgcGjGsMahbmcgcGjDoXAgcGjDom4gdMOtY2ggxJHhu4tuaCBsxrDhu6NuZyB0cm9uZyB2aeG7h2Mga2jDoW0gcGjDoSB2w6AgxJHDoW5oIGdpw6EgdMOhYyDEkeG7mW5nIGPhu6dhIGPDoWMgeeG6v3UgdOG7kSB4w6MgaOG7mWkg4oCTIGtpbmggdOG6vyDEkeG6v24gY2jhuqV0IGzGsOG7o25nIHPhu5FuZy4gxJDhu5NuZyB0aOG7nWksIGvhur90IHF14bqjIGPFqW5nIGto4bqzbmcgxJHhu4tuaCBy4bqxbmcgxJHhu4MgbsOibmcgY2FvIGNo4bqldCBsxrDhu6NuZyBjdeG7mWMgc+G7kW5nLCBz4bupYyBtdWEgdGjhu7FjIHThur8sIGFuIHRvw6BuIHjDoyBo4buZaSwgaOG7hyB0aOG7kW5nIHkgdOG6vyB2w6AgbcO0aSB0csaw4budbmcgc+G7kW5nIGzDoCBuaOG7r25nIHnhur91IHThu5EgY+G7kXQgbMO1aS4NCg0KIyMjICoqNC4yLiBLaeG6v24gbmdo4buLKioNCg0KROG7sWEgdHLDqm4ga+G6v3QgcXXhuqMgbmdoacOqbiBj4bupdSwgxJHhu4EgdMOgaSDEkeG7gSB4deG6pXQgbeG7mXQgc+G7kSBraeG6v24gbmdo4buLIGNow61uaCBzw6FjaCBuaMawIHNhdToNCg0KIDEuIMavdSB0acOqbiBjw6FjIGNow61uaCBzw6FjaCBuw6JuZyBjYW8gc+G7qWMgbXVhIHRo4buxYyB04bq/OiBDaMOtbmggcGjhu6cgY8OhYyBuxrDhu5tjIG7Dqm4gdOG6rXAgdHJ1bmcgdsOgbyB2aeG7h2MgY+G6o2kgdGhp4buHbiB0aHUgbmjhuq1wIHRo4buxYyB04bq/IGPhu6dhIG5nxrDhu51pIGTDom4sIHRow7RuZyBxdWEgY8OhYyBjaMOtbmggc8OhY2gga2nhu4NtIHNvw6F0IGzhuqFtIHBow6F0LCB04bqhbyB2aeG7h2MgbMOgbSBjaOG6pXQgbMaw4bujbmcgY2FvLCDEkWnhu4F1IGNo4buJbmggbeG7qWMgbMawxqFuZyB04buRaSB0aGnhu4N1IGjhu6NwIGzDvSB2w6AgbeG7nyBy4buZbmcgaOG7hyB0aOG7kW5nIGFuIHNpbmggeMOjIGjhu5lpLg0KDQogMi4gVMSDbmcgY8aw4budbmcgdG/DoG4gZGnhu4duIG3hu6ljIMSR4buZIGFuIHRvw6BuIHjDoyBo4buZaTogxJDhuqNtIGLhuqNvIGFuIHRvw6BuIGzDoCDEkWnhu4F1IGtp4buHbiBu4buBbiB04bqjbmcgY2hvIGNo4bqldCBsxrDhu6NuZyBz4buRbmcuIEPDoWMgcXXhu5FjIGdpYSBj4bqnbiDEkeG6p3UgdMawIGNobyBo4buHIHRo4buRbmcgbHXhuq10IHBow6FwLCB0xINuZyBjxrDhu51uZyBs4buxYyBsxrDhu6NuZyB0aOG7sWMgdGhpLCB2w6AgdHJp4buDbiBraGFpIGPDoWMgY2jGsMahbmcgdHLDrG5oIHBow7JuZyBjaOG7kW5nIHThu5lpIHBo4bqhbSBoaeG7h3UgcXXhuqMuDQoNCiAzLiBYZW0geSB04bq/IHbDoCBtw7RpIHRyxrDhu51uZyBsw6AgdHLhu6UgY+G7mXQgY2hp4bq/biBsxrDhu6NjOiBEw7kga2jDtG5nIHRo4buDIMSRxrBhIHRy4buxYyB0aeG6v3AgdsOgbyBtw7QgaMOsbmggxJHhu4tuaCBsxrDhu6NuZywgcGjDom4gdMOtY2ggY2hvIHRo4bqleSB5IHThur8gdsOgIGtow60gaOG6rXUgxJHDs25nIHZhaSB0csOyIHRoaeG6v3QgeeG6v3UuIFbDrCB24bqteSwgdmnhu4djIG7Dom5nIGNhbyBjaOG6pXQgbMaw4bujbmcgaOG7hyB0aOG7kW5nIHkgdOG6vyBjw7RuZywgY+G6o2kgdGhp4buHbiBraOG6oyBuxINuZyB0aeG6v3AgY+G6rW4gZOG7i2NoIHbhu6UgY2jEg20gc8OzYyBz4bupYyBraOG7j2UgdsOgIHRo4buxYyBoaeG7h24gY8OhYyBjaMOtbmggc8OhY2ggbcO0aSB0csaw4budbmcgYuG7gW4gduG7r25nIGzDoCBj4bqnbiB0aGnhur90IGNobyBt4buZdCB0xrDGoW5nIGxhaSBjaOG6pXQgbMaw4bujbmcgc+G7kW5nIGNhby4NCg0KDQoNCg0K