(https://drive.google.com/file/d/1qzv2DSePcA5DkGaiaNlpv3G8Qh_2LGOp/view?usp=drive_link) (https://docs.google.com/spreadsheets/d/15cP3Bfm3RhAhHElxAD47Mvc5qW-AM7kIDZUJAFyLFig/edit?usp=sharing)

require(tidyverse)
## Loading required package: tidyverse
## Warning: package 'tibble' was built under R version 4.2.3
## Warning: package 'dplyr' was built under R version 4.2.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
library(DescTools)
## Warning: package 'DescTools' was built under R version 4.2.3
library(ggplot2)
library(xlsx)
setwd("C:/Users/YEN NHI/Documents/PTDLDT")
dl <- read.xlsx("dl.xlsx",1)
age = dl$age
ms = dl$marital
ed = dl$education
hs = dl$housing
ln = dl$loan
ct = dl$contact
dr = dl$duration
cp = dl$campaign
poc = dl$poutcome
y = dl$y

1 Chương 1. Giới thiệu

Đề tài: “Phân tích các yếu tố ảnh hưởng đến hiệu quả chiến dịch tiếp thị của công ty tài chính”.

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

Công ty tài chính là một trong những loại hình tổ chức tín dụng phi ngân hàng, tuy nhiên vẫn thực hiện một số hoạt động ngân hàng theo Luật tổ chức tín dụng 2010. Ngoại trừ một số hoạt động như nhận tiền gửi các nhân và cung ứng các dịch vụ thanh toán qua tài khoản của khách hàng. Công ty tài chính với vai trò nhằm thúc đẩy nền kinh tế phát triển, tạo vốn cho nền kinh tế, thúc đẩy các hoạt động của các NHTM mở rộng và hiện đại hóa hệ thống của ngân hàng, giúp điều hành chính sách tiền tệ của ngân hàng trung ương, đáp ứng đủ và kịp thời nhu cầu về vốn với chi phí thấp nhất. Ngoài ra, khai thác được mọi nguồn vốn phục vụ cho đầu tư phát triển sản xuất kinh doanh. Vì vậy, việc cải thiện hiểu quả hoạt động của các công ty tài chính là rất cần thiết thông qua các chiến dịch của công ty. Bài tiểu luận phân tích các yếu tố ảnh hưởng đến phản ứng của khách hàng về chiến dịch của công ty tài chính nhằm mục đích tìm ra các yếu tố có ảnh hưởng tiêu cực đến chiến dịch đồng thời thay đổi để phù hợp với khách hàng hơn trong các chiến dịch trong tương lai.

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

Đầu tiên cần xác định các yếu tố có ảnh hưởng đến phản ứng của khách hàng về chiến dịch, sau đó đưa ra một số giải pháp để cải thiện hiệu quả của chiến dịch trong tương lai của công ty tài chính.

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

Bài nghiên cứu này nghiên cứu các yếu tố ảnh hưởng đến phản ứng của khách hàng về chiến dịch của công ty tài chính.

1.4 Phương pháp nghiên cứu

Bài nghiên cứu này sử dụng phương pháp phân tích dữ liệu định tính.

1.5 Kết cấu bài nghiên cứu

Chương một: Giới thiệu tổng quan nghiên cứu. Chương này giới thiệu tổng quan nghiên cứu, bao gồm: đặt vấn đề nghiên cứu, mục tiêu nghiên cứu, đối tượng nghiên cứu, phạm vi và phương pháp nghiên cứu và kết cấu bài nghiên cứu.

Chương hai: Cơ sở lý thuyết nghiên cứu. Chương này bao gồm: các khái niệm, các lý thuyết công ty tài chính.

Chương ba: Phương pháp nghiên cứu và dữ liệu nghiên cứu – Mô tả phương pháp nghiên cứu và nguồn dữ liệu sử dụng, xây dựng mô hình nghiên cứu, giải thích các biến có trong mô hình.

Chương bốn: Phân tích dữ liệu và kết quả nghiên cứu.

Chương năm: Kết luận và kiến nghị. Chương này bao gồm kết luận chung của bài nghiên cứu. Sau đó, đưa ra một số kiến nghị dựa trên kết quả bài nghiên cứu.

2 Chương 2. Cơ sở lý thuyết

2.1 Công ty tài chính

Theo khoản 4 Điều 4 Luật Các tổ chức tín dụng 2010 thì tổ chức tín dụng phi ngân hàng là loại hình tổ chức tín dụng được thực hiện một hoặc một số hoạt động ngân hàng theo quy định, trừ các hoạt động nhận tiền gửi của cá nhân và cung ứng các dịch vụ thanh toán qua tài khoản của khách hàng. Tổ chức tín dụng phi ngân hàng bao gồm công ty tài chính, công ty cho thuê tài chính và các tổ chức tín dụng phi ngân hàng khác. Như vậy, công ty tài chính là doanh nghiệp thuộc loại hình tổ chức tín dụng phi ngân hàng.

2.2 Hoạt động ngân hàng của công ty tài chính

  • Công ty tài chính được thực hiện một hoặc một số hoạt động ngân hàng sau đây:

  • Nhận tiền gửi của tổ chức;

  • Phát hành chứng chỉ tiền gửi, kỳ phiếu, tín phiếu, trái phiếu để huy động vốn của tổ chức;

  • Vay vốn của tổ chức tín dụng, tổ chức tài chính trong nước và nước ngoài theo quy định của pháp luật; vay Ngân hàng Nhà nước dưới hình thức tái cấp vốn theo quy định của Luật Ngân hàng Nhà nước Việt Nam;

  • Cho vay, bao gồm cả cho vay trả góp, cho vay tiêu dùng;

  • Bảo lãnh ngân hàng;

  • Chiết khấu, tái chiết khấu công cụ chuyển nhượng, các giấy tờ có giá khác;

  • Phát hành thẻ tín dụng, bao thanh toán, cho thuê tài chính và các hình thức cấp tín dụng khác sau khi được Ngân hàng Nhà nước chấp thuận.

  • Chính phủ quy định cụ thể điều kiện để công ty tài chính thực hiện hoạt động ngân hàng quy định.

  • Đối với các hoạt động kinh doanh khác, công ty tài chính được thực hiện những lĩnh vực bao gồm:

  • Mở tài khoản tiền gửi tại Ngân hàng Nhà nước hoặc mở tài khoản thanh toán tại ngân hàng thương mại, chi nhánh ngân hàng nước ngoài. Ngoài ra, công ty tài chính được phép thực hiện hoạt động phát hành thẻ tín dụng được mở tài khoản tại ngân hàng nước ngoài theo quy định của pháp luật về ngoại hối.

  • Góp vốn, mua cổ phần của doanh nghiệp, quỹ đầu tư.

  • Thành lập, mua lại công ty con, công ty liên kết hoạt động trong các lĩnh vực bảo hiểm, chứng khoán, quản lý nợ và khai thác tài sản sau khi được Ngân hàng Nhà nước chấp thuận bằng văn bản.

  • Tiếp nhận vốn ủy thác của Chính phủ, tổ chức, cá nhân để thực hiện các hoạt động đầu tư vào các dự án sản xuất, kinh doanh, cấp tín dụng được phép; ủy thác vốn cho tổ chức tín dụng thực hiện cấp tín dụng. Việc tiếp nhận vốn ủy thác của cá nhân và ủy thác vốn cho các tổ chức tín dụng cấp tín dụng thực hiện theo quy định của Ngân hàng Nhà nước.

  • Tham gia thị trường tiền tệ theo quy định tại Điều 104 của Luật này.

  • Mua, bán trái phiếu Chính phủ, trái phiếu doanh nghiệp.

  • Bảo lãnh phát hành trái phiếu Chính phủ, trái phiếu doanh nghiệp; đại lý phát hành trái phiếu, cổ phiếu và các loại giấy tờ có giá khác.

  • Kinh doanh, cung ứng dịch vụ ngoại hối theo quy định của Ngân hàng Nhà nước.

  • Làm đại lý kinh doanh bảo hiểm.

  • Cung ứng dịch vụ tư vấn trong lĩnh vực ngân hàng, tài chính, đầu tư.

  • Cung ứng dịch vụ quản lý, bảo quản tài sản của khách hàng.

2.3 Vai trò của công ty tài chính

Công ty tài chính với vai trò nhằm thúc đẩy nền kinh tế phát triển, tạo vốn cho nền kinh tế, thúc đẩy các hoạt động của các NHTM mở rộng và hiện đại hóa hệ thống của ngân hàng, giúp điều hành chính sách tiền tệ của ngân hàng trung ương, đáp ứng đủ và kịp thời nhu cầu về vốn với chi phí thấp nhất. Ngoài ra, khai thác được mọi nguồn vốn phục vụ cho đầu tư phát triển sản xuất kinh doanh.

3 Chương 3. Phương pháp nghiên cứu và dữ liệu nghiên cứu

3.1 Chọn biến phụ thuộc

Nhằm để phân tích các yếu tố ảnh hưởng đến phản ứng về chiến dịch của khách hàng, chọn biến phụ thuộc là biến y thể hiện khách hàng thể hiện khách hàng có phản ứng như thể nào với chiến dịch của công ty.

3.2 Mô hình nghiên cứu

\[ y = \beta_0 + \beta_1age + \beta_2ms + \beta_3ed + \beta_4hs + \beta_5ln + \beta_6ct + \beta_7dr+ \beta_8cp + \beta_9poc \]

3.3 Mô tả biến trong mô hình nghiên cứu

  1. age: Độ tuổi của khách hàng
  2. ms (marital): Trạng thái hôn nhân của khách hàng. (yes/no)
  3. ed (education): Trình độ học vấn của khách hàng. (university.degree/high.school/basic/illiterate/professional.course)
  4. hs (housing): Khách hàng đã mua nhà hay chưa. (yes/no)
  5. ln (loan): Khách hàng có vay ở công ty tài chính hay chưa. (yes/no)
  6. ct (contact): Cách thức liên lạc với khách hàng. (cellular/telephone)
  7. dr (duration): Số ngày kể từ khi khách hàng sử dụng các dịch vụ tại công ty tài chính.
  8. cp (campaign): Số cuộc gọi đã thực hiện cho chiến dịch hiện tại.
  9. poc (p_outcome): Kết quả của chiến dịch trước. (failure/success)
  10. y: Khách hàng có phản ứng tích cực với chiến dịch của công ty tài chính hay không. (yes/no)

Nguồn dữ liệu: (https://www.kaggle.com/datasets/pkdarabi/bank-marketing-dataset)

str(dl)
## 'data.frame':    4426 obs. of  10 variables:
##  $ age      : num  32 58 32 39 32 43 35 30 34 21 ...
##  $ marital  : chr  "yes" "yes" "yes" "yes" ...
##  $ education: chr  "university.degree" "basic" "university.degree" "high.school" ...
##  $ housing  : chr  "no" "yes" "yes" "no" ...
##  $ loan     : chr  "yes" "no" "yes" "no" ...
##  $ contact  : chr  "cellular" "cellular" "cellular" "cellular" ...
##  $ duration : num  133 358 36 1011 142 ...
##  $ campaign : num  2 2 9 1 1 1 1 1 2 3 ...
##  $ poutcome : chr  "failure" "failure" "failure" "success" ...
##  $ y        : chr  "no" "no" "no" "no" ...

Thông qua bảng dữ liệu trên, ta thấy dữ liệu nghiên cứu gồm 4426 quan sát và 10 biến khác nhau. Trong đó, có 7 biến định tính và 3 biến định lượng.

3.4 Dữ liệu nghiên cứu

Bộ dữ liệu được thu thập từ các hai chiến dịch tiếp thị của một tổ chức tài chính, nhằm mục đích cải thiện hiệu quả của các chiến dịch tiếp thị trong tương lai. Vì vậy, phân tích xem hiệu quả của chiến dịch tiếp thị trước đó. Sau đó, xác định các yếu tố ảnh hưởng đến kết quả của chiến dịch, nhằm xác định các chiến lước tốt hơn trong tương lai.

Dữ liệu gồm 4426 quan sát và 10 biến.

4 Chương 4. Phân tích dữ liệu và kết quả nghiên cứu

4.1 Thống kê mô tả biến phụ thuộc

table(y)
## y
##   no  yes 
## 3202 1224
table(y)/sum(table(y))
## y
##        no       yes 
## 0.7234523 0.2765477
dl |> ggplot(aes(x = y, y = after_stat(count))) +
geom_bar(fill = 'violet') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'black', vjust = - .5) +labs(x = 'Phản ứng về chiến dịch', y = 'Số khách hàng')

4.2 Thống kê mô tả cho các biến độc lập

Bảng tần số/tần suất còn được gọi là bảng ngẫu nhiên. Khi lập bảng ngẫu nhiên cho 2 biến thì bảng đó được gọi là bảng ngẫu nhiên 2 chiều, nếu lập cho 3 biến thì gọi là ngẫu nhiên 3 chiều và cứ thế tăng lên. Đối với bảng tần số, ta quy ước biến phụ thuộc được sắp xếp theo cột và biến độc lập được sắp xếp theo hàng.

4.2.1 Biến age

summary(age)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   17.00   31.00   37.00   39.98   47.00   94.00
age1 <- cut(age, 2, labels = c('low','high'))
summary(age1)
##  low high 
## 3896  530

Theo kết quả trên, độ tuổi của khách hàng tại công ty tài chính trung bình ở độ tuổi 40, độ tuổi cao nhất là 94 tuổi và thấp nhất là 17 tuổi. 25% khách hàng có độ tuổi nhỏ hơn 31 tuổi, 50% khách hàng có độ tuổi nhỏ hơn 37 tuổi và 75% khách hàng có độ tuổi nhỏ hơn 47 tuổi. Trong 4426 khách hàng của công ty tài chính, có 3896 khách hàng ở độ tuổi thấp và 530 khách hàng có độ tuổi cao.

table(age1)/sum(table(age1))
## age1
##       low      high 
## 0.8802531 0.1197469
dl <- data.frame(age, ms, ed, hs, ln, ct, dr, cp, poc, y)
dl |> ggplot(aes(x = age1, y = after_stat(count))) +
geom_bar(fill = 'violet') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'black', vjust = - .5) +labs(x = 'Độ tuổi', y = 'Số khách hàng')

Dựa vào đồ thị của biến age, ta thấy rằng tỷ lệ khách hàng ở độ tuổi thấp gấp 7,33 lần tỷ lệ khách hàng ở độ tuổi cao.

4.2.2 Biến Marital

table(ms)
## ms
##   no  yes 
## 2029 2397
table(ms)/sum(table(ms))
## ms
##        no       yes 
## 0.4584275 0.5415725
dl |> ggplot(aes(x = ms, y = after_stat(count))) +
geom_bar(fill = 'violet') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'black', vjust = - .5) +labs(x = 'Tình trạng hôn nhân', y = 'Số khách hàng')

Biến Marital (ms) thể hiện tình trạng hôn nhân của khách hàng rằng khách hàng đã kết hôn hay chưa. Dựa vào kết quả thống kê và đồ thị trên, ta thấy có 2029 khách hàng chưa kết hôn và 2397 khách hàng đã kết hôn trên tổng số 4426 khách hàng. Cụ thể, tỷ lệ khách hàng đã kết hôn (với tỷ lệ 45,84%) chiếm cao hơn tỷ lệ khách hàng chưa kết hôn (với tỷ lệ 54,16%).

4.2.3 Biến education

table(ed)
## ed
##               basic         high.school          illiterate professional.course 
##                1099                1180                   1                 594 
##   university.degree 
##                1552
table(ed)/sum(table(ed))
## ed
##               basic         high.school          illiterate professional.course 
##        0.2483054677        0.2666064166        0.0002259376        0.1342069589 
##   university.degree 
##        0.3506552192
dl |> ggplot(aes(x = ed, y = after_stat(count))) +
geom_bar(fill = 'violet') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'black', vjust = - .5) +labs(x = 'Trình độ học vấn', y = 'Số khách hàng')

Dựa vào đồ thị và kết quả thống kê trên, ta thấy rằng tỷ lệ khách hàng có trình độ học vấn là cử nhân chiếm tỷ lệ cao nhất với tỷ lệ 35,1%, tỷ lệ khách hàng bỏ học có tỷ lệ thấp nhất xấp xỉ 0,02% (1 khách hàng).

4.2.4 Biến housing

table(hs)
## hs
##   no  yes 
## 1892 2534
table(hs)/sum(table(hs))
## hs
##       no      yes 
## 0.427474 0.572526
dl |> ggplot(aes(x = hs, y = after_stat(count))) +
geom_bar(fill = 'violet') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'black', vjust = - .5) +labs(x = 'Nhà', y = 'Số khách hàng')

Biến Housing (hs) thể hiện khách hàng có nhà hay không. Dựa vào kết quả thống kê và đồ thị trên, ta thấy có 1892 khách hàng chưa có nhà và 2534 khách hàng đã có nhà trên tổng số 4426 khách hàng. Cụ thể, tỷ lệ khách hàng đã có nhà (với tỷ lệ 57%) chiếm cao hơn tỷ lệ khách hàng chưa có nhà (với tỷ lệ 43%).

4.2.5 Biến loan

table(ln)
## ln
##   no  yes 
## 3745  681
table(ln)/sum(table(ln))
## ln
##        no       yes 
## 0.8461365 0.1538635
dl |> ggplot(aes(x = ln, y = after_stat(count))) +
geom_bar(fill = 'violet') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'black', vjust = - .5) +labs(x = 'Vay nợ', y = 'Số khách hàng')

Biến Loan (ln) thể hiện khách hàng có vay tại công ty tài chính hay không. Dựa vào kết quả thống kê và đồ thị trên, ta thấy có 3745 khách hàng không vay tại công ty tài chính và 681 khách hàng có vay tại công ty tài chính trên tổng số 4426 khách hàng. Cụ thể, tỷ lệ khách hàng không vay tại công ty tài chính (với tỷ lệ 85%) chiếm cao hơn tỷ lệ khách hàng có vay tại công ty tài chính (với tỷ lệ 15%).

4.2.6 Biến contact

table(ct)
## ct
##  cellular telephone 
##      4101       325
table(ct)/sum(table(ct))
## ct
##   cellular  telephone 
## 0.92657027 0.07342973
dl |> ggplot(aes(x = ct, y = after_stat(count))) +
geom_bar(fill = 'violet') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'black', vjust = - .5) +labs(x = 'Cách thức liên lạc', y = 'Số khách hàng')

Biến Contact (ct) thể hiện cách thức công ty liên hệ với khách hàng. Dựa vào kết quả thống kê và đồ thị trên, ta thấy có 4101 khách hàng công ty sử dụng điện thoại di động để liên lạc và 325 khách hàng công ty sử dụng điện thoại bàn để liên lạc trên tổng số 4426 khách hàng. Cụ thể, tỷ lệ khách hàng công ty sử dụng điện thoại di động để liên lạc (với tỷ lệ 93%) chiếm cao hơn tỷ lệ khách hàng công ty sử dụng điện thoại bàn để liên lạc (với tỷ lệ 7%).

4.2.7 Biến duration

summary(dr)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##       1     116     199     266     329    3509
dr1 <- cut(dr, breaks = c(0, mean(dr), max(dr)), labels = c('few', 'many'))
table(dr1)
## dr1
##  few many 
## 2885 1541

Theo kết quả trên, số ngày trung bình mà khách hàng đã bắt đầu sử dụng các dịch vụ của công ty tài chính là 266 ngày, số ngày nhiều nhất là 3509 ngày và ít nhất là 1 ngày. 65% khách hàng có số ngày sử dụng dưới 266 ngày, 35% khách hàng có số ngày sử dụng trên 266 ngày. Trong 4426 khách hàng của công ty tài chính, có 2885 khách hàng có số ngày sử dụng dưới 266 ngày và 1541 khách hàng có số ngày sử dụng trên 266 ngày.

table(dr1)/sum(table(dr1))
## dr1
##       few      many 
## 0.6518301 0.3481699
dl <- data.frame(age, ms, ed, hs, ln, ct, dr, cp, poc, y)
dl |> ggplot(aes(x = dr1, y = after_stat(count))) +
geom_bar(fill = 'violet') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'black', vjust = - .5) +labs(x = 'Ngày sử dụng các dịch vụ tại công ty', y = 'Số khách hàng')

Dựa vào đồ thị, ta thấy rằng, khách hàng có số ngày sử dụng các dịch vụ ít gấp 1,86 lần khách hàng có số ngày sử dụng các dịch vụ nhiều.

4.2.8 Biến campaign

summary(cp)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.000   1.000   1.000   1.944   2.000  12.000
cp1 <- cut(cp, breaks = c(0, 2, max(cp)), labels = c('few', 'many'))
summary(cp1)
##  few many 
## 3488  938

Theo kết quả trên, số cuộc gọi trung bình mà các khách hàng nhận được gần 2 cuộc gọi, khách hàng được gọi nhiều nhất với số cuộc gọi là 12 cuộc gọi và ít nhất là 1 cuộc gọi. 79% khách hàng nhận số cuộc gọi dưới 2 cuộc gọi, 21% khách hàng nhận số cuộc gọi trên 2 cuộc gọi. Trong 4426 khách hàng của công ty tài chính, 3488 khách hàng nhận số cuộc gọi dưới 2 cuộc gọi và 938 khách hàng nhận số cuộc gọi dưới 2 cuộc gọi.

table(cp1)/sum(table(cp1))
## cp1
##       few      many 
## 0.7880705 0.2119295
dl <- data.frame(age, ms, ed, hs, ln, ct, dr, cp, poc, y)
dl |> ggplot(aes(x = cp1, y = after_stat(count))) +
geom_bar(fill = 'violet') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'black', vjust = - .5) +labs(x = 'Số cuộc gọi', y = 'Số khách hàng')

Dựa vào đồ thị, ta thấy rằng, khách hàng nhận cuộc gọi ít gấp 3,76 lần khách hàng nhận cuộc gọi nhiều.

4.2.9 Biến p_outcome

table(poc)
## poc
## failure success 
##    3301    1125
table(poc)/sum(table(poc))
## poc
##   failure   success 
## 0.7458202 0.2541798
dl |> ggplot(aes(x = poc, y = after_stat(count))) +
geom_bar(fill = 'violet') +geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat ='count', color = 'black', vjust = - .5) +labs(x = 'Kết quả của chiến dịch trước', y = 'Số khách hàng')

Biến p_outcome (poc) thể hiện kết quả của chiến dịch trước là thất bại hay thành công đối với từng khách hàng. Dựa vào kết quả thống kê và đồ thị trên, ta thấy có 3301 quan sát thể hiện thất bại của chiến dịch và 1125 quan sát thể hiện thành công của chiến dịch trên tổng số 4426 quan sát. Cụ thể, tỷ lệ thất bại của chiến dịch (với tỷ lệ 75%) chiếm cao hơn tỷ lệ thành công của chiến dịch (với tỷ lệ 25%).

4.2.10 Bảng tần số

dl1 <- table(y,age1)
dl1
##      age1
## y      low high
##   no  2915  287
##   yes  981  243

Trong tổng 4426 khách hàng, ta thấy có 2915 khách hàng ở độ tuổi thấp có phản ứng tiêu cực với chiến dịch của công ty tài chính, 981 khách hàng ở độ tuổi thấp có phản ứng tích cực với chiến dịch. Trong khi đó, có 287 khách hàng ở độ tuổi cao có phản ứng tiêu cực với chiến dịch, 243 khách hàng ở độ tuổi cao có phản ứng tích cực với chiến dịch.

dl2 <- table(y,hs)
dl2
##      hs
## y       no  yes
##   no  1359 1843
##   yes  533  691

Trong tổng 4426 khách hàng, ta thấy có 1359 khách hàng chưa có nhà có phản ứng tiêu cực với chiến dịch của công ty tài chính, 535 khách hàng chưa có nhà có phản ứng tích cực với chiến dịch. Trong khi đó, có 1843 khách hàng đã có nhà có phản ứng tiêu cực với chiến dịch, 691 khách hàng đã có nhà có phản ứng tích cực với chiến dịch.

dl3 <- table(y,ln)
dl3
##      ln
## y       no  yes
##   no  2701  501
##   yes 1044  180

Trong tổng 4426 khách hàng, ta thấy có 2701 khách hàng chưa vay có phản ứng tiêu cực với chiến dịch của công ty tài chính, 1044 khách hàng chưa vay có phản ứng tích cực với chiến dịch. Trong khi đó, có 501 khách hàng đã vay có phản ứng tiêu cực với chiến dịch, 180 khách hàng đã vay có phản ứng tích cực với chiến dịch.

dl4 <- table(y,ct)
dl4
##      ct
## y     cellular telephone
##   no      2955       247
##   yes     1146        78

Trong tổng 4426 khách hàng, ta thấy có 2955 khách hàng liên hệ bằng di động có phản ứng tiêu cực với chiến dịch của công ty tài chính, 1146 khách hàng liên hệ bằng di động có phản ứng tích cực với chiến dịch. Trong khi đó, có 247 khách hàng liên hệ bằng điện thoại bàn có phản ứng tiêu cực với chiến dịch, 78 khách hàng liên hệ bằng điện thoại bàn có phản ứng tích cực với chiến dịch.

dl5 <- table(y,dr1)
dl5
##      dr1
## y      few many
##   no  2404  798
##   yes  481  743

Trong tổng 4426 khách hàng, ta thấy có 2404 khách hàng có số ngày kể từ khi bắt đầu sử dụng các dịch vụ tại công ty tài chính ít có phản ứng tiêu cực với chiến dịch của công ty tài chính, 481 khách hàng có số ngày kể từ khi bắt đầu sử dụng các dịch vụ tại công ty tài chính ít có phản ứng tích cực với chiến dịch. Trong khi đó, có 798 khách hàng có số ngày kể từ khi bắt đầu sử dụng các dịch vụ tại công ty tài chính nhiều có phản ứng tiêu cực với chiến dịch, 743 khách hàng có số ngày kể từ khi bắt đầu sử dụng các dịch vụ tại công ty tài chính ít có phản ứng tích cực với chiến dịch.

dl6 <- table(y, poc)
dl6
##      poc
## y     failure success
##   no     2817     385
##   yes     484     740

Trong tổng 4426 khách hàng, ta thấy có 2817 quan sát thấy rằng chiến dịch trước thất bại có phản ứng tiêu cực với chiến dịch của công ty tài chính, 484 quan sát thấy rằng chiến dịch trước thất bại có phản ứng tích cực với chiến dịch. Trong khi đó, có 385 quan sát thấy rằng chiến dịch trước thành công có phản ứng tiêu cực với chiến dịch, 740 quan sát thấy rằng chiến dịch trước thành công có phản ứng tích cực với chiến dịch.

dl7 <- table(y, cp1)
dl7
##      cp1
## y      few many
##   no  2490  712
##   yes  998  226

Trong tổng 4426 khách hàng, ta thấy có 2490 khách hàng nhận cuộc gọi ít có phản ứng tiêu cực với chiến dịch của công ty tài chính, 998 khách hàng nhận cuộc gọi ít có phản ứng tích cực với chiến dịch. Trong khi đó, có 712 khách hàng nhận cuộc gọi nhiều có phản ứng tiêu cực với chiến dịch, 226 khách hàng nhận cuộc gọi nhiều có phản ứng tích cực với chiến dịch.

dl8 <- table(y, ms)
dl8
##      ms
## y       no  yes
##   no  1459 1743
##   yes  570  654

Trong tổng 4426 khách hàng, ta thấy có 1459 khách hàng chưa kết hôn có phản ứng tiêu cực với chiến dịch của công ty tài chính, 570 khách hàng chưa kết hôn có phản ứng tích cực với chiến dịch. Trong khi đó, có 1743 khách hàng đã kết hôn có phản ứng tiêu cực với chiến dịch, 654 khách hàng đã kết hôn có phản ứng tích cực với chiến dịch.

4.2.11 Rủi ro tương đối (Relative Risk/Risk Ratio)

Ký hiệu là \(\pi_i\) là tỷ lệ “thành công của biến phụ thuộc tương ứng với từng biến độc lập. Từ bảng tần xuất, chúng ta tính \(\frac{\pi_1}{\pi_2}\), phân số này được gọi là Rủi ro tương đối (Relative risk) giữa 2 biểu hiện khác nhau của biến phụ thuộc.

addmargins(dl1)
##      age1
## y      low high  Sum
##   no  2915  287 3202
##   yes  981  243 1224
##   Sum 3896  530 4426
RelRisk(dl1)
## [1] 1.135873

Tỷ lệ khách hàng ở độ tuổi thấp nhưng có phản ứng tiêu cực với chiến dịch gấp 1,14 lần tỷ lệ khách hàng ở độ tuổi thấp nhưng có phản ứng tích cực với chiến dịch.

addmargins(dl2)
##      hs
## y       no  yes  Sum
##   no  1359 1843 3202
##   yes  533  691 1224
##   Sum 1892 2534 4426
RelRisk(dl2)
## [1] 0.9746582

Tỷ lệ khách hàng chưa có nhà và có phản ứng tiêu cực với chiến dịch gấp 97,47% lần tỷ lệ khách hàng chưa có nhà nhưng có phản ứng tích cực với chiến dịch.

addmargins(dl3)
##      ln
## y       no  yes  Sum
##   no  2701  501 3202
##   yes 1044  180 1224
##   Sum 3745  681 4426
RelRisk(dl3)
## [1] 0.9889724

Tỷ lệ khách hàng chưa vay và có phản ứng tiêu cực với chiến dịch gấp 98,9% lần tỷ lệ khách hàng chưa vay nhưng có phản ứng tích cực với chiến dịch.

addmargins(dl4)
##      ct
## y     cellular telephone  Sum
##   no      2955       247 3202
##   yes     1146        78 1224
##   Sum     4101       325 4426
RelRisk(dl4)
## [1] 0.9856732

Tỷ lệ khách hàng liên hệ bằng di động và có phản ứng tiêu cực với chiến dịch gấp 98,57% lần tỷ lệ khách hàng liên hệ bằng di động và có phản ứng tích cực với chiến dịch.

addmargins(dl5)
##      dr1
## y      few many  Sum
##   no  2404  798 3202
##   yes  481  743 1224
##   Sum 2885 1541 4426
RelRisk(dl5)
## [1] 1.910511

Tỷ lệ khách hàng có số ngày kể từ khi bắt đầu sử dụng các dịch vụ tại công ty tài chính ít và có phản ứng tiêu cực với chiến dịch gấp 1,91 lần tỷ lệ khách hàng có số ngày kể từ khi bắt đầu sử dụng các dịch vụ tại công ty tài chính ít và có phản ứng tích cực với chiến dịch.

addmargins(dl6)
##      poc
## y     failure success  Sum
##   no     2817     385 3202
##   yes     484     740 1224
##   Sum    3301    1125 4426
RelRisk(dl6)
## [1] 2.224854

Tỷ lệ chiến dịch trước thất bại và khách hàng có phản ứng tiêu cực với chiến dịch gấp 2,22 lần tỷ lệ chiến dịch trước thành công và có khách hàng phản ứng tích cực với chiến dịch.

addmargins(dl7)
##      cp1
## y      few many  Sum
##   no  2490  712 3202
##   yes  998  226 1224
##   Sum 3488  938 4426
RelRisk(dl7)
## [1] 0.9537376

Tỷ lệ khách hàng nhận cuộc gọi ít và có phản ứng tiêu cực với chiến dịch gấp 95,37% lần tỷ lệ khách hàng nhận cuộc gọi nhiều và có phản ứng tích cực với chiến dịch.

addmargins(dl8)
##      ms
## y       no  yes  Sum
##   no  1459 1743 3202
##   yes  570  654 1224
##   Sum 2029 2397 4426
RelRisk(dl8)
## [1] 0.9784543

Tỷ lệ khách hàng chưa kết hôn và có phản ứng tiêu cực với chiến dịch gấp 97,85% lần tỷ lệ khách hàng chưa kết hôn và có phản ứng tích cực với chiến dịch.

4.2.12 Tỷ lệ chênh (Odd Ratio)

Nếu gọi xác suất “thành công” của biểu hiện thứ i của biến độc lập là \(\pi_i\) thì chúng ta ký hiệu Tỷ lệ cược (odd) của biểu hiện này là \(odd_i\) và được định nghĩa như sau:

\[ odd_i = \frac{\pi_i}{1-\pi_i} \]

Nghĩa là chúng ta tính tỷ lệ thành công theo từng hàng trong bảng ngẫu nhiên. Tỷ lệ chênh của biểu hiện thứ i và biểu hiện thứ j được ký hiệu là \(\theta_{ij}\) và được định nghĩa:

\[ \theta = \frac{odd_i}{odd_j} = \frac{\frac{\pi_i}{1-\pi_i}}{\frac{\pi_j}{1-\pi_j}} = \frac{\pi_i(1-\pi_j)}{\pi_j(1-\pi_i)} \]

dl1
##      age1
## y      low high
##   no  2915  287
##   yes  981  243
OddsRatio(dl1)
## [1] 2.515903

Theo kết quả trên, ta thấy, tỷ lệ khách hàng có độ tuổi thấp so với khách hàng có độ tuổi cao mà có phản ứng tiêu cực với chiến dịch gấp 2,52 lần khách hàng có độ tuổi thấp so với khách hàng có độ tuổi cao mà có phản ứng tích cực với chiến dịch.

dl2
##      hs
## y       no  yes
##   no  1359 1843
##   yes  533  691
OddsRatio(dl2)
## [1] 0.9559715

Theo kết quả trên, ta thấy, tỷ lệ khách hàng chưa có nhà so với khách hàng có nhà mà có phản ứng tiêu cực với chiến dịch gấp 95,6% lần khách hàng chưa có nhà so với khách hàng có nhà mà có phản ứng tích cực với chiến dịch.

dl3
##      ln
## y       no  yes
##   no  2701  501
##   yes 1044  180
OddsRatio(dl3)
## [1] 0.9295203

Theo kết quả trên, ta thấy, tỷ lệ khách hàng chưa vay so với khách hàng đã vay mà có phản ứng tiêu cực với chiến dịch gấp 92,95% lần khách hàng chưa vay so với khách hàng đã vay mà có phản ứng tích cực với chiến dịch.

dl4
##      ct
## y     cellular telephone
##   no      2955       247
##   yes     1146        78
OddsRatio(dl4)
## [1] 0.8142739

Theo kết quả trên, ta thấy, tỷ lệ khách hàng liên hệ bằng di động so với khách hàng liên hệ bằng điện thoại bàn mà có phản ứng tiêu cực với chiến dịch gấp 81,43% lần khách hàng liên hệ bằng di động so với khách hàng liên hệ bằng điện thoại bàn mà có phản ứng tích cực với chiến dịch.

dl5
##      dr1
## y      few many
##   no  2404  798
##   yes  481  743
OddsRatio(dl5)
## [1] 4.653453

Theo kết quả trên, ta thấy, tỷ lệ khách hàng có số ngày kể từ khi bắt đầu sử dụng các dịch vụ tại công ty tài chính ít so với khách hàng có số ngày kể từ khi bắt đầu sử dụng các dịch vụ tại công ty tài chính nhiều mà có phản ứng tiêu cực với chiến dịch gấp 4,65 lần khách hàng có số ngày kể từ khi bắt đầu sử dụng các dịch vụ tại công ty tài chính ít so với khách hàng có số ngày kể từ khi bắt đầu sử dụng các dịch vụ tại công ty tài chính nhiều mà có phản ứng tích cực với chiến dịch.

dl6
##      poc
## y     failure success
##   no     2817     385
##   yes     484     740
OddsRatio(dl6)
## [1] 11.18697

Theo kết quả trên, ta thấy, tỷ lệ chiến dịch trước thất bại so với chiến dịch trước thành công mà khách hàng có phản ứng tiêu cực với chiến dịch gấp 11,19 lần chiến dịch trước thất bại so với chiến dịch trước thành công mà có phản ứng tích cực với chiến dịch.

dl7
##      cp1
## y      few many
##   no  2490  712
##   yes  998  226
OddsRatio(dl7)
## [1] 0.7919491

Theo kết quả trên, ta thấy, tỷ lệ khách hàng nhận cuộc gọi ít so với khách hàng nhận cuộc gọi nhiều mà có phản ứng tiêu cực với chiến dịch gấp 79,19% lần khách hàng nhận cuộc gọi ít so với khách hàng nhận cuộc gọi nhiều mà có phản ứng tích cực với chiến dịch.

dl8
##      ms
## y       no  yes
##   no  1459 1743
##   yes  570  654
OddsRatio(dl8)
## [1] 0.9604191

Theo kết quả trên, ta thấy, tỷ lệ khách hàng chưa kết hôn so với khách hàng đã kết hôn mà có phản ứng tiêu cực với chiến dịch gấp 96,04% lần khách hàng chưa kết hôn so với khách hàng đã kết hôn mà có phản ứng tích cực với chiến dịch.

4.3 Thống kê suy diễn

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

Giả thuyết \(H_0\): X, Y độc lập. Giá trị kiểm định: Phương pháp Chi bỉnh phương:

\[ \mathcal{X}^2 = \sum\limits_{i,j} \frac{(n_{ij}-\hat{\mu}_{ij})^2}{\hat{\mu}_{ij}} \]

Với \(n_{ij}\) là giá trị của ô i, j, \(\hat{\mu}_{ij}\) = \(\frac{n_i+n_j}{n}\).

  1. Kiểm định tính độc lập giữa y và age
chisq.test(dl1)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  dl1
## X-squared = 98.592, df = 1, p-value < 2.2e-16

Kết quả p_value < 2.2e-16 < 0,05, nên bác bỏ \(H_0\), tức là phản ứng của khách hàng về chiến dịch có liên quan tới độ tuổi của khách hàng.

  1. Kiểm định tính độc lập giữa y và housing
chisq.test(dl2)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  dl2
## X-squared = 0.39667, df = 1, p-value = 0.5288

Kết quả p_value = 0,5288 > 0,05, nên chấp nhận \(H_0\), tức là phản ứng của khách hàng về chiến dịch độc lập với việc khách hàng đã có nhà hay chưa.

  1. Kiểm định tính độc lập giữa y và loan
chisq.test(dl3)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  dl3
## X-squared = 0.53167, df = 1, p-value = 0.4659

Kết quả p_value = 0,4659 > 0,05, nên chấp nhận \(H_0\), tức là phản ứng của khách hàng về chiến dịch độc lập với việc khách hàng có đi vay hay không.

  1. Kiểm định tính độc lập giữa y và contact
chisq.test(dl4)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  dl4
## X-squared = 2.1488, df = 1, p-value = 0.1427

Kết quả p_value = 0,1427 > 0,05, nên chấp nhận \(H_0\), tức là phản ứng của khách hàng về chiến dịch độc lập với cách thức liên hệ với khách hàng.

  1. Kiểm định tính độc lập giữa y và duration
chisq.test(dl5)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  dl5
## X-squared = 497.96, df = 1, p-value < 2.2e-16

Kết quả p_value < 2.2e-16 < 0,05, nên bác bỏ \(H_0\), tức là phản ứng của khách hàng về chiến dịch có liên quan tới số ngày mà khách hàng đã bắt đầu sử dụng các dịch vụ tại công ty tài chính.

  1. Kiểm định tính độc lập giữa y và campaign
chisq.test(dl7)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  dl7
## X-squared = 7.3196, df = 1, p-value = 0.006821

Kết quả p_value = 0,006821 < 0,05, nên bác bỏ \(H_0\), tức là phản ứng của khách hàng về chiến dịch có liên quan tới số cuộc gọi mà khách hàng nhận được.

  1. Kiểm định tính độc lập giữa y và p_outcome
chisq.test(dl6)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  dl6
## X-squared = 1093.2, df = 1, p-value < 2.2e-16

Kết quả p_value < 2.2e-16 < 0,05, nên bác bỏ \(H_0\), tức là phản ứng của khách hàng về chiến dịch có liên quan tới kết quả của chiến dịch trước.

  1. Kiểm định tính độc lập giữa y và marital
chisq.test(dl8)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  dl8
## X-squared = 0.31979, df = 1, p-value = 0.5717

Kết quả p_value = 0,5717 > 0,05, nên chấp nhận \(H_0\), tức là phản ứng của khách hàng về chiến dịch độc lập với tình trạng hôn nhân của khách hàng.

  1. Kiểm định tính độc lập giữa y và education
dl9 <- table(y,ed)
dl9
##      ed
## y     basic high.school illiterate professional.course university.degree
##   no    859         889          1                 406              1047
##   yes   240         291          0                 188               505
chisq.test(dl9)
## Warning in chisq.test(dl9): Chi-squared approximation may be incorrect
## 
##  Pearson's Chi-squared test
## 
## data:  dl9
## X-squared = 47.496, df = 4, p-value = 1.202e-09

Kết quả p_value = 1,202e-09 < 0,05, nên bác bỏ \(H_0\), tức là phản ứng của khách hàng về chiến dịch có liên quan tới trình độ học vấn của khách hàng.

4.3.2 Khoảng ước lượng cho tỷ lệ

Công thức ước lượng tỷ lệ (cho một tổng thể)

\[ \hat{p} - Z_{\alpha/2}\sqrt{\frac{\hat{p}(1-\hat{p})}{n}} \leq P \leq \hat{p} + Z_{\alpha/2}\sqrt{\frac{\hat{p}(1-\hat{p})}{n}} \]

Ước lượng tỷ lệ phản ứng của khách hàng về chiến dich là tích cực có phải là 28% hay không. Tức là kiểm định giả thuyết: \(H_0\): p = 0,28.

tl <- dl[y == "1",]
prop.test(length(tl$y), length(dl$y), p = 0.28)
## 
##  1-sample proportions test with continuity correction
## 
## data:  length(tl$y) out of length(dl$y), null probability 0.28
## X-squared = 1719.8, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.28
## 95 percent confidence interval:
##  0.000000000 0.001081125
## sample estimates:
## p 
## 0

Kết quả cho thấy, p_value = 0,6207 > 5%, tức là chấp nhận \(H_0\). Tại mức ý nghĩa 5% phản ứng của khách hàng về chiến dịch là tích cực là 28% trên tổng 4426 khách hàng. Khoảng ước lượng với độ tin cậy 95% của tỷ lệ số căn hộ bán là (0,263457;0,2900292).

4.4 Mô hình hồi quy

Dữ liệu nhị phân là dữ liệu định tính chỉ nhận 2 giá trị: Đúng/Sai; Đồng ý/Không đồng ý;….

\[ logit(\pi) = log(\frac{\pi}{1-\pi}) = \beta_0 + \beta_1X_1 + \beta_2X_2 +...+ \beta_kX_k \]

\[ probit(\pi) = \Phi^{-1}(\pi) = \beta_0 + \beta_1X_1 + \beta_2X_2 +...+ \beta_kX_k \]

\[ cloglog(\pi) = log(-log(1-\pi)) = \beta_0 + \beta_1X_1 + \beta_2X_2 +...+ \beta_kX_k \]

Với \(\pi\) là xác suất để biến phụ thuộc nhận giá trị “thành công”. Đối với hàm glm phạm trù thứ hai của biến nhị phân thể hiện cho “thành công” (chúng ta sử dụng hàm levels() để kiểm tra thứ tự của các phạm trù một biến định tính).

4.4.1 Mô hình logit

lg <- glm(data = dl, factor(y) ~ age + dr + cp + poc, family = binomial(link = "logit"))
summary(lg)
## 
## Call:
## glm(formula = factor(y) ~ age + dr + cp + poc, family = binomial(link = "logit"), 
##     data = dl)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -4.9542  -0.5308  -0.4086   0.5578   2.5637  
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -3.0377379  0.1648957 -18.422  < 2e-16 ***
## age          0.0110384  0.0032193   3.429 0.000606 ***
## dr           0.0036513  0.0001912  19.097  < 2e-16 ***
## cp          -0.1449969  0.0346071  -4.190 2.79e-05 ***
## pocsuccess   2.4783401  0.0861454  28.769  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 5219.7  on 4425  degrees of freedom
## Residual deviance: 3698.3  on 4421  degrees of freedom
## AIC: 3708.3
## 
## Number of Fisher Scoring iterations: 5

\[ logit(\pi) = log(\frac{\pi}{1-\pi}) = -3,0377379 + 0,0110384age + 0,0036513dr - 0,1449969cp + 2,4783401pocsuccess \]

Kiểm định sự phù hợp của mô hình: Giả thuyết \(H_0\): Mô hình không phù hợp.

lr_test <- anova(lg, test = "Chisq")
p_value <- lr_test$Pr[2] 
p_value
## [1] 4.575191e-09

Ta thấy, p_value = 4,57519e-09 < 0,05, nên ta bác bỏ giả thuyết \(H_0\), mô hình logit là mô hình phù hợp với dữ liệu.

4.4.2 Mô hình probit

pb <- glm(data = dl, formula = factor(y) ~ age + dr + cp + poc, family = binomial(link = "probit"))
levels(factor(y))
## [1] "no"  "yes"
summary(pb)
## 
## Call:
## glm(formula = factor(y) ~ age + dr + cp + poc, family = binomial(link = "probit"), 
##     data = dl)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -6.6428  -0.5372  -0.4164   0.6212   2.5904  
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -1.7219221  0.0903111 -19.067  < 2e-16 ***
## age          0.0065774  0.0018196   3.615 0.000301 ***
## dr           0.0018379  0.0001019  18.043  < 2e-16 ***
## cp          -0.0751181  0.0187637  -4.003 6.24e-05 ***
## pocsuccess   1.4506044  0.0489015  29.664  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 5219.7  on 4425  degrees of freedom
## Residual deviance: 3728.8  on 4421  degrees of freedom
## AIC: 3738.8
## 
## Number of Fisher Scoring iterations: 6

\[ probit(\pi)= \Phi(1-\pi) = -1,7219221 + 0,0065774age + 0,0018379dr - 0,0751181cp + 1,4506044pocsuccess \]

Kiểm định sự phù hợp của mô hình: Giả thuyết \(H_0\): Mô hình không phù hợp.

lr_test <- anova(pb, test = "Chisq")
p_value <- lr_test$Pr[2] 
p_value
## [1] 7.970061e-09

Ta thấy, p_value = 7,970061e-09 < 0,05, nên ta bác bỏ giả thuyết \(H_0\), mô hình probit là mô hình phù hợp với dữ liệu.

4.4.3 Mô hình cloglog

cl <- glm(data = dl, formula = factor(y) ~ age + dr + cp + poc, family = binomial(link = "cloglog"))
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
levels(factor(y))
## [1] "no"  "yes"
summary(cl)
## 
## Call:
## glm(formula = factor(y) ~ age + dr + cp + poc, family = binomial(link = "cloglog"), 
##     data = dl)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -8.4904  -0.5506  -0.4684   0.5825   2.3837  
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -2.6035385  0.1168018 -22.290  < 2e-16 ***
## age          0.0090650  0.0022037   4.114  3.9e-05 ***
## dr           0.0020307  0.0001112  18.260  < 2e-16 ***
## cp          -0.1088710  0.0257175  -4.233  2.3e-05 ***
## pocsuccess   1.8698291  0.0608108  30.748  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 5219.7  on 4425  degrees of freedom
## Residual deviance: 3882.9  on 4421  degrees of freedom
## AIC: 3892.9
## 
## Number of Fisher Scoring iterations: 25

\[ cloglog(\pi) = -2,6035385 + 0,0090650age + 0,0020307dr - 0,1088710cp + 1,8698291pocsuccess \]

Kiểm định sự phù hợp của mô hình: Giả thuyết \(H_0\): Mô hình không phù hợp.

lr_test <- anova(cl, test = "Chisq")
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
p_value <- lr_test$Pr[2] 
p_value
## [1] 1.775139e-09

Ta thấy, p_value = 1,775139e-09 < 0,05, nên ta bác bỏ giả thuyết \(H_0\), mô hình cloglog là mô hình phù hợp với dữ liệu.

4.4.4 Lựa chọn mô hình

Ta đánh giá các mô hình hồi quy cổ điển dựa vào hệ số xác định mô hình (\(R^2\)), nhưng đối với các mô hình hồi quy tuyến tính tổng quát, ta sử dụng các tiêu chí sau:

  1. AIC được đề xuất bởi Akaike Hirotugu, một nhà thống kê học người Nhật. AIC là một tiêu chí được sử dụng một cách phổ biến để đánh giá một mô hình hồi quy được ước lượng bởi phương pháp Maximum Likekihood (ML). Một cách chung chung giá trị của AIC càng nhỏ thì mô hình càng tốt. AIC được tính bằng công thức sau:

\[ AIC = -2ln(L) + 2k \]

Với L là giá trị cực đại của hàm hợp lý (likelihood function) và k là số tham số của mô hình. Khi thực hiện việc ước lượng mô hình hồi quy bằng lệnh glm thì chỉ số AIC đã được tính toán và thể hiện trên bảng kết quả ( bằng lệnh summary).

  1. Deviance cũng là một tiêu chí rất phổ biến được sử dụng để đánh giá một mô hình hồi quy được ước lượng bởi phương pháp Hợp lý cực đại (ML). Một cách tổng quát, cũng giống như chỉ tiêu AIC, giá trị của Deviance càng nhỏ thì mô hình càng tốt. lưu ý: Khi thực hiện việc ước lượng mô hình hồi quy bằng lệnh glm thì chỉ số AIC và Deviance đã được tính toán và thể hiện trên bảng kết quả ( bằng lệnh summary).

  2. Là chỉ tiêu dùng để đánh giá mô hình hồi quy logistic, Brier Score được tính như sau:

\[ B = \frac{1}{n} \sum_{i=1}^{n} (p_i - o_i) \]

Trong đó: \(p_i\), \(o_i\) lần lượt là giá trị xác suất quan sát được, và giá trị xác suất tính ra từ mô hình. Giá trị của Brier Score càng nhỏ nghĩa là chênh lệch giữa xác suất thực tế và xác suất tính từ mô hình càng nhỏ, nghĩa là mô hình càng tốt.

# Tiêu chí AIC - Akaike Information Criterion
aic1 <- AIC(lg)
aic2 <- AIC(pb)
aic3 <- AIC(cl)
AIC <-cbind(aic1,aic2,aic3)
AIC
##          aic1     aic2     aic3
## [1,] 3708.307 3738.809 3892.852
# Tiêu chí Deviance
de1 <- deviance(lg)
de2 <- deviance(pb)
de3 <- deviance(cl)
deviance <- cbind(de1,de2,de3)
deviance
##           de1      de2      de3
## [1,] 3698.307 3728.809 3882.852
# Tiêu chí Brier Score
bs1 <- BrierScore(lg)
bs2 <- BrierScore(pb)
bs3 <- BrierScore(cl)
BrierScore <- cbind(bs1,bs2,bs3)
BrierScore
##            bs1       bs2      bs3
## [1,] 0.1300596 0.1308641 0.132992

Thông qua 3 kết quả các tiêu chí đánh giá mô hình trên, ta thấy rằng, mô hình probit có các giá trị AIC, Deviance và Brier Score nhỏ nhất. Vì vậy, mô hình logit là mô hình tốt nhất cho dữ liệu này.

\[ logit(\pi) = log(\frac{\pi}{1-\pi}) = -3,0377379 + 0,0110384age + 0,0036513dr - 0,1449969cp + 2,4783401pocsuccess \]

Với \(\pi\) là xác suất để biến y nhận giá trị “tích cực”.

Mô hình được đưa ra cuối cùng là mô hình hồi quy logistic với hàm liên kết probit có biến phụ thuộc là phản ứng của khách hàng với chiến dịch của công ty (y) và các biến độc lập. Theo kết quả hồi quy, mô hình có 3 yếu tố có ảnh hưởng đến phản ứng của khách hàng (y) là độ tuổi của khách hàng (age), số ngày kể từ khi bắt đầu sử dụng các dịch vụ tại công ty tài chính của khách hàng (dr), kết quả của chiến dịch trước (poc) ở mức ý nghĩa 5%.

5 Chương5. Kết luận và kiến nghị

5.1 Kết luận

Kết quả bài nghiên cứu cho thấy, với mức ý nghĩa 5%, độ tuổi của khách hàng (age), số ngày kể từ khi bắt đầu sử dụng các dịch vụ tại công ty tài chính của khách hàng (dr) có tác động đến phản ứng của khách hàng về chiến dịch (y). Cụ thể, 3 yếu tố này đều có tác động tích cực đến phản ứng của khách hàng.

5.2 Kiến nghị

Nhằm mục đích cải thiện hiệu quả hoạt động của công ty tài chính qua các chiến dịch. Dựa vào kết quả của bài nghiên cứu, tác giả đề xuất một số kiến nghị sau: Độ tuổi của khách hàng có ảnh hưởng đến phản ứng của khách hàng về chiến dịch, vì vậy chiến dịch mà công ty tài chính đưa ra cần hướng đến những khách hàng có độ tuổi trung niên trở lên để tăng phản ứng tích cực của chiến dịch hơn. Hơn nữa, số ngày kể từ khi bắt đầu sử dụng các dịch vụ tại công ty càng lâu thì phản hồi của khách hàng về chiến dịch sẽ tích cực, nên chiến dịch sẽ hướng đến các ưu đãi cho khách hàng thân thiết, lâu năm,… Và cuối cùng kết quả của chiến dịch trước thành công sẽ có tích cực với chiến dịch mới nên ta cần phải nhắm đến những khách hàng có phản hồi tích cực từ chiến dịch trước nhiều hơn.

6 Tài liệu tham khảo

[1] T. K. Thanh, T. M. Tường & V. A. L. Duy, Giáo trình Phân tích dữ liệu định tính, 2022.

LS0tDQp0aXRsZTogIlRp4buDdSBsdeG6rW4ga+G6v3QgdGjDumMgbcO0biINCmF1dGhvcjogIk5ndXnhu4VuIFRo4buLIFnhur9uIE5oaSINCmRhdGU6ICIyMDIzLTA4LTAxIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQ0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICB0b2NfZmxvYXQ6DQogICAgICBjb2xsYXBzZWQ6IGZhbHNlDQogICAgICBkZl9wcmludDogcGFnZWQNCi0tLQ0KDQooaHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL2ZpbGUvZC8xcXp2MkRTZVBjQTVEa0dhaWFObHB2M0c4UWhfMkxHT3Avdmlldz91c3A9ZHJpdmVfbGluaykNCihodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC8xNWNQM0JmbTNSaEFoSEVseEFENDdNdmM1cVctQU03a0lEWlVKQUZ5TEZpZy9lZGl0P3VzcD1zaGFyaW5nKQ0KYGBge3J9DQpyZXF1aXJlKHRpZHl2ZXJzZSkNCmxpYnJhcnkoRGVzY1Rvb2xzKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeSh4bHN4KQ0Kc2V0d2QoIkM6L1VzZXJzL1lFTiBOSEkvRG9jdW1lbnRzL1BURExEVCIpDQpkbCA8LSByZWFkLnhsc3goImRsLnhsc3giLDEpDQphZ2UgPSBkbCRhZ2UNCm1zID0gZGwkbWFyaXRhbA0KZWQgPSBkbCRlZHVjYXRpb24NCmhzID0gZGwkaG91c2luZw0KbG4gPSBkbCRsb2FuDQpjdCA9IGRsJGNvbnRhY3QNCmRyID0gZGwkZHVyYXRpb24NCmNwID0gZGwkY2FtcGFpZ24NCnBvYyA9IGRsJHBvdXRjb21lDQp5ID0gZGwkeQ0KYGBgDQoNCiMgKipDaMawxqFuZyAxLiBHaeG7m2kgdGhp4buHdSoqDQoNCioqxJDhu4EgdMOgaToqKiAiUGjDom4gdMOtY2ggY8OhYyB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIMSR4bq/biBoaeG7h3UgcXXhuqMgY2hp4bq/biBk4buLY2ggdGnhur9wIHRo4buLIGPhu6dhIGPDtG5nIHR5IHTDoGkgY2jDrW5oIi4NCg0KIyMgTMO9IGRvIGNo4buNbiDEkeG7gSB0w6BpDQoNCkPDtG5nIHR5IHTDoGkgY2jDrW5oIGzDoCBt4buZdCB0cm9uZyBuaOG7r25nIGxv4bqhaSBow6xuaCB04buVIGNo4bupYyB0w61uIGThu6VuZyBwaGkgbmfDom4gaMOgbmcsIHR1eSBuaGnDqm4gduG6q24gdGjhu7FjIGhp4buHbiBt4buZdCBz4buRIGhv4bqhdCDEkeG7mW5nIG5nw6JuIGjDoG5nIHRoZW8gTHXhuq10IHThu5UgY2jhu6ljIHTDrW4gZOG7pW5nIDIwMTAuIE5nb+G6oWkgdHLhu6sgbeG7mXQgc+G7kSBob+G6oXQgxJHhu5luZyBuaMawIG5o4bqtbiB0aeG7gW4gZ+G7rWkgY8OhYyBuaMOibiB2w6AgY3VuZyDhu6luZyBjw6FjIGThu4tjaCB24bulIHRoYW5oIHRvw6FuIHF1YSB0w6BpIGtob+G6o24gY+G7p2Ega2jDoWNoIGjDoG5nLiBDw7RuZyB0eSB0w6BpIGNow61uaCB24bubaSB2YWkgdHLDsiBuaOG6sW0gdGjDumMgxJHhuql5IG7hu4FuIGtpbmggdOG6vyBwaMOhdCB0cmnhu4NuLCB04bqhbyB24buRbiBjaG8gbuG7gW4ga2luaCB04bq/LCB0aMO6YyDEkeG6qXkgY8OhYyBob+G6oXQgxJHhu5luZyBj4bunYSBjw6FjIE5IVE0gbeG7nyBy4buZbmcgdsOgIGhp4buHbiDEkeG6oWkgaMOzYSBo4buHIHRo4buRbmcgY+G7p2EgbmfDom4gaMOgbmcsIGdpw7pwIMSRaeG7gXUgaMOgbmggY2jDrW5oIHPDoWNoIHRp4buBbiB04buHIGPhu6dhIG5nw6JuIGjDoG5nIHRydW5nIMawxqFuZywgxJHDoXAg4bupbmcgxJHhu6cgdsOgIGvhu4twIHRo4budaSBuaHUgY+G6p3UgduG7gSB24buRbiB24bubaSBjaGkgcGjDrSB0aOG6pXAgbmjhuqV0LiBOZ2/DoGkgcmEsIGtoYWkgdGjDoWMgxJHGsOG7o2MgbeG7jWkgbmd14buTbiB24buRbiBwaOG7pWMgduG7pSBjaG8gxJHhuqd1IHTGsCBwaMOhdCB0cmnhu4NuIHPhuqNuIHh14bqldCBraW5oIGRvYW5oLiBWw6wgduG6rXksIHZp4buHYyBj4bqjaSB0aGnhu4duIGhp4buDdSBxdeG6oyBob+G6oXQgxJHhu5luZyBj4bunYSBjw6FjIGPDtG5nIHR5IHTDoGkgY2jDrW5oIGzDoCBy4bqldCBj4bqnbiB0aGnhur90IHRow7RuZyBxdWEgY8OhYyBjaGnhur9uIGThu4tjaCBj4bunYSBjw7RuZyB0eS4gQsOgaSB0aeG7g3UgbHXhuq1uIHBow6JuIHTDrWNoIGPDoWMgeeG6v3UgdOG7kSDhuqNuaCBoxrDhu59uZyDEkeG6v24gcGjhuqNuIOG7qW5nIGPhu6dhIGtow6FjaCBow6BuZyB24buBIGNoaeG6v24gZOG7i2NoIGPhu6dhIGPDtG5nIHR5IHTDoGkgY2jDrW5oIG5o4bqxbSBt4bulYyDEkcOtY2ggdMOsbSByYSBjw6FjIHnhur91IHThu5EgY8OzIOG6o25oIGjGsOG7n25nIHRpw6p1IGPhu7FjIMSR4bq/biBjaGnhur9uIGThu4tjaCDEkeG7k25nIHRo4budaSB0aGF5IMSR4buVaSDEkeG7gyBwaMO5IGjhu6NwIHbhu5tpIGtow6FjaCBow6BuZyBoxqFuIHRyb25nIGPDoWMgY2hp4bq/biBk4buLY2ggdHJvbmcgdMawxqFuZyBsYWkuDQoNCiMjIE3hu6VjIHRpw6p1IG5naGnDqm4gY+G7qXUNCg0KxJDhuqd1IHRpw6puIGPhuqduIHjDoWMgxJHhu4tuaCBjw6FjIHnhur91IHThu5EgY8OzIOG6o25oIGjGsOG7n25nIMSR4bq/biBwaOG6o24g4bupbmcgY+G7p2Ega2jDoWNoIGjDoG5nIHbhu4EgY2hp4bq/biBk4buLY2gsIHNhdSDEkcOzIMSRxrBhIHJhIG3hu5l0IHPhu5EgZ2nhuqNpIHBow6FwIMSR4buDIGPhuqNpIHRoaeG7h24gaGnhu4d1IHF14bqjIGPhu6dhIGNoaeG6v24gZOG7i2NoIHRyb25nIHTGsMahbmcgbGFpIGPhu6dhIGPDtG5nIHR5IHTDoGkgY2jDrW5oLg0KDQojIyDEkOG7kWkgdMaw4bujbmcgbmdoacOqbiBj4bupdQ0KDQpCw6BpIG5naGnDqm4gY+G7qXUgbsOgeSBuZ2hpw6puIGPhu6l1IGPDoWMgeeG6v3UgdOG7kSDhuqNuaCBoxrDhu59uZyDEkeG6v24gcGjhuqNuIOG7qW5nIGPhu6dhIGtow6FjaCBow6BuZyB24buBIGNoaeG6v24gZOG7i2NoIGPhu6dhIGPDtG5nIHR5IHTDoGkgY2jDrW5oLg0KDQojIyBQaMawxqFuZyBwaMOhcCBuZ2hpw6puIGPhu6l1DQoNCkLDoGkgbmdoacOqbiBj4bupdSBuw6B5IHPhu60gZOG7pW5nIHBoxrDGoW5nIHBow6FwIHBow6JuIHTDrWNoIGThu68gbGnhu4d1IMSR4buLbmggdMOtbmguIA0KDQojIyBL4bq/dCBj4bqldSBiw6BpIG5naGnDqm4gY+G7qXUNCg0KKipDaMawxqFuZyBt4buZdDoqKiBHaeG7m2kgdGhp4buHdSB04buVbmcgcXVhbiBuZ2hpw6puIGPhu6l1LiBDaMawxqFuZyBuw6B5IGdp4bubaSB0aGnhu4d1IHThu5VuZyANCnF1YW4gbmdoacOqbiBj4bupdSwgYmFvIGfhu5NtOiDEkeG6t3QgduG6pW4gxJHhu4EgbmdoacOqbiBj4bupdSwgbeG7pWMgdGnDqnUgbmdoacOqbiBj4bupdSwgxJHhu5FpIHTGsOG7o25nIA0KbmdoacOqbiBj4bupdSwgcGjhuqFtIHZpIHbDoCBwaMawxqFuZyBwaMOhcCBuZ2hpw6puIGPhu6l1IHbDoCBr4bq/dCBj4bqldSBiw6BpIG5naGnDqm4gY+G7qXUuIA0KDQoqKkNoxrDGoW5nIGhhaToqKiBDxqEgc+G7nyBsw70gdGh1eeG6v3QgbmdoacOqbiBj4bupdS4gQ2jGsMahbmcgbsOgeSBiYW8gZ+G7k206IGPDoWMga2jDoWkgbmnhu4dtLCANCmPDoWMgbMO9IHRodXnhur90IGPDtG5nIHR5IHTDoGkgY2jDrW5oLg0KDQoqKkNoxrDGoW5nIGJhOioqIFBoxrDGoW5nIHBow6FwIG5naGnDqm4gY+G7qXUgdsOgIGThu68gbGnhu4d1IG5naGnDqm4gY+G7qXUg4oCTIE3DtCB04bqjIHBoxrDGoW5nIA0KcGjDoXAgbmdoacOqbiBj4bupdSB2w6Agbmd14buTbiBk4buvIGxp4buHdSBz4butIGThu6VuZywgeMOieSBk4buxbmcgbcO0IGjDrG5oIG5naGnDqm4gY+G7qXUsIGdp4bqjaSB0aMOtY2ggY8OhYyBiaeG6v24gY8OzIHRyb25nIG3DtCBow6xuaC4gDQoNCioqQ2jGsMahbmcgYuG7kW46KiogUGjDom4gdMOtY2ggZOG7ryBsaeG7h3UgdsOgIGvhur90IHF14bqjIG5naGnDqm4gY+G7qXUuIA0KDQoqKkNoxrDGoW5nIG7Eg206KiogS+G6v3QgbHXhuq1uIHbDoCBraeG6v24gbmdo4buLLiBDaMawxqFuZyBuw6B5IGJhbyBn4buTbSBr4bq/dCBsdeG6rW4gY2h1bmcgY+G7p2EgYsOgaSBuZ2hpw6puIGPhu6l1LiBTYXUgxJHDsywgxJHGsGEgcmEgbeG7mXQgc+G7kSBraeG6v24gbmdo4buLIGThu7FhIHRyw6puIGvhur90IHF14bqjIGLDoGkgbmdoacOqbiBj4bupdS4NCg0KIyAqKkNoxrDGoW5nIDIuIEPGoSBz4bufIGzDvSB0aHV54bq/dCoqDQoNCiMjIEPDtG5nIHR5IHTDoGkgY2jDrW5oDQoNClRoZW8ga2hv4bqjbiA0IMSQaeG7gXUgNCBMdeG6rXQgQ8OhYyB04buVIGNo4bupYyB0w61uIGThu6VuZyAyMDEwIHRow6wgdOG7lSBjaOG7qWMgdMOtbiBk4bulbmcgcGhpIG5nw6JuIGjDoG5nIGzDoCBsb+G6oWkgaMOsbmggdOG7lSBjaOG7qWMgdMOtbiBk4bulbmcgxJHGsOG7o2MgdGjhu7FjIGhp4buHbiBt4buZdCBob+G6t2MgbeG7mXQgc+G7kSBob+G6oXQgxJHhu5luZyBuZ8OibiBow6BuZyB0aGVvIHF1eSDEkeG7i25oLCB0cuG7qyBjw6FjIGhv4bqhdCDEkeG7mW5nIG5o4bqtbiB0aeG7gW4gZ+G7rWkgY+G7p2EgY8OhIG5ow6JuIHbDoCBjdW5nIOG7qW5nIGPDoWMgZOG7i2NoIHbhu6UgdGhhbmggdG/DoW4gcXVhIHTDoGkga2hv4bqjbiBj4bunYSBraMOhY2ggaMOgbmcuIA0KVOG7lSBjaOG7qWMgdMOtbiBk4bulbmcgcGhpIG5nw6JuIGjDoG5nIGJhbyBn4buTbSBjw7RuZyB0eSB0w6BpIGNow61uaCwgY8O0bmcgdHkgY2hvIHRodcOqIHTDoGkgY2jDrW5oIHbDoCBjw6FjIHThu5UgY2jhu6ljIHTDrW4gZOG7pW5nIHBoaSBuZ8OibiBow6BuZyBraMOhYy4NCk5oxrAgduG6rXksIGPDtG5nIHR5IHTDoGkgY2jDrW5oIGzDoCBkb2FuaCBuZ2hp4buHcCB0aHXhu5ljIGxv4bqhaSBow6xuaCB04buVIGNo4bupYyB0w61uIGThu6VuZyBwaGkgbmfDom4gaMOgbmcuDQoNCiMjIEhv4bqhdCDEkeG7mW5nIG5nw6JuIGjDoG5nIGPhu6dhIGPDtG5nIHR5IHTDoGkgY2jDrW5oDQoNCi0gQ8O0bmcgdHkgdMOgaSBjaMOtbmggxJHGsOG7o2MgdGjhu7FjIGhp4buHbiBt4buZdCBob+G6t2MgbeG7mXQgc+G7kSBob+G6oXQgxJHhu5luZyBuZ8OibiBow6BuZyBzYXUgxJHDonk6DQoNCisgTmjhuq1uIHRp4buBbiBn4butaSBj4bunYSB04buVIGNo4bupYzsNCg0KKyBQaMOhdCBow6BuaCBjaOG7qW5nIGNo4buJIHRp4buBbiBn4butaSwga+G7syBwaGnhur91LCB0w61uIHBoaeG6v3UsIHRyw6FpIHBoaeG6v3UgxJHhu4MgaHV5IMSR4buZbmcgduG7kW4gY+G7p2EgdOG7lSBjaOG7qWM7DQoNCisgVmF5IHbhu5FuIGPhu6dhIHThu5UgY2jhu6ljIHTDrW4gZOG7pW5nLCB04buVIGNo4bupYyB0w6BpIGNow61uaCB0cm9uZyBuxrDhu5tjIHbDoCBuxrDhu5tjIG5nb8OgaSB0aGVvIHF1eSDEkeG7i25oIGPhu6dhIHBow6FwIGx14bqtdDsgdmF5IE5nw6JuIGjDoG5nIE5ow6Agbsaw4bubYyBkxrDhu5tpIGjDrG5oIHRo4bupYyB0w6FpIGPhuqVwIHbhu5FuIHRoZW8gcXV5IMSR4buLbmggY+G7p2EgTHXhuq10IE5nw6JuIGjDoG5nIE5ow6Agbsaw4bubYyBWaeG7h3QgTmFtOw0KDQorIENobyB2YXksIGJhbyBn4buTbSBj4bqjIGNobyB2YXkgdHLhuqMgZ8OzcCwgY2hvIHZheSB0acOqdSBkw7luZzsNCg0KKyBC4bqjbyBsw6NuaCBuZ8OibiBow6BuZzsNCg0KKyBDaGnhur90IGto4bqldSwgdMOhaSBjaGnhur90IGto4bqldSBjw7RuZyBj4bulIGNodXnhu4NuIG5oxrDhu6NuZywgY8OhYyBnaeG6pXkgdOG7nSBjw7MgZ2nDoSBraMOhYzsNCg0KKyBQaMOhdCBow6BuaCB0aOG6uyB0w61uIGThu6VuZywgYmFvIHRoYW5oIHRvw6FuLCBjaG8gdGh1w6ogdMOgaSBjaMOtbmggdsOgIGPDoWMgaMOsbmggdGjhu6ljIGPhuqVwIHTDrW4gZOG7pW5nIGtow6FjIHNhdSBraGkgxJHGsOG7o2MgTmfDom4gaMOgbmcgTmjDoCBuxrDhu5tjIGNo4bqlcCB0aHXhuq1uLg0KDQotIENow61uaCBwaOG7pyBxdXkgxJHhu4tuaCBj4bulIHRo4buDIMSRaeG7gXUga2nhu4duIMSR4buDIGPDtG5nIHR5IHTDoGkgY2jDrW5oIHRo4buxYyBoaeG7h24gaG/huqF0IMSR4buZbmcgbmfDom4gaMOgbmcgcXV5IMSR4buLbmguDQoNCi0gxJDhu5FpIHbhu5tpIGPDoWMgaG/huqF0IMSR4buZbmcga2luaCBkb2FuaCBraMOhYywgY8O0bmcgdHkgdMOgaSBjaMOtbmggxJHGsOG7o2MgdGjhu7FjIGhp4buHbiBuaOG7r25nIGzEqW5oIHbhu7FjIGJhbyBn4buTbToNCg0KKyBN4bufIHTDoGkga2hv4bqjbiB0aeG7gW4gZ+G7rWkgdOG6oWkgTmfDom4gaMOgbmcgTmjDoCBuxrDhu5tjIGhv4bq3YyBt4bufIHTDoGkga2hv4bqjbiB0aGFuaCB0b8OhbiB04bqhaSBuZ8OibiBow6BuZyB0aMawxqFuZyBt4bqhaSwgY2hpIG5ow6FuaCBuZ8OibiBow6BuZyBuxrDhu5tjIG5nb8OgaS4gTmdvw6BpIHJhLCBjw7RuZyB0eSB0w6BpIGNow61uaCDEkcaw4bujYyBwaMOpcCB0aOG7sWMgaGnhu4duIGhv4bqhdCDEkeG7mW5nIHBow6F0IGjDoG5oIHRo4bq7IHTDrW4gZOG7pW5nIMSRxrDhu6NjIG3hu58gdMOgaSBraG/huqNuIHThuqFpIG5nw6JuIGjDoG5nIG7GsOG7m2Mgbmdvw6BpIHRoZW8gcXV5IMSR4buLbmggY+G7p2EgcGjDoXAgbHXhuq10IHbhu4Egbmdv4bqhaSBo4buRaS4NCg0KKyBHw7NwIHbhu5FuLCBtdWEgY+G7lSBwaOG6p24gY+G7p2EgZG9hbmggbmdoaeG7h3AsIHF14bu5IMSR4bqndSB0xrAuDQoNCisgVGjDoG5oIGzhuq1wLCBtdWEgbOG6oWkgY8O0bmcgdHkgY29uLCBjw7RuZyB0eSBsacOqbiBr4bq/dCBob+G6oXQgxJHhu5luZyB0cm9uZyBjw6FjIGzEqW5oIHbhu7FjIGLhuqNvIGhp4buDbSwgY2jhu6luZyBraG/DoW4sIHF14bqjbiBsw70gbuG7oyB2w6Aga2hhaSB0aMOhYyB0w6BpIHPhuqNuIHNhdSBraGkgxJHGsOG7o2MgTmfDom4gaMOgbmcgTmjDoCBuxrDhu5tjIGNo4bqlcCB0aHXhuq1uIGLhurFuZyB2xINuIGLhuqNuLg0KDQorIFRp4bq/cCBuaOG6rW4gduG7kW4g4buneSB0aMOhYyBj4bunYSBDaMOtbmggcGjhu6csIHThu5UgY2jhu6ljLCBjw6EgbmjDom4gxJHhu4MgdGjhu7FjIGhp4buHbiBjw6FjIGhv4bqhdCDEkeG7mW5nIMSR4bqndSB0xrAgdsOgbyBjw6FjIGThu7Egw6FuIHPhuqNuIHh14bqldCwga2luaCBkb2FuaCwgY+G6pXAgdMOtbiBk4bulbmcgxJHGsOG7o2MgcGjDqXA7IOG7p3kgdGjDoWMgduG7kW4gY2hvIHThu5UgY2jhu6ljIHTDrW4gZOG7pW5nIHRo4buxYyBoaeG7h24gY+G6pXAgdMOtbiBk4bulbmcuIFZp4buHYyB0aeG6v3Agbmjhuq1uIHbhu5FuIOG7p3kgdGjDoWMgY+G7p2EgY8OhIG5ow6JuIHbDoCDhu6d5IHRow6FjIHbhu5FuIGNobyBjw6FjIHThu5UgY2jhu6ljIHTDrW4gZOG7pW5nIGPhuqVwIHTDrW4gZOG7pW5nIHRo4buxYyBoaeG7h24gdGhlbyBxdXkgxJHhu4tuaCBj4bunYSBOZ8OibiBow6BuZyBOaMOgIG7GsOG7m2MuDQoNCisgVGhhbSBnaWEgdGjhu4sgdHLGsOG7nW5nIHRp4buBbiB04buHIHRoZW8gcXV5IMSR4buLbmggdOG6oWkgxJBp4buBdSAxMDQgY+G7p2EgTHXhuq10IG7DoHkuDQoNCisgTXVhLCBiw6FuIHRyw6FpIHBoaeG6v3UgQ2jDrW5oIHBo4bunLCB0csOhaSBwaGnhur91IGRvYW5oIG5naGnhu4dwLg0KDQorIELhuqNvIGzDo25oIHBow6F0IGjDoG5oIHRyw6FpIHBoaeG6v3UgQ2jDrW5oIHBo4bunLCB0csOhaSBwaGnhur91IGRvYW5oIG5naGnhu4dwOyDEkeG6oWkgbMO9IHBow6F0IGjDoG5oIHRyw6FpIHBoaeG6v3UsIGPhu5UgcGhp4bq/dSB2w6AgY8OhYyBsb+G6oWkgZ2nhuqV5IHThu50gY8OzIGdpw6Ega2jDoWMuDQoNCisgS2luaCBkb2FuaCwgY3VuZyDhu6luZyBk4buLY2ggduG7pSBuZ2/huqFpIGjhu5FpIHRoZW8gcXV5IMSR4buLbmggY+G7p2EgTmfDom4gaMOgbmcgTmjDoCBuxrDhu5tjLg0KKyBMw6BtIMSR4bqhaSBsw70ga2luaCBkb2FuaCBi4bqjbyBoaeG7g20uDQorIEN1bmcg4bupbmcgZOG7i2NoIHbhu6UgdMawIHbhuqVuIHRyb25nIGzEqW5oIHbhu7FjIG5nw6JuIGjDoG5nLCB0w6BpIGNow61uaCwgxJHhuqd1IHTGsC4NCisgQ3VuZyDhu6luZyBk4buLY2ggduG7pSBxdeG6o24gbMO9LCBi4bqjbyBxdeG6o24gdMOgaSBz4bqjbiBj4bunYSBraMOhY2ggaMOgbmcuIA0KDQojIyBWYWkgdHLDsiBj4bunYSBjw7RuZyB0eSB0w6BpIGNow61uaA0KDQpDw7RuZyB0eSB0w6BpIGNow61uaCB24bubaSB2YWkgdHLDsiBuaOG6sW0gdGjDumMgxJHhuql5IG7hu4FuIGtpbmggdOG6vyBwaMOhdCB0cmnhu4NuLCB04bqhbyB24buRbiBjaG8gbuG7gW4ga2luaCB04bq/LCB0aMO6YyDEkeG6qXkgY8OhYyBob+G6oXQgxJHhu5luZyBj4bunYSBjw6FjIE5IVE0gbeG7nyBy4buZbmcgdsOgIGhp4buHbiDEkeG6oWkgaMOzYSBo4buHIHRo4buRbmcgY+G7p2EgbmfDom4gaMOgbmcsIGdpw7pwIMSRaeG7gXUgaMOgbmggY2jDrW5oIHPDoWNoIHRp4buBbiB04buHIGPhu6dhIG5nw6JuIGjDoG5nIHRydW5nIMawxqFuZywgxJHDoXAg4bupbmcgxJHhu6cgdsOgIGvhu4twIHRo4budaSBuaHUgY+G6p3UgduG7gSB24buRbiB24bubaSBjaGkgcGjDrSB0aOG6pXAgbmjhuqV0LiBOZ2/DoGkgcmEsIGtoYWkgdGjDoWMgxJHGsOG7o2MgbeG7jWkgbmd14buTbiB24buRbiBwaOG7pWMgduG7pSBjaG8gxJHhuqd1IHTGsCBwaMOhdCB0cmnhu4NuIHPhuqNuIHh14bqldCBraW5oIGRvYW5oLg0KDQojICoqQ2jGsMahbmcgMy4gUGjGsMahbmcgcGjDoXAgbmdoacOqbiBj4bupdSB2w6AgZOG7ryBsaeG7h3UgbmdoacOqbiBj4bupdSoqDQoNCiMjIENo4buNbiBiaeG6v24gcGjhu6UgdGh14buZYw0KDQpOaOG6sW0gxJHhu4MgcGjDom4gdMOtY2ggY8OhYyB54bq/dSB04buRIOG6o25oIGjGsOG7n25nIMSR4bq/biBwaOG6o24g4bupbmcgduG7gSBjaGnhur9uIGThu4tjaCBj4bunYSBraMOhY2ggaMOgbmcsIGNo4buNbiBiaeG6v24gcGjhu6UgdGh14buZYyBsw6AgYmnhur9uIHkgdGjhu4MgaGnhu4duIGtow6FjaCBow6BuZyB0aOG7gyBoaeG7h24ga2jDoWNoIGjDoG5nIGPDsyBwaOG6o24g4bupbmcgbmjGsCB0aOG7gyBuw6BvIHbhu5tpIGNoaeG6v24gZOG7i2NoIGPhu6dhIGPDtG5nIHR5Lg0KDQojIyBNw7QgaMOsbmggbmdoacOqbiBj4bupdQ0KDQokJCB5ID0gXGJldGFfMCArIFxiZXRhXzFhZ2UgKyBcYmV0YV8ybXMgKyBcYmV0YV8zZWQgKyBcYmV0YV80aHMgKyBcYmV0YV81bG4gKyBcYmV0YV82Y3QgKyBcYmV0YV83ZHIrIFxiZXRhXzhjcCArIFxiZXRhXzlwb2MgJCQNCg0KIyMgTcO0IHThuqMgYmnhur9uIHRyb25nIG3DtCBow6xuaCBuZ2hpw6puIGPhu6l1DQoNCjEuIGFnZTogxJDhu5kgdHXhu5VpIGPhu6dhIGtow6FjaCBow6BuZw0KMi4gbXMgKG1hcml0YWwpOiBUcuG6oW5nIHRow6FpIGjDtG4gbmjDom4gY+G7p2Ega2jDoWNoIGjDoG5nLiAoeWVzL25vKQ0KMy4gZWQgKGVkdWNhdGlvbik6IFRyw6xuaCDEkeG7mSBo4buNYyB24bqlbiBj4bunYSBraMOhY2ggaMOgbmcuICh1bml2ZXJzaXR5LmRlZ3JlZS9oaWdoLnNjaG9vbC9iYXNpYy9pbGxpdGVyYXRlL3Byb2Zlc3Npb25hbC5jb3Vyc2UpDQo0LiBocyAoaG91c2luZyk6IEtow6FjaCBow6BuZyDEkcOjIG11YSBuaMOgIGhheSBjaMawYS4gKHllcy9ubykNCjUuIGxuIChsb2FuKTogS2jDoWNoIGjDoG5nIGPDsyB2YXkg4bufIGPDtG5nIHR5IHTDoGkgY2jDrW5oIGhheSBjaMawYS4gKHllcy9ubykNCjYuIGN0IChjb250YWN0KTogQ8OhY2ggdGjhu6ljIGxpw6puIGzhuqFjIHbhu5tpIGtow6FjaCBow6BuZy4gKGNlbGx1bGFyL3RlbGVwaG9uZSkNCjcuIGRyIChkdXJhdGlvbik6IFPhu5EgbmfDoHkga+G7gyB04burIGtoaSBraMOhY2ggaMOgbmcgc+G7rSBk4bulbmcgY8OhYyBk4buLY2ggduG7pSB04bqhaSBjw7RuZyB0eSB0w6BpIGNow61uaC4NCjguIGNwIChjYW1wYWlnbik6IFPhu5EgY3Xhu5ljIGfhu41pIMSRw6MgdGjhu7FjIGhp4buHbiBjaG8gY2hp4bq/biBk4buLY2ggaGnhu4duIHThuqFpLg0KOS4gcG9jIChwX291dGNvbWUpOiBL4bq/dCBxdeG6oyBj4bunYSBjaGnhur9uIGThu4tjaCB0csaw4bubYy4gKGZhaWx1cmUvc3VjY2VzcykNCjEwLiB5OiBLaMOhY2ggaMOgbmcgY8OzIHBo4bqjbiDhu6luZyB0w61jaCBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaCBj4bunYSBjw7RuZyB0eSB0w6BpIGNow61uaCBoYXkga2jDtG5nLiAoeWVzL25vKQ0KDQpOZ3Xhu5NuIGThu68gbGnhu4d1OiAoaHR0cHM6Ly93d3cua2FnZ2xlLmNvbS9kYXRhc2V0cy9wa2RhcmFiaS9iYW5rLW1hcmtldGluZy1kYXRhc2V0KQ0KDQpgYGB7cn0NCnN0cihkbCkNCmBgYA0KDQpUaMO0bmcgcXVhIGLhuqNuZyBk4buvIGxp4buHdSB0csOqbiwgdGEgdGjhuqV5IGThu68gbGnhu4d1IG5naGnDqm4gY+G7qXUgZ+G7k20gNDQyNiBxdWFuIHPDoXQgdsOgIDEwIGJp4bq/biBraMOhYyBuaGF1LiBUcm9uZyDEkcOzLCBjw7MgNyBiaeG6v24gxJHhu4tuaCB0w61uaCB2w6AgMyBiaeG6v24gxJHhu4tuaCBsxrDhu6NuZy4NCg0KIyMgROG7ryBsaeG7h3UgbmdoacOqbiBj4bupdQ0KDQpC4buZIGThu68gbGnhu4d1IMSRxrDhu6NjIHRodSB0aOG6rXAgdOG7qyBjw6FjIGhhaSBjaGnhur9uIGThu4tjaCB0aeG6v3AgdGjhu4sgY+G7p2EgbeG7mXQgdOG7lSBjaOG7qWMgdMOgaSBjaMOtbmgsIG5o4bqxbSBt4bulYyDEkcOtY2ggY+G6o2kgdGhp4buHbiBoaeG7h3UgcXXhuqMgY+G7p2EgY8OhYyBjaGnhur9uIGThu4tjaCB0aeG6v3AgdGjhu4sgdHJvbmcgdMawxqFuZyBsYWkuIFbDrCB24bqteSwgcGjDom4gdMOtY2ggeGVtIGhp4buHdSBxdeG6oyBj4bunYSBjaGnhur9uIGThu4tjaCB0aeG6v3AgdGjhu4sgdHLGsOG7m2MgxJHDsy4gU2F1IMSRw7MsIHjDoWMgxJHhu4tuaCBjw6FjIHnhur91IHThu5Eg4bqjbmggaMaw4bufbmcgxJHhur9uIGvhur90IHF14bqjIGPhu6dhIGNoaeG6v24gZOG7i2NoLCBuaOG6sW0geMOhYyDEkeG7i25oIGPDoWMgY2hp4bq/biBsxrDhu5tjIHThu5F0IGjGoW4gdHJvbmcgdMawxqFuZyBsYWkuDQoNCkThu68gbGnhu4d1IGfhu5NtIDQ0MjYgcXVhbiBzw6F0IHbDoCAxMCBiaeG6v24uDQoNCiMgKipDaMawxqFuZyA0LiBQaMOibiB0w61jaCBk4buvIGxp4buHdSB2w6Aga+G6v3QgcXXhuqMgbmdoacOqbiBj4bupdSoqDQoNCiMjIFRo4buRbmcga8OqIG3DtCB04bqjIGJp4bq/biBwaOG7pSB0aHXhu5ljDQoNCmBgYHtyfQ0KdGFibGUoeSkNCnRhYmxlKHkpL3N1bSh0YWJsZSh5KSkNCmRsIHw+IGdncGxvdChhZXMoeCA9IHksIHkgPSBhZnRlcl9zdGF0KGNvdW50KSkpICsNCmdlb21fYmFyKGZpbGwgPSAndmlvbGV0JykgK2dlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSkpLCBzdGF0ID0nY291bnQnLCBjb2xvciA9ICdibGFjaycsIHZqdXN0ID0gLSAuNSkgK2xhYnMoeCA9ICdQaOG6o24g4bupbmcgduG7gSBjaGnhur9uIGThu4tjaCcsIHkgPSAnU+G7kSBraMOhY2ggaMOgbmcnKQ0KYGBgDQoNCiMjIFRo4buRbmcga8OqIG3DtCB04bqjIGNobyBjw6FjIGJp4bq/biDEkeG7mWMgbOG6rXANCg0KQuG6o25nIHThuqduIHPhu5EvdOG6p24gc3XhuqV0IGPDsm4gxJHGsOG7o2MgZ+G7jWkgbMOgIGLhuqNuZyBuZ+G6q3Ugbmhpw6puLiBLaGkgbOG6rXAgYuG6o25nIG5n4bqrdSBuaGnDqm4gY2hvIDIgYmnhur9uIHRow6wgYuG6o25nIMSRw7MgxJHGsOG7o2MgZ+G7jWkgbMOgIGLhuqNuZyBuZ+G6q3Ugbmhpw6puIDIgY2hp4buBdSwgbuG6v3UgbOG6rXAgY2hvIDMgYmnhur9uIHRow6wgZ+G7jWkgbMOgIG5n4bqrdSBuaGnDqm4gMyBjaGnhu4F1IHbDoCBj4bupIHRo4bq/IHTEg25nIGzDqm4uDQrEkOG7kWkgduG7m2kgYuG6o25nIHThuqduIHPhu5EsIHRhIHF1eSDGsOG7m2MgYmnhur9uIHBo4bulIHRodeG7mWMgxJHGsOG7o2Mgc+G6r3AgeOG6v3AgdGhlbyBj4buZdCB2w6AgYmnhur9uIMSR4buZYyBs4bqtcCDEkcaw4bujYyBz4bqvcCB44bq/cCB0aGVvIGjDoG5nLg0KDQojIyMgQmnhur9uIGFnZQ0KDQpgYGB7cn0NCnN1bW1hcnkoYWdlKQ0KYWdlMSA8LSBjdXQoYWdlLCAyLCBsYWJlbHMgPSBjKCdsb3cnLCdoaWdoJykpDQpzdW1tYXJ5KGFnZTEpDQpgYGANCg0KVGhlbyBr4bq/dCBxdeG6oyB0csOqbiwgxJHhu5kgdHXhu5VpIGPhu6dhIGtow6FjaCBow6BuZyB04bqhaSBjw7RuZyB0eSB0w6BpIGNow61uaCB0cnVuZyBiw6xuaCDhu58gxJHhu5kgdHXhu5VpIDQwLCDEkeG7mSB0deG7lWkgY2FvIG5o4bqldCBsw6AgOTQgdHXhu5VpIHbDoCB0aOG6pXAgbmjhuqV0IGzDoCAxNyB0deG7lWkuIDI1JSBraMOhY2ggaMOgbmcgY8OzIMSR4buZIHR14buVaSBuaOG7jyBoxqFuIDMxIHR14buVaSwgNTAlIGtow6FjaCBow6BuZyBjw7MgxJHhu5kgdHXhu5VpIG5o4buPIGjGoW4gMzcgdHXhu5VpIHbDoCA3NSUga2jDoWNoIGjDoG5nIGPDsyDEkeG7mSB0deG7lWkgbmjhu48gaMahbiA0NyB0deG7lWkuDQpUcm9uZyA0NDI2IGtow6FjaCBow6BuZyBj4bunYSBjw7RuZyB0eSB0w6BpIGNow61uaCwgY8OzIDM4OTYga2jDoWNoIGjDoG5nIOG7nyDEkeG7mSB0deG7lWkgdGjhuqVwIHbDoCA1MzAga2jDoWNoIGjDoG5nIGPDsyDEkeG7mSB0deG7lWkgY2FvLg0KDQpgYGB7cn0NCnRhYmxlKGFnZTEpL3N1bSh0YWJsZShhZ2UxKSkNCmRsIDwtIGRhdGEuZnJhbWUoYWdlLCBtcywgZWQsIGhzLCBsbiwgY3QsIGRyLCBjcCwgcG9jLCB5KQ0KZGwgfD4gZ2dwbG90KGFlcyh4ID0gYWdlMSwgeSA9IGFmdGVyX3N0YXQoY291bnQpKSkgKw0KZ2VvbV9iYXIoZmlsbCA9ICd2aW9sZXQnKSArZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSdjb3VudCcsIGNvbG9yID0gJ2JsYWNrJywgdmp1c3QgPSAtIC41KSArbGFicyh4ID0gJ8SQ4buZIHR14buVaScsIHkgPSAnU+G7kSBraMOhY2ggaMOgbmcnKQ0KYGBgDQoNCkThu7FhIHbDoG8gxJHhu5MgdGjhu4sgY+G7p2EgYmnhur9uIGFnZSwgdGEgdGjhuqV5IHLhurFuZyB04bu3IGzhu4cga2jDoWNoIGjDoG5nIOG7nyDEkeG7mSB0deG7lWkgdGjhuqVwIGfhuqVwIDcsMzMgbOG6p24gdOG7tyBs4buHIGtow6FjaCBow6BuZyDhu58gxJHhu5kgdHXhu5VpIGNhby4NCg0KIyMjIEJp4bq/biBNYXJpdGFsDQoNCmBgYHtyfQ0KdGFibGUobXMpDQp0YWJsZShtcykvc3VtKHRhYmxlKG1zKSkNCmRsIHw+IGdncGxvdChhZXMoeCA9IG1zLCB5ID0gYWZ0ZXJfc3RhdChjb3VudCkpKSArDQpnZW9tX2JhcihmaWxsID0gJ3Zpb2xldCcpICtnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSkpKSwgc3RhdCA9J2NvdW50JywgY29sb3IgPSAnYmxhY2snLCB2anVzdCA9IC0gLjUpICtsYWJzKHggPSAnVMOsbmggdHLhuqFuZyBow7RuIG5ow6JuJywgeSA9ICdT4buRIGtow6FjaCBow6BuZycpDQpgYGANCg0KQmnhur9uIE1hcml0YWwgKG1zKSB0aOG7gyBoaeG7h24gdMOsbmggdHLhuqFuZyBow7RuIG5ow6JuIGPhu6dhIGtow6FjaCBow6BuZyBy4bqxbmcga2jDoWNoIGjDoG5nIMSRw6Mga+G6v3QgaMO0biBoYXkgY2jGsGEuIEThu7FhIHbDoG8ga+G6v3QgcXXhuqMgdGjhu5FuZyBrw6ogdsOgIMSR4buTIHRo4buLIHRyw6puLCB0YSB0aOG6pXkgY8OzIDIwMjkga2jDoWNoIGjDoG5nIGNoxrBhIGvhur90IGjDtG4gdsOgIDIzOTcga2jDoWNoIGjDoG5nIMSRw6Mga+G6v3QgaMO0biB0csOqbiB04buVbmcgc+G7kSA0NDI2IGtow6FjaCBow6BuZy4gQ+G7pSB0aOG7gywgdOG7tyBs4buHIGtow6FjaCBow6BuZyDEkcOjIGvhur90IGjDtG4gKHbhu5tpIHThu7cgbOG7hyA0NSw4NCUpIGNoaeG6v20gY2FvIGjGoW4gdOG7tyBs4buHIGtow6FjaCBow6BuZyBjaMawYSBr4bq/dCBow7RuICh24bubaSB04bu3IGzhu4cgNTQsMTYlKS4NCg0KIyMjIEJp4bq/biBlZHVjYXRpb24NCg0KYGBge3J9DQp0YWJsZShlZCkNCnRhYmxlKGVkKS9zdW0odGFibGUoZWQpKQ0KZGwgfD4gZ2dwbG90KGFlcyh4ID0gZWQsIHkgPSBhZnRlcl9zdGF0KGNvdW50KSkpICsNCmdlb21fYmFyKGZpbGwgPSAndmlvbGV0JykgK2dlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSkpLCBzdGF0ID0nY291bnQnLCBjb2xvciA9ICdibGFjaycsIHZqdXN0ID0gLSAuNSkgK2xhYnMoeCA9ICdUcsOsbmggxJHhu5kgaOG7jWMgduG6pW4nLCB5ID0gJ1Phu5Ega2jDoWNoIGjDoG5nJykNCmBgYA0KDQpE4buxYSB2w6BvIMSR4buTIHRo4buLIHbDoCBr4bq/dCBxdeG6oyB0aOG7kW5nIGvDqiB0csOqbiwgdGEgdGjhuqV5IHLhurFuZyB04bu3IGzhu4cga2jDoWNoIGjDoG5nIGPDsyB0csOsbmggxJHhu5kgaOG7jWMgduG6pW4gbMOgIGPhu60gbmjDom4gY2hp4bq/bSB04bu3IGzhu4cgY2FvIG5o4bqldCB24bubaSB04bu3IGzhu4cgMzUsMSUsIHThu7cgbOG7hyBraMOhY2ggaMOgbmcgYuG7jyBo4buNYyBjw7MgdOG7tyBs4buHIHRo4bqlcCBuaOG6pXQgeOG6pXAgeOG7iSAwLDAyJSAoMSBraMOhY2ggaMOgbmcpLg0KDQojIyMgIEJp4bq/biBob3VzaW5nDQoNCmBgYHtyfQ0KdGFibGUoaHMpDQp0YWJsZShocykvc3VtKHRhYmxlKGhzKSkNCmRsIHw+IGdncGxvdChhZXMoeCA9IGhzLCB5ID0gYWZ0ZXJfc3RhdChjb3VudCkpKSArDQpnZW9tX2JhcihmaWxsID0gJ3Zpb2xldCcpICtnZW9tX3RleHQoYWVzKGxhYmVsID0gc2NhbGVzOjpwZXJjZW50KGFmdGVyX3N0YXQoY291bnQvc3VtKGNvdW50KSkpKSwgc3RhdCA9J2NvdW50JywgY29sb3IgPSAnYmxhY2snLCB2anVzdCA9IC0gLjUpICtsYWJzKHggPSAnTmjDoCcsIHkgPSAnU+G7kSBraMOhY2ggaMOgbmcnKQ0KYGBgDQoNCkJp4bq/biBIb3VzaW5nIChocykgdGjhu4MgaGnhu4duIGtow6FjaCBow6BuZyBjw7MgbmjDoCBoYXkga2jDtG5nLiBE4buxYSB2w6BvIGvhur90IHF14bqjIHRo4buRbmcga8OqIHbDoCDEkeG7kyB0aOG7iyB0csOqbiwgdGEgdGjhuqV5IGPDsyAxODkyIGtow6FjaCBow6BuZyBjaMawYSBjw7MgbmjDoCB2w6AgMjUzNCBraMOhY2ggaMOgbmcgxJHDoyBjw7MgbmjDoCB0csOqbiB04buVbmcgc+G7kSA0NDI2IGtow6FjaCBow6BuZy4gQ+G7pSB0aOG7gywgdOG7tyBs4buHIGtow6FjaCBow6BuZyDEkcOjIGPDsyBuaMOgICh24bubaSB04bu3IGzhu4cgNTclKSBjaGnhur9tIGNhbyBoxqFuIHThu7cgbOG7hyBraMOhY2ggaMOgbmcgY2jGsGEgY8OzIG5ow6AgKHbhu5tpIHThu7cgbOG7hyA0MyUpLg0KDQojIyMgQmnhur9uIGxvYW4NCg0KYGBge3J9DQp0YWJsZShsbikNCnRhYmxlKGxuKS9zdW0odGFibGUobG4pKQ0KZGwgfD4gZ2dwbG90KGFlcyh4ID0gbG4sIHkgPSBhZnRlcl9zdGF0KGNvdW50KSkpICsNCmdlb21fYmFyKGZpbGwgPSAndmlvbGV0JykgK2dlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSkpLCBzdGF0ID0nY291bnQnLCBjb2xvciA9ICdibGFjaycsIHZqdXN0ID0gLSAuNSkgK2xhYnMoeCA9ICdWYXkgbuG7oycsIHkgPSAnU+G7kSBraMOhY2ggaMOgbmcnKQ0KYGBgDQoNCkJp4bq/biBMb2FuIChsbikgdGjhu4MgaGnhu4duIGtow6FjaCBow6BuZyBjw7MgdmF5IHThuqFpIGPDtG5nIHR5IHTDoGkgY2jDrW5oIGhheSBraMO0bmcuIEThu7FhIHbDoG8ga+G6v3QgcXXhuqMgdGjhu5FuZyBrw6ogdsOgIMSR4buTIHRo4buLIHRyw6puLCB0YSB0aOG6pXkgY8OzIDM3NDUga2jDoWNoIGjDoG5nIGtow7RuZyB2YXkgdOG6oWkgY8O0bmcgdHkgdMOgaSBjaMOtbmggdsOgIDY4MSBraMOhY2ggaMOgbmcgY8OzIHZheSB04bqhaSBjw7RuZyB0eSB0w6BpIGNow61uaCB0csOqbiB04buVbmcgc+G7kSA0NDI2IGtow6FjaCBow6BuZy4gQ+G7pSB0aOG7gywgdOG7tyBs4buHIGtow6FjaCBow6BuZyBraMO0bmcgdmF5IHThuqFpIGPDtG5nIHR5IHTDoGkgY2jDrW5oICh24bubaSB04bu3IGzhu4cgODUlKSBjaGnhur9tIGNhbyBoxqFuIHThu7cgbOG7hyBraMOhY2ggaMOgbmcgY8OzIHZheSB04bqhaSBjw7RuZyB0eSB0w6BpIGNow61uaCAoduG7m2kgdOG7tyBs4buHIDE1JSkuDQoNCiMjIyBCaeG6v24gY29udGFjdA0KDQpgYGB7cn0NCnRhYmxlKGN0KQ0KdGFibGUoY3QpL3N1bSh0YWJsZShjdCkpDQpkbCB8PiBnZ3Bsb3QoYWVzKHggPSBjdCwgeSA9IGFmdGVyX3N0YXQoY291bnQpKSkgKw0KZ2VvbV9iYXIoZmlsbCA9ICd2aW9sZXQnKSArZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSdjb3VudCcsIGNvbG9yID0gJ2JsYWNrJywgdmp1c3QgPSAtIC41KSArbGFicyh4ID0gJ0PDoWNoIHRo4bupYyBsacOqbiBs4bqhYycsIHkgPSAnU+G7kSBraMOhY2ggaMOgbmcnKQ0KYGBgDQoNCkJp4bq/biBDb250YWN0IChjdCkgdGjhu4MgaGnhu4duIGPDoWNoIHRo4bupYyBjw7RuZyB0eSBsacOqbiBo4buHIHbhu5tpIGtow6FjaCBow6BuZy4gROG7sWEgdsOgbyBr4bq/dCBxdeG6oyB0aOG7kW5nIGvDqiB2w6AgxJHhu5MgdGjhu4sgdHLDqm4sIHRhIHRo4bqleSBjw7MgNDEwMSBraMOhY2ggaMOgbmcgY8O0bmcgdHkgc+G7rSBk4bulbmcgxJFp4buHbiB0aG/huqFpIGRpIMSR4buZbmcgxJHhu4MgbGnDqm4gbOG6oWMgdsOgIDMyNSBraMOhY2ggaMOgbmcgY8O0bmcgdHkgc+G7rSBk4bulbmcgxJFp4buHbiB0aG/huqFpIGLDoG4gxJHhu4MgbGnDqm4gbOG6oWMgdHLDqm4gdOG7lW5nIHPhu5EgNDQyNiBraMOhY2ggaMOgbmcuIEPhu6UgdGjhu4MsIHThu7cgbOG7hyBraMOhY2ggaMOgbmcgY8O0bmcgdHkgc+G7rSBk4bulbmcgxJFp4buHbiB0aG/huqFpIGRpIMSR4buZbmcgxJHhu4MgbGnDqm4gbOG6oWMgKHbhu5tpIHThu7cgbOG7hyA5MyUpIGNoaeG6v20gY2FvIGjGoW4gdOG7tyBs4buHIGtow6FjaCBow6BuZyBjw7RuZyB0eSBz4butIGThu6VuZyDEkWnhu4duIHRob+G6oWkgYsOgbiDEkeG7gyBsacOqbiBs4bqhYyAoduG7m2kgdOG7tyBs4buHIDclKS4NCg0KIyMjIEJp4bq/biBkdXJhdGlvbg0KDQpgYGB7cn0NCnN1bW1hcnkoZHIpDQpkcjEgPC0gY3V0KGRyLCBicmVha3MgPSBjKDAsIG1lYW4oZHIpLCBtYXgoZHIpKSwgbGFiZWxzID0gYygnZmV3JywgJ21hbnknKSkNCnRhYmxlKGRyMSkNCmBgYA0KDQpUaGVvIGvhur90IHF14bqjIHRyw6puLCBz4buRIG5nw6B5IHRydW5nIGLDrG5oIG3DoCBraMOhY2ggaMOgbmcgxJHDoyBi4bqvdCDEkeG6p3Ugc+G7rSBk4bulbmcgY8OhYyBk4buLY2ggduG7pSBj4bunYSBjw7RuZyB0eSB0w6BpIGNow61uaCBsw6AgMjY2IG5nw6B5LCBz4buRIG5nw6B5IG5oaeG7gXUgbmjhuqV0IGzDoCAzNTA5IG5nw6B5IHbDoCDDrXQgbmjhuqV0IGzDoCAxIG5nw6B5LiA2NSUga2jDoWNoIGjDoG5nIGPDsyBz4buRIG5nw6B5IHPhu60gZOG7pW5nIGTGsOG7m2kgMjY2IG5nw6B5LCAzNSUga2jDoWNoIGjDoG5nIGPDsyBz4buRIG5nw6B5IHPhu60gZOG7pW5nIHRyw6puIDI2NiBuZ8OgeS4NClRyb25nIDQ0MjYga2jDoWNoIGjDoG5nIGPhu6dhIGPDtG5nIHR5IHTDoGkgY2jDrW5oLCBjw7MgMjg4NSBraMOhY2ggaMOgbmcgY8OzIHPhu5EgbmfDoHkgc+G7rSBk4bulbmcgZMaw4bubaSAyNjYgbmfDoHkgdsOgIDE1NDEga2jDoWNoIGjDoG5nIGPDsyBz4buRIG5nw6B5IHPhu60gZOG7pW5nIHRyw6puIDI2NiBuZ8OgeS4NCg0KYGBge3J9DQp0YWJsZShkcjEpL3N1bSh0YWJsZShkcjEpKQ0KZGwgPC0gZGF0YS5mcmFtZShhZ2UsIG1zLCBlZCwgaHMsIGxuLCBjdCwgZHIsIGNwLCBwb2MsIHkpDQpkbCB8PiBnZ3Bsb3QoYWVzKHggPSBkcjEsIHkgPSBhZnRlcl9zdGF0KGNvdW50KSkpICsNCmdlb21fYmFyKGZpbGwgPSAndmlvbGV0JykgK2dlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSkpLCBzdGF0ID0nY291bnQnLCBjb2xvciA9ICdibGFjaycsIHZqdXN0ID0gLSAuNSkgK2xhYnMoeCA9ICdOZ8OgeSBz4butIGThu6VuZyBjw6FjIGThu4tjaCB24bulIHThuqFpIGPDtG5nIHR5JywgeSA9ICdT4buRIGtow6FjaCBow6BuZycpDQpgYGANCg0KROG7sWEgdsOgbyDEkeG7kyB0aOG7iywgdGEgdGjhuqV5IHLhurFuZywga2jDoWNoIGjDoG5nIGPDsyBz4buRIG5nw6B5IHPhu60gZOG7pW5nIGPDoWMgZOG7i2NoIHbhu6Ugw610IGfhuqVwIDEsODYgbOG6p24ga2jDoWNoIGjDoG5nIGPDsyBz4buRIG5nw6B5IHPhu60gZOG7pW5nIGPDoWMgZOG7i2NoIHbhu6Ugbmhp4buBdS4NCg0KIyMjIEJp4bq/biBjYW1wYWlnbg0KDQpgYGB7cn0NCnN1bW1hcnkoY3ApDQpjcDEgPC0gY3V0KGNwLCBicmVha3MgPSBjKDAsIDIsIG1heChjcCkpLCBsYWJlbHMgPSBjKCdmZXcnLCAnbWFueScpKQ0Kc3VtbWFyeShjcDEpDQpgYGANCg0KVGhlbyBr4bq/dCBxdeG6oyB0csOqbiwgc+G7kSBjdeG7mWMgZ+G7jWkgdHJ1bmcgYsOsbmggbcOgIGPDoWMga2jDoWNoIGjDoG5nIG5o4bqtbiDEkcaw4bujYyBn4bqnbiAyIGN14buZYyBn4buNaSwga2jDoWNoIGjDoG5nIMSRxrDhu6NjIGfhu41pIG5oaeG7gXUgbmjhuqV0IHbhu5tpIHPhu5EgY3Xhu5ljIGfhu41pIGzDoCAxMiBjdeG7mWMgZ+G7jWkgdsOgIMOtdCBuaOG6pXQgbMOgIDEgY3Xhu5ljIGfhu41pLiA3OSUga2jDoWNoIGjDoG5nIG5o4bqtbiBz4buRIGN14buZYyBn4buNaSBkxrDhu5tpIDIgY3Xhu5ljIGfhu41pLCAyMSUga2jDoWNoIGjDoG5nIG5o4bqtbiBz4buRIGN14buZYyBn4buNaSB0csOqbiAyIGN14buZYyBn4buNaS4NClRyb25nIDQ0MjYga2jDoWNoIGjDoG5nIGPhu6dhIGPDtG5nIHR5IHTDoGkgY2jDrW5oLCAzNDg4IGtow6FjaCBow6BuZyBuaOG6rW4gc+G7kSBjdeG7mWMgZ+G7jWkgZMaw4bubaSAyIGN14buZYyBn4buNaSB2w6AgOTM4IGtow6FjaCBow6BuZyBuaOG6rW4gc+G7kSBjdeG7mWMgZ+G7jWkgZMaw4bubaSAyIGN14buZYyBn4buNaS4NCg0KYGBge3J9DQp0YWJsZShjcDEpL3N1bSh0YWJsZShjcDEpKQ0KZGwgPC0gZGF0YS5mcmFtZShhZ2UsIG1zLCBlZCwgaHMsIGxuLCBjdCwgZHIsIGNwLCBwb2MsIHkpDQpkbCB8PiBnZ3Bsb3QoYWVzKHggPSBjcDEsIHkgPSBhZnRlcl9zdGF0KGNvdW50KSkpICsNCmdlb21fYmFyKGZpbGwgPSAndmlvbGV0JykgK2dlb21fdGV4dChhZXMobGFiZWwgPSBzY2FsZXM6OnBlcmNlbnQoYWZ0ZXJfc3RhdChjb3VudC9zdW0oY291bnQpKSkpLCBzdGF0ID0nY291bnQnLCBjb2xvciA9ICdibGFjaycsIHZqdXN0ID0gLSAuNSkgK2xhYnMoeCA9ICdT4buRIGN14buZYyBn4buNaScsIHkgPSAnU+G7kSBraMOhY2ggaMOgbmcnKQ0KYGBgDQoNCkThu7FhIHbDoG8gxJHhu5MgdGjhu4ssIHRhIHRo4bqleSBy4bqxbmcsIGtow6FjaCBow6BuZyBuaOG6rW4gY3Xhu5ljIGfhu41pIMOtdCBn4bqlcCAzLDc2IGzhuqduIGtow6FjaCBow6BuZyBuaOG6rW4gY3Xhu5ljIGfhu41pIG5oaeG7gXUuDQoNCiMjIyBCaeG6v24gcF9vdXRjb21lDQoNCmBgYHtyfQ0KdGFibGUocG9jKQ0KdGFibGUocG9jKS9zdW0odGFibGUocG9jKSkNCmRsIHw+IGdncGxvdChhZXMoeCA9IHBvYywgeSA9IGFmdGVyX3N0YXQoY291bnQpKSkgKw0KZ2VvbV9iYXIoZmlsbCA9ICd2aW9sZXQnKSArZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHNjYWxlczo6cGVyY2VudChhZnRlcl9zdGF0KGNvdW50L3N1bShjb3VudCkpKSksIHN0YXQgPSdjb3VudCcsIGNvbG9yID0gJ2JsYWNrJywgdmp1c3QgPSAtIC41KSArbGFicyh4ID0gJ0vhur90IHF14bqjIGPhu6dhIGNoaeG6v24gZOG7i2NoIHRyxrDhu5tjJywgeSA9ICdT4buRIGtow6FjaCBow6BuZycpDQpgYGANCg0KQmnhur9uIHBfb3V0Y29tZSAocG9jKSB0aOG7gyBoaeG7h24ga+G6v3QgcXXhuqMgY+G7p2EgY2hp4bq/biBk4buLY2ggdHLGsOG7m2MgbMOgIHRo4bqldCBi4bqhaSBoYXkgdGjDoG5oIGPDtG5nIMSR4buRaSB24bubaSB04burbmcga2jDoWNoIGjDoG5nLiBE4buxYSB2w6BvIGvhur90IHF14bqjIHRo4buRbmcga8OqIHbDoCDEkeG7kyB0aOG7iyB0csOqbiwgdGEgdGjhuqV5IGPDsyAzMzAxIHF1YW4gc8OhdCB0aOG7gyBoaeG7h24gdGjhuqV0IGLhuqFpIGPhu6dhIGNoaeG6v24gZOG7i2NoIHbDoCAxMTI1IHF1YW4gc8OhdCB0aOG7gyBoaeG7h24gdGjDoG5oIGPDtG5nIGPhu6dhIGNoaeG6v24gZOG7i2NoIHRyw6puIHThu5VuZyBz4buRIDQ0MjYgcXVhbiBzw6F0LiBD4bulIHRo4buDLCB04bu3IGzhu4cgdGjhuqV0IGLhuqFpIGPhu6dhIGNoaeG6v24gZOG7i2NoICh24bubaSB04bu3IGzhu4cgNzUlKSBjaGnhur9tIGNhbyBoxqFuIHThu7cgbOG7hyB0aMOgbmggY8O0bmcgY+G7p2EgY2hp4bq/biBk4buLY2ggKHbhu5tpIHThu7cgbOG7hyAyNSUpLg0KDQojIyMgQuG6o25nIHThuqduIHPhu5ENCg0KYGBge3J9DQpkbDEgPC0gdGFibGUoeSxhZ2UxKQ0KZGwxDQpgYGANCg0KVHJvbmcgdOG7lW5nIDQ0MjYga2jDoWNoIGjDoG5nLCB0YSB0aOG6pXkgY8OzIDI5MTUga2jDoWNoIGjDoG5nIOG7nyDEkeG7mSB0deG7lWkgdGjhuqVwIGPDsyBwaOG6o24g4bupbmcgdGnDqnUgY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2ggY+G7p2EgY8O0bmcgdHkgdMOgaSBjaMOtbmgsIDk4MSBraMOhY2ggaMOgbmcg4bufIMSR4buZIHR14buVaSB0aOG6pXAgY8OzIHBo4bqjbiDhu6luZyB0w61jaCBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaC4gVHJvbmcga2hpIMSRw7MsIGPDsyAyODcga2jDoWNoIGjDoG5nIOG7nyDEkeG7mSB0deG7lWkgY2FvIGPDsyBwaOG6o24g4bupbmcgdGnDqnUgY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2gsIDI0MyBraMOhY2ggaMOgbmcg4bufIMSR4buZIHR14buVaSBjYW8gY8OzIHBo4bqjbiDhu6luZyB0w61jaCBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaC4NCg0KYGBge3J9DQpkbDIgPC0gdGFibGUoeSxocykNCmRsMg0KYGBgDQoNClRyb25nIHThu5VuZyA0NDI2IGtow6FjaCBow6BuZywgdGEgdGjhuqV5IGPDsyAxMzU5IGtow6FjaCBow6BuZyBjaMawYSBjw7MgbmjDoCBjw7MgcGjhuqNuIOG7qW5nIHRpw6p1IGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoIGPhu6dhIGPDtG5nIHR5IHTDoGkgY2jDrW5oLCA1MzUga2jDoWNoIGjDoG5nIGNoxrBhIGPDsyBuaMOgIGPDsyBwaOG6o24g4bupbmcgdMOtY2ggY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2guIFRyb25nIGtoaSDEkcOzLCBjw7MgMTg0MyBraMOhY2ggaMOgbmcgxJHDoyBjw7MgbmjDoCBjw7MgcGjhuqNuIOG7qW5nIHRpw6p1IGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoLCA2OTEga2jDoWNoIGjDoG5nIMSRw6MgY8OzIG5ow6AgY8OzIHBo4bqjbiDhu6luZyB0w61jaCBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaC4NCg0KYGBge3J9DQpkbDMgPC0gdGFibGUoeSxsbikNCmRsMw0KYGBgDQoNClRyb25nIHThu5VuZyA0NDI2IGtow6FjaCBow6BuZywgdGEgdGjhuqV5IGPDsyAyNzAxIGtow6FjaCBow6BuZyBjaMawYSB2YXkgY8OzIHBo4bqjbiDhu6luZyB0acOqdSBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaCBj4bunYSBjw7RuZyB0eSB0w6BpIGNow61uaCwgMTA0NCBraMOhY2ggaMOgbmcgY2jGsGEgdmF5IGPDsyBwaOG6o24g4bupbmcgdMOtY2ggY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2guIFRyb25nIGtoaSDEkcOzLCBjw7MgNTAxIGtow6FjaCBow6BuZyDEkcOjIHZheSBjw7MgcGjhuqNuIOG7qW5nIHRpw6p1IGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoLCAxODAga2jDoWNoIGjDoG5nIMSRw6MgdmF5IGPDsyBwaOG6o24g4bupbmcgdMOtY2ggY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2guDQoNCmBgYHtyfQ0KZGw0IDwtIHRhYmxlKHksY3QpDQpkbDQNCmBgYA0KDQpUcm9uZyB04buVbmcgNDQyNiBraMOhY2ggaMOgbmcsIHRhIHRo4bqleSBjw7MgMjk1NSBraMOhY2ggaMOgbmcgbGnDqm4gaOG7hyBi4bqxbmcgZGkgxJHhu5luZyBjw7MgcGjhuqNuIOG7qW5nIHRpw6p1IGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoIGPhu6dhIGPDtG5nIHR5IHTDoGkgY2jDrW5oLCAxMTQ2IGtow6FjaCBow6BuZyBsacOqbiBo4buHIGLhurFuZyBkaSDEkeG7mW5nIGPDsyBwaOG6o24g4bupbmcgdMOtY2ggY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2guIFRyb25nIGtoaSDEkcOzLCBjw7MgMjQ3IGtow6FjaCBow6BuZyBsacOqbiBo4buHIGLhurFuZyDEkWnhu4duIHRob+G6oWkgYsOgbiBjw7MgcGjhuqNuIOG7qW5nIHRpw6p1IGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoLCA3OCBraMOhY2ggaMOgbmcgbGnDqm4gaOG7hyBi4bqxbmcgxJFp4buHbiB0aG/huqFpIGLDoG4gY8OzIHBo4bqjbiDhu6luZyB0w61jaCBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaC4NCg0KYGBge3J9DQpkbDUgPC0gdGFibGUoeSxkcjEpDQpkbDUNCmBgYA0KDQpUcm9uZyB04buVbmcgNDQyNiBraMOhY2ggaMOgbmcsIHRhIHRo4bqleSBjw7MgMjQwNCBraMOhY2ggaMOgbmcgY8OzIHPhu5EgbmfDoHkga+G7gyB04burIGtoaSBi4bqvdCDEkeG6p3Ugc+G7rSBk4bulbmcgY8OhYyBk4buLY2ggduG7pSB04bqhaSBjw7RuZyB0eSB0w6BpIGNow61uaCDDrXQgY8OzIHBo4bqjbiDhu6luZyB0acOqdSBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaCBj4bunYSBjw7RuZyB0eSB0w6BpIGNow61uaCwgNDgxIGtow6FjaCBow6BuZyBjw7Mgc+G7kSBuZ8OgeSBr4buDIHThu6sga2hpIGLhuq90IMSR4bqndSBz4butIGThu6VuZyBjw6FjIGThu4tjaCB24bulIHThuqFpIGPDtG5nIHR5IHTDoGkgY2jDrW5oIMOtdCBjw7MgcGjhuqNuIOG7qW5nIHTDrWNoIGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoLiBUcm9uZyBraGkgxJHDsywgY8OzIDc5OCBraMOhY2ggaMOgbmcgY8OzIHPhu5EgbmfDoHkga+G7gyB04burIGtoaSBi4bqvdCDEkeG6p3Ugc+G7rSBk4bulbmcgY8OhYyBk4buLY2ggduG7pSB04bqhaSBjw7RuZyB0eSB0w6BpIGNow61uaCBuaGnhu4F1IGPDsyBwaOG6o24g4bupbmcgdGnDqnUgY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2gsIDc0MyBraMOhY2ggaMOgbmcgY8OzIHPhu5EgbmfDoHkga+G7gyB04burIGtoaSBi4bqvdCDEkeG6p3Ugc+G7rSBk4bulbmcgY8OhYyBk4buLY2ggduG7pSB04bqhaSBjw7RuZyB0eSB0w6BpIGNow61uaCDDrXQgY8OzIHBo4bqjbiDhu6luZyB0w61jaCBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaC4NCg0KYGBge3J9DQpkbDYgPC0gdGFibGUoeSwgcG9jKQ0KZGw2DQpgYGANCg0KVHJvbmcgdOG7lW5nIDQ0MjYga2jDoWNoIGjDoG5nLCB0YSB0aOG6pXkgY8OzIDI4MTcgcXVhbiBzw6F0IHRo4bqleSBy4bqxbmcgY2hp4bq/biBk4buLY2ggdHLGsOG7m2MgdGjhuqV0IGLhuqFpIGPDsyBwaOG6o24g4bupbmcgdGnDqnUgY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2ggY+G7p2EgY8O0bmcgdHkgdMOgaSBjaMOtbmgsIDQ4NCBxdWFuIHPDoXQgdGjhuqV5IHLhurFuZyBjaGnhur9uIGThu4tjaCB0csaw4bubYyB0aOG6pXQgYuG6oWkgY8OzIHBo4bqjbiDhu6luZyB0w61jaCBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaC4gVHJvbmcga2hpIMSRw7MsIGPDsyAzODUgcXVhbiBzw6F0IHRo4bqleSBy4bqxbmcgY2hp4bq/biBk4buLY2ggdHLGsOG7m2MgdGjDoG5oIGPDtG5nIGPDsyBwaOG6o24g4bupbmcgdGnDqnUgY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2gsIDc0MCBxdWFuIHPDoXQgdGjhuqV5IHLhurFuZyBjaGnhur9uIGThu4tjaCB0csaw4bubYyB0aMOgbmggY8O0bmcgY8OzIHBo4bqjbiDhu6luZyB0w61jaCBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaC4NCg0KYGBge3J9DQpkbDcgPC0gdGFibGUoeSwgY3AxKQ0KZGw3DQpgYGANCg0KVHJvbmcgdOG7lW5nIDQ0MjYga2jDoWNoIGjDoG5nLCB0YSB0aOG6pXkgY8OzIDI0OTAga2jDoWNoIGjDoG5nIG5o4bqtbiBjdeG7mWMgZ+G7jWkgw610IGPDsyBwaOG6o24g4bupbmcgdGnDqnUgY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2ggY+G7p2EgY8O0bmcgdHkgdMOgaSBjaMOtbmgsIDk5OCBraMOhY2ggaMOgbmcgbmjhuq1uIGN14buZYyBn4buNaSDDrXQgY8OzIHBo4bqjbiDhu6luZyB0w61jaCBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaC4gVHJvbmcga2hpIMSRw7MsIGPDsyA3MTIga2jDoWNoIGjDoG5nIG5o4bqtbiBjdeG7mWMgZ+G7jWkgbmhp4buBdSBjw7MgcGjhuqNuIOG7qW5nIHRpw6p1IGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoLCAyMjYga2jDoWNoIGjDoG5nIG5o4bqtbiBjdeG7mWMgZ+G7jWkgbmhp4buBdSBjw7MgcGjhuqNuIOG7qW5nIHTDrWNoIGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoLg0KDQpgYGB7cn0NCmRsOCA8LSB0YWJsZSh5LCBtcykNCmRsOA0KYGBgDQoNClRyb25nIHThu5VuZyA0NDI2IGtow6FjaCBow6BuZywgdGEgdGjhuqV5IGPDsyAxNDU5IGtow6FjaCBow6BuZyBjaMawYSBr4bq/dCBow7RuIGPDsyBwaOG6o24g4bupbmcgdGnDqnUgY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2ggY+G7p2EgY8O0bmcgdHkgdMOgaSBjaMOtbmgsIDU3MCBraMOhY2ggaMOgbmcgY2jGsGEga+G6v3QgaMO0biBjw7MgcGjhuqNuIOG7qW5nIHTDrWNoIGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoLiBUcm9uZyBraGkgxJHDsywgY8OzIDE3NDMga2jDoWNoIGjDoG5nIMSRw6Mga+G6v3QgaMO0biBjw7MgcGjhuqNuIOG7qW5nIHRpw6p1IGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoLCA2NTQga2jDoWNoIGjDoG5nIMSRw6Mga+G6v3QgaMO0biBjw7MgcGjhuqNuIOG7qW5nIHTDrWNoIGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoLg0KDQojIyMgUuG7p2kgcm8gdMawxqFuZyDEkeG7kWkgKFJlbGF0aXZlIFJpc2svUmlzayBSYXRpbykNCg0KS8O9IGhp4buHdSBsw6AgJFxwaV9pJCBsw6AgdOG7tyBs4buHICJ0aMOgbmggY8O0bmcgY+G7p2EgYmnhur9uIHBo4bulIHRodeG7mWMgdMawxqFuZyDhu6luZyB24bubaSB04burbmcgYmnhur9uIMSR4buZYyBs4bqtcC4NClThu6sgYuG6o25nIHThuqduIHh14bqldCwgY2jDum5nIHRhIHTDrW5oICRcZnJhY3tccGlfMX17XHBpXzJ9JCwgcGjDom4gc+G7kSBuw6B5IMSRxrDhu6NjIGfhu41pIGzDoCBS4bunaSBybyB0xrDGoW5nIMSR4buRaSAoUmVsYXRpdmUgcmlzaykgZ2nhu69hIDIgYmnhu4N1IGhp4buHbiBraMOhYyBuaGF1IGPhu6dhIGJp4bq/biBwaOG7pSB0aHXhu5ljLg0KDQpgYGB7cn0NCmFkZG1hcmdpbnMoZGwxKQ0KUmVsUmlzayhkbDEpDQpgYGANCg0KVOG7tyBs4buHIGtow6FjaCBow6BuZyDhu58gxJHhu5kgdHXhu5VpIHRo4bqlcCBuaMawbmcgY8OzIHBo4bqjbiDhu6luZyB0acOqdSBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaCBn4bqlcCAxLDE0IGzhuqduIHThu7cgbOG7hyBraMOhY2ggaMOgbmcg4bufIMSR4buZIHR14buVaSB0aOG6pXAgbmjGsG5nIGPDsyBwaOG6o24g4bupbmcgdMOtY2ggY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2guDQoNCmBgYHtyfQ0KYWRkbWFyZ2lucyhkbDIpDQpSZWxSaXNrKGRsMikNCmBgYA0KDQpU4bu3IGzhu4cga2jDoWNoIGjDoG5nIGNoxrBhIGPDsyBuaMOgIHbDoCBjw7MgcGjhuqNuIOG7qW5nIHRpw6p1IGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoIGfhuqVwIDk3LDQ3JSBs4bqnbiB04bu3IGzhu4cga2jDoWNoIGjDoG5nIGNoxrBhIGPDsyBuaMOgIG5oxrBuZyBjw7MgcGjhuqNuIOG7qW5nIHTDrWNoIGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoLg0KDQpgYGB7cn0NCmFkZG1hcmdpbnMoZGwzKQ0KUmVsUmlzayhkbDMpDQpgYGANCg0KVOG7tyBs4buHIGtow6FjaCBow6BuZyBjaMawYSB2YXkgdsOgIGPDsyBwaOG6o24g4bupbmcgdGnDqnUgY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2ggZ+G6pXAgOTgsOSUgbOG6p24gdOG7tyBs4buHIGtow6FjaCBow6BuZyBjaMawYSB2YXkgbmjGsG5nIGPDsyBwaOG6o24g4bupbmcgdMOtY2ggY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2guDQoNCmBgYHtyfQ0KYWRkbWFyZ2lucyhkbDQpDQpSZWxSaXNrKGRsNCkNCmBgYA0KDQpU4bu3IGzhu4cga2jDoWNoIGjDoG5nIGxpw6puIGjhu4cgYuG6sW5nIGRpIMSR4buZbmcgdsOgIGPDsyBwaOG6o24g4bupbmcgdGnDqnUgY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2ggZ+G6pXAgOTgsNTclIGzhuqduIHThu7cgbOG7hyBraMOhY2ggaMOgbmcgbGnDqm4gaOG7hyBi4bqxbmcgZGkgxJHhu5luZyB2w6AgY8OzIHBo4bqjbiDhu6luZyB0w61jaCBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaC4NCg0KYGBge3J9DQphZGRtYXJnaW5zKGRsNSkNClJlbFJpc2soZGw1KQ0KYGBgDQoNClThu7cgbOG7hyBraMOhY2ggaMOgbmcgY8OzIHPhu5EgbmfDoHkga+G7gyB04burIGtoaSBi4bqvdCDEkeG6p3Ugc+G7rSBk4bulbmcgY8OhYyBk4buLY2ggduG7pSB04bqhaSBjw7RuZyB0eSB0w6BpIGNow61uaCDDrXQgdsOgIGPDsyBwaOG6o24g4bupbmcgdGnDqnUgY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2ggZ+G6pXAgMSw5MSBs4bqnbiB04bu3IGzhu4cga2jDoWNoIGjDoG5nIGPDsyBz4buRIG5nw6B5IGvhu4MgdOG7qyBraGkgYuG6r3QgxJHhuqd1IHPhu60gZOG7pW5nIGPDoWMgZOG7i2NoIHbhu6UgdOG6oWkgY8O0bmcgdHkgdMOgaSBjaMOtbmggw610IHbDoCBjw7MgcGjhuqNuIOG7qW5nIHTDrWNoIGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoLg0KDQpgYGB7cn0NCmFkZG1hcmdpbnMoZGw2KQ0KUmVsUmlzayhkbDYpDQpgYGANCg0KVOG7tyBs4buHIGNoaeG6v24gZOG7i2NoIHRyxrDhu5tjIHRo4bqldCBi4bqhaSB2w6Aga2jDoWNoIGjDoG5nIGPDsyBwaOG6o24g4bupbmcgdGnDqnUgY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2ggZ+G6pXAgMiwyMiBs4bqnbiB04bu3IGzhu4cgY2hp4bq/biBk4buLY2ggdHLGsOG7m2MgdGjDoG5oIGPDtG5nIHbDoCBjw7Mga2jDoWNoIGjDoG5nIHBo4bqjbiDhu6luZyB0w61jaCBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaC4NCg0KYGBge3J9DQphZGRtYXJnaW5zKGRsNykNClJlbFJpc2soZGw3KQ0KYGBgDQoNClThu7cgbOG7hyBraMOhY2ggaMOgbmcgbmjhuq1uIGN14buZYyBn4buNaSDDrXQgdsOgIGPDsyBwaOG6o24g4bupbmcgdGnDqnUgY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2ggZ+G6pXAgOTUsMzclIGzhuqduIHThu7cgbOG7hyBraMOhY2ggaMOgbmcgbmjhuq1uIGN14buZYyBn4buNaSBuaGnhu4F1IHbDoCBjw7MgcGjhuqNuIOG7qW5nIHTDrWNoIGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoLg0KDQpgYGB7cn0NCmFkZG1hcmdpbnMoZGw4KQ0KUmVsUmlzayhkbDgpDQpgYGANCg0KVOG7tyBs4buHIGtow6FjaCBow6BuZyBjaMawYSBr4bq/dCBow7RuIHbDoCBjw7MgcGjhuqNuIOG7qW5nIHRpw6p1IGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoIGfhuqVwIDk3LDg1JSBs4bqnbiB04bu3IGzhu4cga2jDoWNoIGjDoG5nIGNoxrBhIGvhur90IGjDtG4gdsOgIGPDsyBwaOG6o24g4bupbmcgdMOtY2ggY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2guDQoNCiMjIyBU4bu3IGzhu4cgY2jDqm5oIChPZGQgUmF0aW8pDQoNCk7hur91IGfhu41pIHjDoWMgc3XhuqV0ICJ0aMOgbmggY8O0bmciIGPhu6dhIGJp4buDdSBoaeG7h24gdGjhu6kgaSBj4bunYSBiaeG6v24gxJHhu5ljIGzhuq1wIGzDoCAkXHBpX2kkIHRow6wgY2jDum5nIHRhIGvDvSBoaeG7h3UgVOG7tyBs4buHIGPGsOG7o2MgKG9kZCkgY+G7p2EgYmnhu4N1IGhp4buHbiBuw6B5IGzDoCAkb2RkX2kkIHbDoCDEkcaw4bujYyDEkeG7i25oIG5naMSpYSBuaMawIHNhdToNCg0KJCQgb2RkX2kgPSBcZnJhY3tccGlfaX17MS1ccGlfaX0gJCQNCg0KTmdoxKlhIGzDoCBjaMO6bmcgdGEgdMOtbmggdOG7tyBs4buHIHRow6BuaCBjw7RuZyB0aGVvIHThu6tuZyBow6BuZyB0cm9uZyBi4bqjbmcgbmfhuqt1IG5oacOqbi4NClThu7cgbOG7hyBjaMOqbmggY+G7p2EgYmnhu4N1IGhp4buHbiB0aOG7qSBpIHbDoCBiaeG7g3UgaGnhu4duIHRo4bupIGogxJHGsOG7o2Mga8O9IGhp4buHdSBsw6AgJFx0aGV0YV97aWp9JCB2w6AgxJHGsOG7o2MgxJHhu4tuaCBuZ2jEqWE6DQoNCiQkIFx0aGV0YSA9IFxmcmFje29kZF9pfXtvZGRfan0gPSBcZnJhY3tcZnJhY3tccGlfaX17MS1ccGlfaX19e1xmcmFje1xwaV9qfXsxLVxwaV9qfX0gPSBcZnJhY3tccGlfaSgxLVxwaV9qKX17XHBpX2ooMS1ccGlfaSl9ICQkDQoNCmBgYHtyfQ0KZGwxDQpPZGRzUmF0aW8oZGwxKQ0KYGBgDQoNClRoZW8ga+G6v3QgcXXhuqMgdHLDqm4sIHRhIHRo4bqleSwgdOG7tyBs4buHIGtow6FjaCBow6BuZyBjw7MgxJHhu5kgdHXhu5VpIHRo4bqlcCBzbyB24bubaSBraMOhY2ggaMOgbmcgY8OzIMSR4buZIHR14buVaSBjYW8gbcOgIGPDsyBwaOG6o24g4bupbmcgdGnDqnUgY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2ggZ+G6pXAgMiw1MiBs4bqnbiBraMOhY2ggaMOgbmcgY8OzIMSR4buZIHR14buVaSB0aOG6pXAgc28gduG7m2kga2jDoWNoIGjDoG5nIGPDsyDEkeG7mSB0deG7lWkgY2FvIG3DoCBjw7MgcGjhuqNuIOG7qW5nIHTDrWNoIGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoLg0KDQpgYGB7cn0NCmRsMg0KT2Rkc1JhdGlvKGRsMikNCmBgYA0KDQpUaGVvIGvhur90IHF14bqjIHRyw6puLCB0YSB0aOG6pXksIHThu7cgbOG7hyBraMOhY2ggaMOgbmcgY2jGsGEgY8OzIG5ow6Agc28gduG7m2kga2jDoWNoIGjDoG5nIGPDsyBuaMOgIG3DoCBjw7MgcGjhuqNuIOG7qW5nIHRpw6p1IGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoIGfhuqVwIDk1LDYlIGzhuqduIGtow6FjaCBow6BuZyBjaMawYSBjw7MgbmjDoCBzbyB24bubaSBraMOhY2ggaMOgbmcgY8OzIG5ow6AgbcOgIGPDsyBwaOG6o24g4bupbmcgdMOtY2ggY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2guDQoNCmBgYHtyfQ0KZGwzDQpPZGRzUmF0aW8oZGwzKQ0KYGBgDQoNClRoZW8ga+G6v3QgcXXhuqMgdHLDqm4sIHRhIHRo4bqleSwgdOG7tyBs4buHIGtow6FjaCBow6BuZyBjaMawYSB2YXkgc28gduG7m2kga2jDoWNoIGjDoG5nIMSRw6MgdmF5IG3DoCBjw7MgcGjhuqNuIOG7qW5nIHRpw6p1IGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoIGfhuqVwIDkyLDk1JSBs4bqnbiBraMOhY2ggaMOgbmcgY2jGsGEgdmF5IHNvIHbhu5tpIGtow6FjaCBow6BuZyDEkcOjIHZheSBtw6AgY8OzIHBo4bqjbiDhu6luZyB0w61jaCBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaC4NCg0KYGBge3J9DQpkbDQNCk9kZHNSYXRpbyhkbDQpDQpgYGANCg0KVGhlbyBr4bq/dCBxdeG6oyB0csOqbiwgdGEgdGjhuqV5LCB04bu3IGzhu4cga2jDoWNoIGjDoG5nIGxpw6puIGjhu4cgYuG6sW5nIGRpIMSR4buZbmcgc28gduG7m2kga2jDoWNoIGjDoG5nIGxpw6puIGjhu4cgYuG6sW5nIMSRaeG7h24gdGhv4bqhaSBiw6BuIG3DoCBjw7MgcGjhuqNuIOG7qW5nIHRpw6p1IGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoIGfhuqVwIDgxLDQzJSBs4bqnbiBraMOhY2ggaMOgbmcgbGnDqm4gaOG7hyBi4bqxbmcgZGkgxJHhu5luZyBzbyB24bubaSBraMOhY2ggaMOgbmcgbGnDqm4gaOG7hyBi4bqxbmcgxJFp4buHbiB0aG/huqFpIGLDoG4gbcOgIGPDsyBwaOG6o24g4bupbmcgdMOtY2ggY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2guDQoNCmBgYHtyfQ0KZGw1DQpPZGRzUmF0aW8oZGw1KQ0KYGBgDQoNClRoZW8ga+G6v3QgcXXhuqMgdHLDqm4sIHRhIHRo4bqleSwgdOG7tyBs4buHIGtow6FjaCBow6BuZyBjw7Mgc+G7kSBuZ8OgeSBr4buDIHThu6sga2hpIGLhuq90IMSR4bqndSBz4butIGThu6VuZyBjw6FjIGThu4tjaCB24bulIHThuqFpIGPDtG5nIHR5IHTDoGkgY2jDrW5oIMOtdCBzbyB24bubaSBraMOhY2ggaMOgbmcgY8OzIHPhu5EgbmfDoHkga+G7gyB04burIGtoaSBi4bqvdCDEkeG6p3Ugc+G7rSBk4bulbmcgY8OhYyBk4buLY2ggduG7pSB04bqhaSBjw7RuZyB0eSB0w6BpIGNow61uaCBuaGnhu4F1IG3DoCBjw7MgcGjhuqNuIOG7qW5nIHRpw6p1IGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoIGfhuqVwIDQsNjUgbOG6p24ga2jDoWNoIGjDoG5nIGPDsyBz4buRIG5nw6B5IGvhu4MgdOG7qyBraGkgYuG6r3QgxJHhuqd1IHPhu60gZOG7pW5nIGPDoWMgZOG7i2NoIHbhu6UgdOG6oWkgY8O0bmcgdHkgdMOgaSBjaMOtbmggw610IHNvIHbhu5tpIGtow6FjaCBow6BuZyBjw7Mgc+G7kSBuZ8OgeSBr4buDIHThu6sga2hpIGLhuq90IMSR4bqndSBz4butIGThu6VuZyBjw6FjIGThu4tjaCB24bulIHThuqFpIGPDtG5nIHR5IHTDoGkgY2jDrW5oIG5oaeG7gXUgbcOgIGPDsyBwaOG6o24g4bupbmcgdMOtY2ggY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2guDQoNCmBgYHtyfQ0KZGw2DQpPZGRzUmF0aW8oZGw2KQ0KYGBgDQoNClRoZW8ga+G6v3QgcXXhuqMgdHLDqm4sIHRhIHRo4bqleSwgdOG7tyBs4buHIGNoaeG6v24gZOG7i2NoIHRyxrDhu5tjIHRo4bqldCBi4bqhaSBzbyB24bubaSBjaGnhur9uIGThu4tjaCB0csaw4bubYyB0aMOgbmggY8O0bmcgbcOgIGtow6FjaCBow6BuZyBjw7MgcGjhuqNuIOG7qW5nIHRpw6p1IGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoIGfhuqVwIDExLDE5IGzhuqduIGNoaeG6v24gZOG7i2NoIHRyxrDhu5tjIHRo4bqldCBi4bqhaSBzbyB24bubaSBjaGnhur9uIGThu4tjaCB0csaw4bubYyB0aMOgbmggY8O0bmcgbcOgIGPDsyBwaOG6o24g4bupbmcgdMOtY2ggY+G7sWMgduG7m2kgY2hp4bq/biBk4buLY2guDQoNCmBgYHtyfQ0KZGw3DQpPZGRzUmF0aW8oZGw3KQ0KYGBgDQoNClRoZW8ga+G6v3QgcXXhuqMgdHLDqm4sIHRhIHRo4bqleSwgdOG7tyBs4buHIGtow6FjaCBow6BuZyBuaOG6rW4gY3Xhu5ljIGfhu41pIMOtdCBzbyB24bubaSBraMOhY2ggaMOgbmcgbmjhuq1uIGN14buZYyBn4buNaSBuaGnhu4F1IG3DoCBjw7MgcGjhuqNuIOG7qW5nIHRpw6p1IGPhu7FjIHbhu5tpIGNoaeG6v24gZOG7i2NoIGfhuqVwIDc5LDE5JSBs4bqnbiBraMOhY2ggaMOgbmcgbmjhuq1uIGN14buZYyBn4buNaSDDrXQgc28gduG7m2kga2jDoWNoIGjDoG5nIG5o4bqtbiBjdeG7mWMgZ+G7jWkgbmhp4buBdSBtw6AgY8OzIHBo4bqjbiDhu6luZyB0w61jaCBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaC4NCg0KYGBge3J9DQpkbDgNCk9kZHNSYXRpbyhkbDgpDQpgYGANCg0KVGhlbyBr4bq/dCBxdeG6oyB0csOqbiwgdGEgdGjhuqV5LCB04bu3IGzhu4cga2jDoWNoIGjDoG5nIGNoxrBhIGvhur90IGjDtG4gc28gduG7m2kga2jDoWNoIGjDoG5nIMSRw6Mga+G6v3QgaMO0biBtw6AgY8OzIHBo4bqjbiDhu6luZyB0acOqdSBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaCBn4bqlcCA5NiwwNCUgbOG6p24ga2jDoWNoIGjDoG5nIGNoxrBhIGvhur90IGjDtG4gc28gduG7m2kga2jDoWNoIGjDoG5nIMSRw6Mga+G6v3QgaMO0biBtw6AgY8OzIHBo4bqjbiDhu6luZyB0w61jaCBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaC4NCg0KIyMgVGjhu5FuZyBrw6ogc3V5IGRp4buFbg0KDQojIyMgS2nhu4NtIMSR4buLbmggdMOtbmggxJHhu5ljIGzhuq1wDQoNCkdp4bqjIHRodXnhur90ICRIXzAkOiBYLCBZIMSR4buZYyBs4bqtcC4NCkdpw6EgdHLhu4sga2nhu4NtIMSR4buLbmg6DQpQaMawxqFuZyBwaMOhcCBDaGkgYuG7iW5oIHBoxrDGoW5nOg0KDQokJCBcbWF0aGNhbHtYfV4yID0gXHN1bVxsaW1pdHNfe2ksan0gXGZyYWN7KG5fe2lqfS1caGF0e1xtdX1fe2lqfSleMn17XGhhdHtcbXV9X3tpan19ICQkDQoNClbhu5tpICRuX3tpan0kIGzDoCBnacOhIHRy4buLIGPhu6dhIMO0IGksIGosICRcaGF0e1xtdX1fe2lqfSQgPSAkXGZyYWN7bl9pK25fan17bn0kLg0KDQoxLiBLaeG7g20gxJHhu4tuaCB0w61uaCDEkeG7mWMgbOG6rXAgZ2nhu69hIHkgdsOgIGFnZQ0KDQpgYGB7cn0NCmNoaXNxLnRlc3QoZGwxKQ0KYGBgDQoNCkvhur90IHF14bqjIHBfdmFsdWUgPCAyLjJlLTE2IDwgMCwwNSwgbsOqbiBiw6FjIGLhu48gJEhfMCQsIHThu6ljIGzDoCBwaOG6o24g4bupbmcgY+G7p2Ega2jDoWNoIGjDoG5nIHbhu4EgY2hp4bq/biBk4buLY2ggY8OzIGxpw6puIHF1YW4gdOG7m2kgxJHhu5kgdHXhu5VpIGPhu6dhIGtow6FjaCBow6BuZy4NCg0KMi4gS2nhu4NtIMSR4buLbmggdMOtbmggxJHhu5ljIGzhuq1wIGdp4buvYSB5IHbDoCBob3VzaW5nDQoNCmBgYHtyfQ0KY2hpc3EudGVzdChkbDIpDQpgYGANCg0KS+G6v3QgcXXhuqMgcF92YWx1ZSA9IDAsNTI4OCA+IDAsMDUsIG7Dqm4gY2jhuqVwIG5o4bqtbiAkSF8wJCwgdOG7qWMgbMOgIHBo4bqjbiDhu6luZyBj4bunYSBraMOhY2ggaMOgbmcgduG7gSBjaGnhur9uIGThu4tjaCDEkeG7mWMgbOG6rXAgduG7m2kgdmnhu4djIGtow6FjaCBow6BuZyDEkcOjIGPDsyBuaMOgIGhheSBjaMawYS4NCg0KMy4gS2nhu4NtIMSR4buLbmggdMOtbmggxJHhu5ljIGzhuq1wIGdp4buvYSB5IHbDoCBsb2FuDQoNCmBgYHtyfQ0KY2hpc3EudGVzdChkbDMpDQpgYGANCg0KS+G6v3QgcXXhuqMgcF92YWx1ZSA9IDAsNDY1OSA+IDAsMDUsIG7Dqm4gY2jhuqVwIG5o4bqtbiAkSF8wJCwgdOG7qWMgbMOgIHBo4bqjbiDhu6luZyBj4bunYSBraMOhY2ggaMOgbmcgduG7gSBjaGnhur9uIGThu4tjaCDEkeG7mWMgbOG6rXAgduG7m2kgdmnhu4djIGtow6FjaCBow6BuZyBjw7MgxJFpIHZheSBoYXkga2jDtG5nLg0KDQo0LiBLaeG7g20gxJHhu4tuaCB0w61uaCDEkeG7mWMgbOG6rXAgZ2nhu69hIHkgdsOgIGNvbnRhY3QNCg0KYGBge3J9DQpjaGlzcS50ZXN0KGRsNCkNCmBgYA0KDQpL4bq/dCBxdeG6oyBwX3ZhbHVlID0gMCwxNDI3ID4gMCwwNSwgbsOqbiBjaOG6pXAgbmjhuq1uICRIXzAkLCB04bupYyBsw6AgcGjhuqNuIOG7qW5nIGPhu6dhIGtow6FjaCBow6BuZyB24buBIGNoaeG6v24gZOG7i2NoIMSR4buZYyBs4bqtcCB24bubaSBjw6FjaCB0aOG7qWMgbGnDqm4gaOG7hyB24bubaSBraMOhY2ggaMOgbmcuDQoNCjUuIEtp4buDbSDEkeG7i25oIHTDrW5oIMSR4buZYyBs4bqtcCBnaeG7r2EgeSB2w6AgZHVyYXRpb24NCg0KYGBge3J9DQpjaGlzcS50ZXN0KGRsNSkNCmBgYA0KDQpL4bq/dCBxdeG6oyBwX3ZhbHVlIDwgMi4yZS0xNiA8IDAsMDUsIG7Dqm4gYsOhYyBi4buPICRIXzAkLCB04bupYyBsw6AgcGjhuqNuIOG7qW5nIGPhu6dhIGtow6FjaCBow6BuZyB24buBIGNoaeG6v24gZOG7i2NoIGPDsyBsacOqbiBxdWFuIHThu5tpIHPhu5EgbmfDoHkgbcOgIGtow6FjaCBow6BuZyDEkcOjIGLhuq90IMSR4bqndSBz4butIGThu6VuZyBjw6FjIGThu4tjaCB24bulIHThuqFpIGPDtG5nIHR5IHTDoGkgY2jDrW5oLg0KDQo2LiBLaeG7g20gxJHhu4tuaCB0w61uaCDEkeG7mWMgbOG6rXAgZ2nhu69hIHkgdsOgIGNhbXBhaWduDQoNCmBgYHtyfQ0KY2hpc3EudGVzdChkbDcpDQpgYGANCg0KS+G6v3QgcXXhuqMgcF92YWx1ZSA9IDAsMDA2ODIxIDwgMCwwNSwgbsOqbiBiw6FjIGLhu48gJEhfMCQsIHThu6ljIGzDoCBwaOG6o24g4bupbmcgY+G7p2Ega2jDoWNoIGjDoG5nIHbhu4EgY2hp4bq/biBk4buLY2ggY8OzIGxpw6puIHF1YW4gdOG7m2kgc+G7kSBjdeG7mWMgZ+G7jWkgbcOgIGtow6FjaCBow6BuZyBuaOG6rW4gxJHGsOG7o2MuDQoNCjcuIEtp4buDbSDEkeG7i25oIHTDrW5oIMSR4buZYyBs4bqtcCBnaeG7r2EgeSB2w6AgcF9vdXRjb21lDQoNCmBgYHtyfQ0KY2hpc3EudGVzdChkbDYpDQpgYGANCg0KS+G6v3QgcXXhuqMgcF92YWx1ZSA8IDIuMmUtMTYgPCAwLDA1LCBuw6puIGLDoWMgYuG7jyAkSF8wJCwgdOG7qWMgbMOgIHBo4bqjbiDhu6luZyBj4bunYSBraMOhY2ggaMOgbmcgduG7gSBjaGnhur9uIGThu4tjaCBjw7MgbGnDqm4gcXVhbiB04bubaSBr4bq/dCBxdeG6oyBj4bunYSBjaGnhur9uIGThu4tjaCB0csaw4bubYy4NCg0KOC4gS2nhu4NtIMSR4buLbmggdMOtbmggxJHhu5ljIGzhuq1wIGdp4buvYSB5IHbDoCBtYXJpdGFsDQoNCmBgYHtyfQ0KY2hpc3EudGVzdChkbDgpDQpgYGANCg0KS+G6v3QgcXXhuqMgcF92YWx1ZSA9IDAsNTcxNyA+IDAsMDUsIG7Dqm4gY2jhuqVwIG5o4bqtbiAkSF8wJCwgdOG7qWMgbMOgIHBo4bqjbiDhu6luZyBj4bunYSBraMOhY2ggaMOgbmcgduG7gSBjaGnhur9uIGThu4tjaCDEkeG7mWMgbOG6rXAgduG7m2kgdMOsbmggdHLhuqFuZyBow7RuIG5ow6JuIGPhu6dhIGtow6FjaCBow6BuZy4NCg0KOS4gS2nhu4NtIMSR4buLbmggdMOtbmggxJHhu5ljIGzhuq1wIGdp4buvYSB5IHbDoCBlZHVjYXRpb24NCg0KYGBge3J9DQpkbDkgPC0gdGFibGUoeSxlZCkNCmRsOQ0KY2hpc3EudGVzdChkbDkpDQpgYGANCg0KDQpL4bq/dCBxdeG6oyBwX3ZhbHVlID0gMSwyMDJlLTA5IDwgMCwwNSwgbsOqbiBiw6FjIGLhu48gJEhfMCQsIHThu6ljIGzDoCBwaOG6o24g4bupbmcgY+G7p2Ega2jDoWNoIGjDoG5nIHbhu4EgY2hp4bq/biBk4buLY2ggY8OzIGxpw6puIHF1YW4gdOG7m2kgdHLDrG5oIMSR4buZIGjhu41jIHbhuqVuIGPhu6dhIGtow6FjaCBow6BuZy4NCg0KIyMjIEtob+G6o25nIMaw4bubYyBsxrDhu6NuZyBjaG8gdOG7tyBs4buHDQoNCkPDtG5nIHRo4bupYyDGsOG7m2MgbMaw4bujbmcgdOG7tyBs4buHIChjaG8gbeG7mXQgdOG7lW5nIHRo4buDKQ0KDQokJCBcaGF0e3B9IC0gWl97XGFscGhhLzJ9XHNxcnR7XGZyYWN7XGhhdHtwfSgxLVxoYXR7cH0pfXtufX0gXGxlcSBQIFxsZXEgXGhhdHtwfSArIFpfe1xhbHBoYS8yfVxzcXJ0e1xmcmFje1xoYXR7cH0oMS1caGF0e3B9KX17bn19ICQkDQoNCsav4bubYyBsxrDhu6NuZyB04bu3IGzhu4cgcGjhuqNuIOG7qW5nIGPhu6dhIGtow6FjaCBow6BuZyB24buBIGNoaeG6v24gZGljaCBsw6AgdMOtY2ggY+G7sWMgY8OzIHBo4bqjaSBsw6AgMjglIGhheSBraMO0bmcuIFThu6ljIGzDoCBraeG7g20gxJHhu4tuaCBnaeG6oyB0aHV54bq/dDogJEhfMCQ6IHAgPSAwLDI4Lg0KDQpgYGB7cn0NCnRsIDwtIGRsW3kgPT0gIjEiLF0NCnByb3AudGVzdChsZW5ndGgodGwkeSksIGxlbmd0aChkbCR5KSwgcCA9IDAuMjgpDQpgYGANCg0KS+G6v3QgcXXhuqMgY2hvIHRo4bqleSwgcF92YWx1ZSA9IDAsNjIwNyA+IDUlLCB04bupYyBsw6AgY2jhuqVwIG5o4bqtbiAkSF8wJC4gVOG6oWkgbeG7qWMgw70gbmdoxKlhIDUlIHBo4bqjbiDhu6luZyBj4bunYSBraMOhY2ggaMOgbmcgduG7gSBjaGnhur9uIGThu4tjaCBsw6AgdMOtY2ggY+G7sWMgbMOgIDI4JSB0csOqbiB04buVbmcgNDQyNiBraMOhY2ggaMOgbmcuDQpLaG/huqNuZyDGsOG7m2MgbMaw4bujbmcgduG7m2kgxJHhu5kgdGluIGPhuq15IDk1JSBj4bunYSB04bu3IGzhu4cgc+G7kSBjxINuIGjhu5kgYsOhbiBsw6AgKDAsMjYzNDU3OzAsMjkwMDI5MikuDQoNCiMjIE3DtCBow6xuaCBo4buTaSBxdXkNCg0KROG7ryBsaeG7h3Ugbmjhu4sgcGjDom4gbMOgIGThu68gbGnhu4d1IMSR4buLbmggdMOtbmggY2jhu4kgbmjhuq1uIDIgZ2nDoSB0cuG7izogxJDDum5nL1NhaTsgxJDhu5NuZyDDvS9LaMO0bmcgxJHhu5NuZyDDvTsuLi4uDQoNCiQkIGxvZ2l0KFxwaSkgPSBsb2coXGZyYWN7XHBpfXsxLVxwaX0pID0gXGJldGFfMCArIFxiZXRhXzFYXzEgKyBcYmV0YV8yWF8yICsuLi4rIFxiZXRhX2tYX2sgJCQgDQoNCiQkIHByb2JpdChccGkpID0gXFBoaV57LTF9KFxwaSkgPSBcYmV0YV8wICsgXGJldGFfMVhfMSArIFxiZXRhXzJYXzIgKy4uLisgXGJldGFfa1hfayAkJA0KDQokJCBjbG9nbG9nKFxwaSkgPSBsb2coLWxvZygxLVxwaSkpID0gXGJldGFfMCArIFxiZXRhXzFYXzEgKyBcYmV0YV8yWF8yICsuLi4rIFxiZXRhX2tYX2sgJCQNCg0KVuG7m2kgJFxwaSQgbMOgIHjDoWMgc3XhuqV0IMSR4buDIGJp4bq/biBwaOG7pSB0aHXhu5ljIG5o4bqtbiBnacOhIHRy4buLICJ0aMOgbmggY8O0bmciLiDEkOG7kWkgduG7m2kgaMOgbSBnbG0gcGjhuqFtIHRyw7kgdGjhu6kgaGFpIGPhu6dhIGJp4bq/biBuaOG7iyBwaMOibiB0aOG7gyBoaeG7h24gY2hvICJ0aMOgbmggY8O0bmciIChjaMO6bmcgdGEgc+G7rSBk4bulbmcgaMOgbSBsZXZlbHMoKSDEkeG7gyBraeG7g20gdHJhIHRo4bupIHThu7EgY+G7p2EgY8OhYyBwaOG6oW0gdHLDuSBt4buZdCBiaeG6v24gxJHhu4tuaCB0w61uaCkuDQoNCiMjIyBNw7QgaMOsbmggbG9naXQNCg0KYGBge3J9DQpsZyA8LSBnbG0oZGF0YSA9IGRsLCBmYWN0b3IoeSkgfiBhZ2UgKyBkciArIGNwICsgcG9jLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rID0gImxvZ2l0IikpDQpzdW1tYXJ5KGxnKQ0KYGBgDQoNCiQkIGxvZ2l0KFxwaSkgPSBsb2coXGZyYWN7XHBpfXsxLVxwaX0pID0gLTMsMDM3NzM3OSArIDAsMDExMDM4NGFnZSArIDAsMDAzNjUxM2RyIC0gMCwxNDQ5OTY5Y3AgKyAyLDQ3ODM0MDFwb2NzdWNjZXNzICQkDQoNCktp4buDbSDEkeG7i25oIHPhu7EgcGjDuSBo4bujcCBj4bunYSBtw7QgaMOsbmg6DQpHaeG6oyB0aHV54bq/dCAkSF8wJDogTcO0IGjDrG5oIGtow7RuZyBwaMO5IGjhu6NwLg0KDQpgYGB7cn0NCmxyX3Rlc3QgPC0gYW5vdmEobGcsIHRlc3QgPSAiQ2hpc3EiKQ0KcF92YWx1ZSA8LSBscl90ZXN0JFByWzJdIA0KcF92YWx1ZQ0KYGBgDQoNClRhIHRo4bqleSwgcF92YWx1ZSA9IDQsNTc1MTllLTA5IDwgMCwwNSwgbsOqbiB0YSBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgJEhfMCQsIG3DtCBow6xuaCBsb2dpdCBsw6AgbcO0IGjDrG5oIHBow7kgaOG7o3AgduG7m2kgZOG7ryBsaeG7h3UuDQoNCiMjIyBNw7QgaMOsbmggcHJvYml0DQoNCmBgYHtyfQ0KcGIgPC0gZ2xtKGRhdGEgPSBkbCwgZm9ybXVsYSA9IGZhY3Rvcih5KSB+IGFnZSArIGRyICsgY3AgKyBwb2MsIGZhbWlseSA9IGJpbm9taWFsKGxpbmsgPSAicHJvYml0IikpDQpsZXZlbHMoZmFjdG9yKHkpKQ0Kc3VtbWFyeShwYikNCmBgYA0KDQokJCBwcm9iaXQoXHBpKT0gXFBoaSgxLVxwaSkgPSAtMSw3MjE5MjIxICsgMCwwMDY1Nzc0YWdlICsgMCwwMDE4Mzc5ZHIgLSAwLDA3NTExODFjcCArIDEsNDUwNjA0NHBvY3N1Y2Nlc3MgJCQNCg0KS2nhu4NtIMSR4buLbmggc+G7sSBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaDoNCkdp4bqjIHRodXnhur90ICRIXzAkOiBNw7QgaMOsbmgga2jDtG5nIHBow7kgaOG7o3AuDQoNCmBgYHtyfQ0KbHJfdGVzdCA8LSBhbm92YShwYiwgdGVzdCA9ICJDaGlzcSIpDQpwX3ZhbHVlIDwtIGxyX3Rlc3QkUHJbMl0gDQpwX3ZhbHVlDQpgYGANCg0KVGEgdGjhuqV5LCBwX3ZhbHVlID0gNyw5NzAwNjFlLTA5IDwgMCwwNSwgbsOqbiB0YSBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgJEhfMCQsIG3DtCBow6xuaCBwcm9iaXQgbMOgIG3DtCBow6xuaCBwaMO5IGjhu6NwIHbhu5tpIGThu68gbGnhu4d1Lg0KDQojIyMgTcO0IGjDrG5oIGNsb2dsb2cNCg0KYGBge3J9DQpjbCA8LSBnbG0oZGF0YSA9IGRsLCBmb3JtdWxhID0gZmFjdG9yKHkpIH4gYWdlICsgZHIgKyBjcCArIHBvYywgZmFtaWx5ID0gYmlub21pYWwobGluayA9ICJjbG9nbG9nIikpDQpsZXZlbHMoZmFjdG9yKHkpKQ0Kc3VtbWFyeShjbCkNCmBgYA0KDQokJCBjbG9nbG9nKFxwaSkgPSAtMiw2MDM1Mzg1ICsgMCwwMDkwNjUwYWdlICsgMCwwMDIwMzA3ZHIgLSAwLDEwODg3MTBjcCArIDEsODY5ODI5MXBvY3N1Y2Nlc3MgJCQNCg0KS2nhu4NtIMSR4buLbmggc+G7sSBwaMO5IGjhu6NwIGPhu6dhIG3DtCBow6xuaDoNCkdp4bqjIHRodXnhur90ICRIXzAkOiBNw7QgaMOsbmgga2jDtG5nIHBow7kgaOG7o3AuDQoNCmBgYHtyfQ0KbHJfdGVzdCA8LSBhbm92YShjbCwgdGVzdCA9ICJDaGlzcSIpDQpwX3ZhbHVlIDwtIGxyX3Rlc3QkUHJbMl0gDQpwX3ZhbHVlDQpgYGANCg0KVGEgdGjhuqV5LCBwX3ZhbHVlID0gMSw3NzUxMzllLTA5IDwgMCwwNSwgbsOqbiB0YSBiw6FjIGLhu48gZ2nhuqMgdGh1eeG6v3QgJEhfMCQsIG3DtCBow6xuaCBjbG9nbG9nIGzDoCBtw7QgaMOsbmggcGjDuSBo4bujcCB24bubaSBk4buvIGxp4buHdS4NCg0KIyMjIEzhu7FhIGNo4buNbiBtw7QgaMOsbmgNCg0KVGEgxJHDoW5oIGdpw6EgY8OhYyBtw7QgaMOsbmggaOG7k2kgcXV5IGPhu5UgxJFp4buDbiBk4buxYSB2w6BvIGjhu4cgc+G7kSB4w6FjIMSR4buLbmggbcO0IGjDrG5oICgkUl4yJCksIG5oxrBuZyDEkeG7kWkgduG7m2kgY8OhYyBtw7QgaMOsbmggaOG7k2kgcXV5IHR1eeG6v24gdMOtbmggdOG7lW5nIHF1w6F0LCB0YSBz4butIGThu6VuZyBjw6FjIHRpw6p1IGNow60gc2F1Og0KDQoxLiBBSUMgxJHGsOG7o2MgxJHhu4EgeHXhuqV0IGLhu59pIEFrYWlrZSBIaXJvdHVndSwgbeG7mXQgbmjDoCB0aOG7kW5nIGvDqiBo4buNYyBuZ8aw4budaSBOaOG6rXQuIEFJQyBsw6AgbeG7mXQgdGnDqnUgY2jDrSDEkcaw4bujYyBz4butIGThu6VuZyBt4buZdCBjw6FjaCBwaOG7lSBiaeG6v24gxJHhu4MgxJHDoW5oIGdpw6EgbeG7mXQgbcO0IGjDrG5oIGjhu5NpIHF1eSDEkcaw4bujYyDGsOG7m2MgbMaw4bujbmcgYuG7n2kgcGjGsMahbmcgcGjDoXAgTWF4aW11bSBMaWtla2lob29kIChNTCkuIE3hu5l0IGPDoWNoIGNodW5nIGNodW5nIGdpw6EgdHLhu4sgY+G7p2EgQUlDIGPDoG5nIG5o4buPIHRow6wgbcO0IGjDrG5oIGPDoG5nIHThu5F0LiBBSUMgxJHGsOG7o2MgdMOtbmggYuG6sW5nIGPDtG5nIHRo4bupYyBzYXU6DQoNCiQkIEFJQyA9IC0ybG4oTCkgKyAyayAkJA0KDQpW4bubaSBMIGzDoCBnacOhIHRy4buLIGPhu7FjIMSR4bqhaSBj4bunYSBow6BtIGjhu6NwIGzDvSAobGlrZWxpaG9vZCBmdW5jdGlvbikgdsOgIGsgbMOgIHPhu5EgdGhhbSBz4buRIGPhu6dhIG3DtCBow6xuaC4NCktoaSB0aOG7sWMgaGnhu4duIHZp4buHYyDGsOG7m2MgbMaw4bujbmcgbcO0IGjDrG5oIGjhu5NpIHF1eSBi4bqxbmcgbOG7h25oIGdsbSB0aMOsIGNo4buJIHPhu5EgQUlDIMSRw6MgxJHGsOG7o2MgdMOtbmggdG/DoW4gdsOgIHRo4buDIGhp4buHbiB0csOqbiBi4bqjbmcga+G6v3QgcXXhuqMgKCBi4bqxbmcgbOG7h25oIHN1bW1hcnkpLg0KDQoyLiBEZXZpYW5jZSBjxaluZyBsw6AgbeG7mXQgdGnDqnUgY2jDrSBy4bqldCBwaOG7lSBiaeG6v24gxJHGsOG7o2Mgc+G7rSBk4bulbmcgxJHhu4MgxJHDoW5oIGdpw6EgbeG7mXQgbcO0IGjDrG5oIGjhu5NpIHF1eSDEkcaw4bujYyDGsOG7m2MgbMaw4bujbmcgYuG7n2kgcGjGsMahbmcgcGjDoXAgSOG7o3AgbMO9IGPhu7FjIMSR4bqhaSAoTUwpLiBN4buZdCBjw6FjaCB04buVbmcgcXXDoXQsIGPFqW5nIGdp4buRbmcgbmjGsCBjaOG7iSB0acOqdSBBSUMsIGdpw6EgdHLhu4sgY+G7p2EgRGV2aWFuY2UgY8Ogbmcgbmjhu48gdGjDrCBtw7QgaMOsbmggY8OgbmcgdOG7kXQuDQpsxrB1IMO9OiBLaGkgdGjhu7FjIGhp4buHbiB2aeG7h2MgxrDhu5tjIGzGsOG7o25nIG3DtCBow6xuaCBo4buTaSBxdXkgYuG6sW5nIGzhu4duaCBnbG0gdGjDrCBjaOG7iSBz4buRIEFJQyB2w6AgRGV2aWFuY2UgxJHDoyDEkcaw4bujYyB0w61uaCB0b8OhbiB2w6AgdGjhu4MgaGnhu4duIHRyw6puIGLhuqNuZyBr4bq/dCBxdeG6oyAoIGLhurFuZyBs4buHbmggc3VtbWFyeSkuDQoNCjMuIEzDoCBjaOG7iSB0acOqdSBkw7luZyDEkeG7gyDEkcOhbmggZ2nDoSBtw7QgaMOsbmggaOG7k2kgcXV5IGxvZ2lzdGljLCBCcmllciBTY29yZSDEkcaw4bujYyB0w61uaCBuaMawIHNhdToNCg0KJCQgQiA9IFxmcmFjezF9e259IFxzdW1fe2k9MX1ee259IChwX2kgLSBvX2kpICQkDQoNClRyb25nIMSRw7M6ICRwX2kkLCAkb19pJCBs4bqnbiBsxrDhu6N0IGzDoCBnacOhIHRy4buLIHjDoWMgc3XhuqV0IHF1YW4gc8OhdCDEkcaw4bujYywgdsOgIGdpw6EgdHLhu4sgeMOhYyBzdeG6pXQgdMOtbmggcmEgdOG7qyBtw7QgaMOsbmguDQpHacOhIHRy4buLIGPhu6dhIEJyaWVyIFNjb3JlIGPDoG5nIG5o4buPIG5naMSpYSBsw6AgY2jDqm5oIGzhu4djaCBnaeG7r2EgeMOhYyBzdeG6pXQgdGjhu7FjIHThur8gdsOgIHjDoWMgc3XhuqV0IHTDrW5oIHThu6sgbcO0IGjDrG5oIGPDoG5nIG5o4buPLCBuZ2jEqWEgbMOgIG3DtCBow6xuaCBjw6BuZyB04buRdC4NCg0KYGBge3J9DQojIFRpw6p1IGNow60gQUlDIC0gQWthaWtlIEluZm9ybWF0aW9uIENyaXRlcmlvbg0KYWljMSA8LSBBSUMobGcpDQphaWMyIDwtIEFJQyhwYikNCmFpYzMgPC0gQUlDKGNsKQ0KQUlDIDwtY2JpbmQoYWljMSxhaWMyLGFpYzMpDQpBSUMNCiMgVGnDqnUgY2jDrSBEZXZpYW5jZQ0KZGUxIDwtIGRldmlhbmNlKGxnKQ0KZGUyIDwtIGRldmlhbmNlKHBiKQ0KZGUzIDwtIGRldmlhbmNlKGNsKQ0KZGV2aWFuY2UgPC0gY2JpbmQoZGUxLGRlMixkZTMpDQpkZXZpYW5jZQ0KIyBUacOqdSBjaMOtIEJyaWVyIFNjb3JlDQpiczEgPC0gQnJpZXJTY29yZShsZykNCmJzMiA8LSBCcmllclNjb3JlKHBiKQ0KYnMzIDwtIEJyaWVyU2NvcmUoY2wpDQpCcmllclNjb3JlIDwtIGNiaW5kKGJzMSxiczIsYnMzKQ0KQnJpZXJTY29yZQ0KYGBgDQoNClRow7RuZyBxdWEgMyBr4bq/dCBxdeG6oyBjw6FjIHRpw6p1IGNow60gxJHDoW5oIGdpw6EgbcO0IGjDrG5oIHRyw6puLCB0YSB0aOG6pXkgcuG6sW5nLCBtw7QgaMOsbmggcHJvYml0IGPDsyBjw6FjIGdpw6EgdHLhu4sgQUlDLCBEZXZpYW5jZSB2w6AgQnJpZXIgU2NvcmUgbmjhu48gbmjhuqV0LiBWw6wgduG6rXksIG3DtCBow6xuaCBsb2dpdCBsw6AgbcO0IGjDrG5oIHThu5F0IG5o4bqldCBjaG8gZOG7ryBsaeG7h3UgbsOgeS4NCg0KJCQgbG9naXQoXHBpKSA9IGxvZyhcZnJhY3tccGl9ezEtXHBpfSkgPSAtMywwMzc3Mzc5ICsgMCwwMTEwMzg0YWdlICsgMCwwMDM2NTEzZHIgLSAwLDE0NDk5NjljcCArIDIsNDc4MzQwMXBvY3N1Y2Nlc3MgJCQNCg0KVuG7m2kgJFxwaSQgbMOgIHjDoWMgc3XhuqV0IMSR4buDIGJp4bq/biB5IG5o4bqtbiBnacOhIHRy4buLICJ0w61jaCBj4buxYyIuDQoNCk3DtCBow6xuaCDEkcaw4bujYyDEkcawYSByYSBjdeG7kWkgY8O5bmcgbMOgIG3DtCBow6xuaCBo4buTaSBxdXkgbG9naXN0aWMgduG7m2kgaMOgbSBsacOqbiBr4bq/dCBwcm9iaXQgY8OzIGJp4bq/biBwaOG7pSB0aHXhu5ljIGzDoCBwaOG6o24g4bupbmcgY+G7p2Ega2jDoWNoIGjDoG5nIHbhu5tpIGNoaeG6v24gZOG7i2NoIGPhu6dhIGPDtG5nIHR5ICh5KSB2w6AgY8OhYyBiaeG6v24gxJHhu5ljIGzhuq1wLiBUaGVvIGvhur90IHF14bqjIGjhu5NpIHF1eSwgbcO0IGjDrG5oIGPDsyAzIHnhur91IHThu5EgY8OzIOG6o25oIGjGsOG7n25nIMSR4bq/biBwaOG6o24g4bupbmcgY+G7p2Ega2jDoWNoIGjDoG5nICh5KSBsw6AgxJHhu5kgdHXhu5VpIGPhu6dhIGtow6FjaCBow6BuZyAoYWdlKSwgc+G7kSBuZ8OgeSBr4buDIHThu6sga2hpIGLhuq90IMSR4bqndSBz4butIGThu6VuZyBjw6FjIGThu4tjaCB24bulIHThuqFpIGPDtG5nIHR5IHTDoGkgY2jDrW5oIGPhu6dhIGtow6FjaCBow6BuZyAoZHIpLCBr4bq/dCBxdeG6oyBj4bunYSBjaGnhur9uIGThu4tjaCB0csaw4bubYyAocG9jKSDhu58gbeG7qWMgw70gbmdoxKlhIDUlLg0KDQojICoqQ2jGsMahbmc1LiBL4bq/dCBsdeG6rW4gdsOgIGtp4bq/biBuZ2jhu4sqKg0KDQojIyBL4bq/dCBsdeG6rW4NCg0KS+G6v3QgcXXhuqMgYsOgaSBuZ2hpw6puIGPhu6l1IGNobyB0aOG6pXksIHbhu5tpIG3hu6ljIMO9IG5naMSpYSA1JSwgxJHhu5kgdHXhu5VpIGPhu6dhIGtow6FjaCBow6BuZyAoYWdlKSwgc+G7kSBuZ8OgeSBr4buDIHThu6sga2hpIGLhuq90IMSR4bqndSBz4butIGThu6VuZyBjw6FjIGThu4tjaCB24bulIHThuqFpIGPDtG5nIHR5IHTDoGkgY2jDrW5oIGPhu6dhIGtow6FjaCBow6BuZyAoZHIpIGPDsyB0w6FjIMSR4buZbmcgxJHhur9uIHBo4bqjbiDhu6luZyBj4bunYSBraMOhY2ggaMOgbmcgduG7gSBjaGnhur9uIGThu4tjaCAoeSkuIEPhu6UgdGjhu4MsIDMgeeG6v3UgdOG7kSBuw6B5IMSR4buBdSBjw7MgdMOhYyDEkeG7mW5nIHTDrWNoIGPhu7FjIMSR4bq/biBwaOG6o24g4bupbmcgY+G7p2Ega2jDoWNoIGjDoG5nLg0KDQojIyBLaeG6v24gbmdo4buLDQoNCk5o4bqxbSBt4bulYyDEkcOtY2ggY+G6o2kgdGhp4buHbiBoaeG7h3UgcXXhuqMgaG/huqF0IMSR4buZbmcgY+G7p2EgY8O0bmcgdHkgdMOgaSBjaMOtbmggcXVhIGPDoWMgY2hp4bq/biBk4buLY2guIEThu7FhIHbDoG8ga+G6v3QgcXXhuqMgY+G7p2EgYsOgaSBuZ2hpw6puIGPhu6l1LCB0w6FjIGdp4bqjIMSR4buBIHh14bqldCBt4buZdCBz4buRIGtp4bq/biBuZ2jhu4sgc2F1Og0KxJDhu5kgdHXhu5VpIGPhu6dhIGtow6FjaCBow6BuZyBjw7Mg4bqjbmggaMaw4bufbmcgxJHhur9uIHBo4bqjbiDhu6luZyBj4bunYSBraMOhY2ggaMOgbmcgduG7gSBjaGnhur9uIGThu4tjaCwgdsOsIHbhuq15IGNoaeG6v24gZOG7i2NoIG3DoCBjw7RuZyB0eSB0w6BpIGNow61uaCDEkcawYSByYSBj4bqnbiBoxrDhu5tuZyDEkeG6v24gbmjhu69uZyBraMOhY2ggaMOgbmcgY8OzIMSR4buZIHR14buVaSB0cnVuZyBuacOqbiB0cuG7nyBsw6puIMSR4buDIHTEg25nIHBo4bqjbiDhu6luZyB0w61jaCBj4buxYyBj4bunYSBjaGnhur9uIGThu4tjaCBoxqFuLiBIxqFuIG7hu69hLCBz4buRIG5nw6B5IGvhu4MgdOG7qyBraGkgYuG6r3QgxJHhuqd1IHPhu60gZOG7pW5nIGPDoWMgZOG7i2NoIHbhu6UgdOG6oWkgY8O0bmcgdHkgY8OgbmcgbMOidSB0aMOsIHBo4bqjbiBo4buTaSBj4bunYSBraMOhY2ggaMOgbmcgduG7gSBjaGnhur9uIGThu4tjaCBz4bq9IHTDrWNoIGPhu7FjLCBuw6puIGNoaeG6v24gZOG7i2NoIHPhur0gaMaw4bubbmcgxJHhur9uIGPDoWMgxrB1IMSRw6NpIGNobyBraMOhY2ggaMOgbmcgdGjDom4gdGhp4bq/dCwgbMOidSBuxINtLC4uLiBWw6AgY3Xhu5FpIGPDuW5nIGvhur90IHF14bqjIGPhu6dhIGNoaeG6v24gZOG7i2NoIHRyxrDhu5tjIHRow6BuaCBjw7RuZyBz4bq9IGPDsyB0w61jaCBj4buxYyB24bubaSBjaGnhur9uIGThu4tjaCBt4bubaSBuw6puIHRhIGPhuqduIHBo4bqjaSBuaOG6r20gxJHhur9uIG5o4buvbmcga2jDoWNoIGjDoG5nIGPDsyBwaOG6o24gaOG7k2kgdMOtY2ggY+G7sWMgdOG7qyBjaGnhur9uIGThu4tjaCB0csaw4bubYyBuaGnhu4F1IGjGoW4uDQoNCiMgVMOgaSBsaeG7h3UgdGhhbSBraOG6o28NCg0KWzFdIFQuIEsuIFRoYW5oLCBULiBNLiBUxrDhu51uZyAmIFYuIEEuIEwuIER1eSwgR2nDoW8gdHLDrG5oIFBow6JuIHTDrWNoIGThu68gbGnhu4d1IMSR4buLbmggdMOtbmgsIDIwMjIuDQoNCg==