thu nhập số vụ tai nạn (có gây ra tử vong) trong vòng 1 năm ở khu vực nông thôn trên tuyến đường cao tốc này, dữ liệu sẽ được ghi nhận hằng tuần.

a. Lấy mẫu Poisson

Số vụ tai nạn gây tử vong trong một tuần là biến ngẫu nhiên có phân phối Poisson (mô hình Poisson). Nó được xác định hoàn toàn bởi tham số λ là giá trị trung bình của số vụ tai nạn có tử vong trong 1 tuần. Ký hiệu Y là số vụ tai nạn có tử vong trong một tuần trên tuyến đường này, thì Y là biến ngẫu nhiên có phân phối Poisson. Công thức tính xác suất cho Y là

\[ P(Y = k) = \frac{e^{-\lambda} \lambda^k}{k!}, \quad k = 0,1,2,\ldots \tag{1.2.1} \]

Giả sử tai nạn gây tử vong trên tuyến đường MI xảy ra ở mức trung bình là 2 vụ mỗi tuần, tức là \(Y \sim P(\lambda)\), với \(\lambda = 2\), khi đó xác suất để không có tai nạn gây tử vong (\(Y = 0\)) trong tuần là:

\[ P(Y = 0) = \frac{e^{-2} (2)^0}{0!} = e^{-2} = 0.135 \]

Tương tự:

\[ P(Y = 1) = \frac{(e^{-2} (2)^1)}{1!} = 2e^{-2} = 0.271 \]

Bảng 1.1 liệt kê xác suất tương ứng với số vụ tai nạn gây tử vong, và hình 1.1 mô phỏng chúng. Mặc dù Y lấy tất cả các giá trị \(k\) nguyên, không âm, nhưng với khi \(\lambda = 2\) thực tế cho thấy bảng 1.1, số vụ tai nạn gây tử vong hầu như trong phạm vi từ 0 đến 8.

Với giá trị số vụ tai nạn gây tử vong trung bình là không thay đổi từ trung bình 6 vụ mỗi tuần, thì trong một khoảng thời gian 1 tuần, số vụ tai nạn gây tử vong là biến ngẫu nhiên có phân phối Poisson với trung bình là 2t. Vì dữ liệu được ghi lại theo tuần, phân phối Poisson có \(\lambda = 6\). Xác suất để không có tai nạn gây tử vong trên tuyến đường này là \(P(Y = 6) = \frac{6^6 e^{-6}}{6!} = 0.002\). Hình 1.1 mô phỏng cho phân phối Poisson có trung bình là \(\lambda = 6\).

Phân phối Poisson có dạng \(N(\mu, \sigma^2)\) để biểu thị tham số \(\mu, \sigma^2\), phân phối Poisson chỉ có một tham số trung bình \(\lambda\) cũng là phương sai của phân phối.

\[ E(Y) = Var(Y) = \lambda, \quad \sigma(Y) = \sqrt{\lambda} \]

Hình 1.1 minh họa phân phối Poisson trong hai trường hợp: Trung bình bằng 2 (có độ lệch chuẩn bằng \(\sqrt{2} = 1.4\)) và trung bình bằng 6 (có độ lệch chuẩn bằng \(\sqrt{6} = 2.4\)). Do đó phân phối Poisson là phương sai của nó tăng lên cùng trung bình. Vì thế mẫu có xu hướng thay đổi nhiều hơn khi mức trung bình của phân phối Poisson tăng lên. Lưu ý là phương sai bằng trung bình, phân phối Poisson có độ lệch chuẩn tăng lên khi tăng số vụ tai nạn trung bình và do đó là tính chất của mẫu trong phân phối chuẩn.

Giả sử người ta muốn biết xác suất sự khác biệt giữa giá trị trung bình, trong bất kỳ 2 tuần nào đó theo phân phối Poisson. Hiện tượng này gọi là quá phân tán. Vì dữ của chúng ta giả định rằng số vụ tai nạn gây tử vong dự kiến là như nhau (cụ thể là 2) vào mỗi tuần trong năm. Tuy nhiên, giao thông có những biến động theo mùa,có thể tạo ra biến động trong tuần theo kỳ vọng này.

b. Lấy mẫu nhị thức

Trong ví dụ về số ca tử vong do giao thông, với mô hình lấy mẫu Poisson thì số vụ tai nạn gây tử vong hàng tuần là ngẫu nhiên, như không phải cố định và không sai vị trí nằm ngang, tức là tử vong này không phụ thuộc vào tử vong khác. Bây giờ để xác định tỷ lệ tử vong hàng tuần p, tức là xác suất để một vụ tai nạn trên tuyến đường này gây tử vong, chúng ta cần có thông tin bổ sung về số tai nạn xảy ra trong tuần đó. Nếu có mẫu là vô hạn và bằng N, như chọn không phải ngẫu nhiên. Khi đó nếu gọi Y là số vụ tai nạn gây tử vong trong N vụ tai nạn không gây tử vong, thì Y ~ N - số vụ tai nạn (Số vụ tai nạn gây tử vong). Ta có các biến ngẫu nhiên có phân phối Nhị thức B(N, p) và B(N, 1-p) tương ứng.

Để minh họa, giả sử số lượng các tai nạn gây tử vong 10 vụ tai nạn, có phân phối Poisson với giá trị trung bình là 2/ và số vụ tai nạn không gây tử vong có phân phối Poisson với trung bình là 8/. Các nhà nghiên cứu quan sát số tổng số tai nạn N và số lượng quá trình quan sát. Số lượng Y các vụ tai nạn gây tử vong và số lượng N - Y vụ tai nạn không gây tử vong trong N vụ tai nạn có phân phối nhị thức. Số lượng các tai nạn gây tử vong có phân phối nhị thức với N và tỷ lệ tử vong P = 2/(2+8) = 2/10, đó là xác suất bắt kỳ tai nạn xảy ra gây tử vong. Xác suất này bằng trung bình Poisson đối với các tai nạn gây tử vong chia cho tổng cộng trung bình Poisson đối với các tai nạn gây tử vong và không gây tử vong. Số lượng tai nạn không gây tử vong bằng (N - số vụ tai nạn gây tử vong) và có phân phối nhị thức với N vụ tai nạn và tham số 0.8.

Vậy p biểu thị xác suất thành công cho một thử nghiệm nhất định. Y biểu thị số lượng thành công trong số N thử nghiệm. Sự thay đổi của Y có phân phối nhị thức với N thử nghiệm N và tham số p.

\[ P(Y = k) = \frac{N!}{k!(N-k)!} p^k (1-p)^{N-k}, \quad k = 0,1,2,\ldots,N \quad (1.2.2) \]

Để minh họa, cho Y biểu thị số vụ tai nạn chết người trong 10 vụ tai nạn, xác suất tử vong là 0.2 cho mỗi tai nạn; khi đó N = 10 và p = 0.2. Xác suất không có tai nạn gây tử vong (Y = 0), và do đó N - Y = 10 tai nạn không gây tử vong, bằng

\[ P(Y = 0) = \frac{10!}{0!10!} (0.2)^0 (0.8)^{10} = 0.8^{10} = 0.107; \]

Xác suất để có đúng 1 tai nạn gây tử vong bằng

\[ P(Y = 1) = \frac{10!}{1!9!} (0.2)^1 (0.8)^9 = 10(0.2)(0.8)^9 = 0.268. \]

\[ \text{Bảng 1.1 liệt kê toàn bộ phân phối.} \]

Phân phối nhị thức cho N thử nghiệm với tham số p có trung bình và phương sai. Không giống như phương sai của phân phối Poisson, phương sai của phân phối nhị thức nhỏ hơn giá trị trung bình. Phân phối nhị thức trong Bảng 1.1 có trung bình là 10 (0.2) = 2.0 và độ lệch là \(\sqrt{10 (0.2) (0.8)}\) = 1.6. Giá trị trung bình thì tương đương như trung bình Poisson trong Bảng 1.1, nhưng nhị thức biểu hiện ít hơn một chút. Cả hai phân phối nhị thức và Poisson đều tuân theo phân bố chuẩn khi tăng trung bình của chúng, và khi trung bình lớn thì chúng thường xấp xỉ bằng phân phối chuẩn.

Tùy vào mục đích khảo sát, nghiên cứu mà đối với một biến định tính, người ta có thể phân biệt giá trị của nó thành nhiều hơn hai loại. Chẳng hạn, người ta có thể khảo sát chi tiết hơn trong mỗi vụ tai nạn giao thông với các loại “Không bị thương”, “thương tích không cần phải nằm viện”, “thương tích cần phải nằm viện”, “tử vong”. Các số đếm trong các loại khác nhau này tương ứng với những phân phối nhị thức có tỷ lệ p khác nhau. Phân phối nhị thức lấy mẫu cho phân phối đa thức gọi là lấy mẫu Poisson. Phân phối nhị thức, trong trường hợp này là phân phối nhị thức, khi chỉ có hai kết quả có thể cho mỗi thử nghiệm. Chúng ta sẽ đề cập đến phân phối đa thức cho mô hình các biến đáp ứng đa loại.

\[ P(Y = k) = \]

\[ \begin{array}{c|cc} Y & \text{Poisson} & \text{Nhị thức} \\ \hline 0 & 0.135 & 0.107 \\ 1 & 0.271 & 0.268 \\ 2 & 0.271 & 0.302 \\ 3 & 0.180 & 0.201 \\ 4 & 0.090 & 0.088 \\ 5 & 0.036 & 0.026 \\ 6 & 0.012 & 0.006 \\ 7 & 0.003 & 0.001 \\ 8 & 0.001 & 0.000 \\ 9 & 0.000 & 0.000 \\ 10 & 0.000 & 0.000 \\ >11 & 0.000 & 0.000 \\ \end{array} \]

\[ \text{Bảng 1.1: Phân phối xác suất số tai nạn gây tử vong trong một tuần theo các mô hình như là: Poisson với trung bình là 2.0} \\ \text{(Chú ý: Nhị thức có N = 10 và p = 0.2)} \]

# Load necessary library
library(ggplot2)

# Create data for mean = 2
x_combined <- 0:19
mu1 <- 2
mu2 <- 6
y1 <- dpois(x_combined, mu1)
y2 <- dpois(x_combined, mu2)
data_combined <- data.frame(
  x = rep(x_combined, 2),
  y = c(y1, y2),
  group = factor(rep(c("Mean = 2", "Mean = 6"), each = length(x_combined)))
)

# Plot the combined Poisson distributions
ggplot(data_combined, aes(x = x, y = y, color = group)) +
  geom_point() +
  geom_line() +
  ggtitle("Poisson Distribution (Mean = 2 and Mean = 6)") +
  xlab("Number of Events") +
  ylab("Probability") +
  theme_minimal() +
  scale_color_manual(values = c("Mean = 2" = "blue", "Mean = 6" = "green"))

[Hình 1.1: Phân phối Poisson có trung bình 2 và 6.]

1.4 Ước lượng hợp lý cực đại (Maximum likelihood estimation)

1.4.1. Các khái niệm về ước lượng hợp lý cực đại

Giả sử biến quan sát \(X\) có phân phối xác suất phụ thuộc vào tham số \(\theta\) chưa biết, ta cần tìm ước lượng cho \(\theta\). Với \(W_n = (X_1, X_2, ..., X_n)\) là mẫu ngẫu nhiên của biến quan sát \(X\).

Ký hiệu \(q(x, \theta)\) là xác suất để \(W_n = (X_1, X_2, ..., X_n)\) nhận giá trị \(x = (x_1, x_2, ..., x_n)\); \(q(x; \theta) = P(X_1 = x_1, X_2 = x_2, ..., X_n = x_n) = P(W_n = x)\). Nếu \(X_i\) biến ngẫu nhiên rời rạc, và \(q(x, \theta)\) là giá trị hàm mật độ xác suất của \(X\) thì \(q(x, \theta)\) là giá trị hàm mật độ xác suất tại \(x\) của \(W_n = (X_1, X_2, ..., X_n)\) tại \(X_i\) là biến ngẫu nhiên liên tục.

Xuất phát từ ý tưởng: “cái đã xảy ra phải là cái có khả năng nhất”, người ta xem giá trị ước lượng hợp lý nhất cho tham số \(\theta\) là giá trị \(\theta\) làm cho giá trị \(q(x, \theta)\) đạt cực đại.

Định nghĩa 1.1:

Ta gọi hàm \(L(\theta) = q(X_1, X_2, ..., X_n, \theta)\) là hàm hợp lý và giá trị cực đại hàm hợp lý đó là ước lượng hợp lý cực đại \(\hat{\theta}\) của tham số \(\theta\), tức là:

\[ L(\hat{\theta}) = q(X_1, X_2, ..., X_n, \hat{\theta}) = \max_{\theta} q(X_1, X_2, ..., X_n, \theta) \]

1.4.2. Phương pháp tìm ước lượng hợp lý cực đại

Vì hàm hợp lý \(L(\theta)\) ở dạng tích của các thừa số chứa \(\theta\), nên việc khảo sát cực trị của nó là khá phức tạp, mặt khác nếu lấy logarith của hàm này thì dạng hàm sẽ chuyển sang dạng tổng và hàm logarithc có sự đơn điệu tăng, nên thay vì khảo sát cực trị của hàm hợp lý \(L(\theta)\) ta đơn giản hơn, người ta khảo sát cực trị của logarith của hàm này:

\[ l(\theta) = \ln L(\theta) \]

và khi đó

\[ L(\hat{\theta}) \rightarrow \max \]

thì

\[ l(\hat{\theta}) \rightarrow \max \]

Như vậy ước lượng hợp lý nhất cho \(\theta\) là nghiệm của phương trình:

\[ \frac{d l(\theta)}{d \theta} = 0 \tag{1.4.1} \]

Phương trình (1.4.1) gọi là phương trình hợp lý.

Tóm lại: Để tìm ước lượng hợp lý cực đại cho tham số \(\theta\), ta tiến hành khảo sát cực trị của hàm \(l(\theta) = \ln L(\theta)\) bằng cách giải phương trình hợp lý để tìm điểm dừng của thống kê biến thiên của hàm \(l(\theta) = \ln L(\theta)\) và suy ra ước lượng hợp lý cực đại.

Chú ý:

  • Có thể thay hàm hợp lý \(q(x, \theta)\) từ phân phối của mẫu \((X_1, X_2, ..., X_n)\) bởi \(q^*(x, \theta)\) là phân phối của tổng các thành phần của mẫu \(U = X_1 + X_2 + ... + X_n\).
  • Ước lượng hợp lý cực đại được viết tắt là ước lượng ML, ước lượng ML của \(\theta\) thường được ký hiệu là \(\hat{\theta}\).
  • Nếu các biến ngẫu nhiên trong mẫu là độc lập, thì hàm hợp lý bằng tích các hàm mật độ xác suất đã cho. Ngoài ra, phương pháp mẫu lớn của ước lượng ML là xấp xỉ phân phối chuẩn. Tất cả các ước lượng được trình bày trong tài liệu sử dụng phương pháp này. Ví dụ minh họa

Bài toán 1:

Tìm ước lượng hợp lý cực đại cho xác suất thành công \(p = P(A)\) hay là tỷ lệ tính chất A trong tổng thể.

Giải:

Trong một phép thử để quan sát A, đặt:

\[ X = \begin{cases} 1 & \text{nếu A xuất hiện} \\ 0 & \text{nếu A không xuất hiện} \end{cases} \]

thì \(X\) có phân phối Nhị thức \(B(1, p)\) (hay phân phối 0-1, tham số p) (là biến rời rạc), tham số cần ước lượng là \(\theta = p\), mẫu ngẫu nhiên \(W_n = (X_1, X_2, ..., X_n)\) và biến quan sát \(X\) bao gồm các biến ngẫu nhiên \(X_1, X_2, ..., X_n\) độc lập, cùng phân phối \(B(1, p)\). Có hàm hợp lý là:

\[ L(p) = q(X_1, p) q(X_2, p) ... q(X_n, p) = \prod_{k=1}^n p^{x_k}(1 - p)^{1 - x_k} \]

Vì vậy:

\[ l(p) = \ln L(p) = \sum_{k=1}^n [(X_k \ln p + (1 - X_k) \ln (1 - p))] \]

Phương trình hợp lý là:

\[ \frac{dl(p)}{dp} = 0 \Rightarrow \frac{1}{p} \sum_{k=1}^n X_k - \frac{1}{1 - p} \sum_{k=1}^n (1 - X_k) = 0 \Rightarrow \frac{1}{p} \sum_{k=1}^n X_k - \frac{n - \sum_{k=1}^n X_k}{1 - p} = 0 \Rightarrow \frac{1}{p} \sum_{k=1}^n X_k - \frac{n p}{1 - p} = 0 \]

Phương trình này có nghiệm duy nhất:

\[ \hat{p} = \frac{1}{n} \sum_{k=1}^n X_k = f(A) \]

trong đó lưu ý rằng \(m(A) = \sum_{k=1}^n X_k\) là số thành công trong n lần thử và \(f(A) = \frac{m(A)}{n}\) chính là tần suất mẫu của A. Vì tại \(p = \hat{p} = \frac{1}{n} \sum_{k=1}^n X_k = f(A)\), có:

\[ \frac{d^2 l(\hat{p})}{d p^2} = - \frac{1}{p^2} \sum_{k=1}^n X_k - \frac{1}{(1 - p)^2} \sum_{k=1}^n (1 - X_k) < 0 \]

nên hàm \(l(p)\) và do đó hàm hợp lý \(L(p)\) đạt cực đại duy nhất tại \(p = \hat{p} = f(A)\), tức là \(L(p)\) đạt trị lớn nhất tại \(\hat{p}\). Tóm lại ước lượng hợp lý cực đại của tỷ lệ \(p = P(A)\) chính là tần suất mẫu của A hay tỷ lệ tính chất A trên mẫu.

Chú ý:

Đối với bài toán 1, người ta có thể giải quyết theo cách thứ hai như sau: Theo ý tưởng của phương pháp hợp lý cực đại: “cái đã xảy ra phải là cái có khả năng nhất”, từ mẫu \(W_n = (X_1, X_2, ..., X_n)\) sinh ra biến ngẫu nhiên \(Y = X_1 + X_2 + ... + X_n\) (số thành công hay số lần xuất hiện biến cố A trong n lần thử) có phân phối Nhị thức \(B(n, p)\) và có xác suất:

\[ P(Y = y) = P(Y = y) = C_n^y p^y (1 - p)^{n - y}, y = 0, 1, ..., n \]

Vì thế ước lượng hợp lý cho p được coi là hợp nhất nếu tại \(p = \hat{p}\), \(P(Y = y) = C_n^y p^y (1 - p)^{n - y}\) đạt trị lớn nhất, và khi đó hàm \(L(p) = \prod_{k=1}^n p^{x_k} (1 - p)^{1 - x_k}\) trong định nghĩa với bài toán này, người ta coi hàm \(P(Y, p) = C_n^y p^y (1 - p)^{n - y}\) là hàm hợp lý và phương trình hợp lý: ```

LS0tDQp0aXRsZTogIsSQw4JZIEzDgCBGSUxFIFRFU1QgTEFURVggVFLDik4gUk1BUktET1dOIg0KZGF0ZTogImByIGZvcm1hdChTeXMudGltZSgpLCAnJUg6JU06JVMsICVkIC0gJW0gLSAlWScpYCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IFRSVUUNCiAgICB0b2NfZmxvYXQ6IFRSVUUNCiAgICBkZl9wcmludDogcGFnZWQNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogIHBkZl9kb2N1bWVudDoNCiAgICBleHRyYV9kZXBlbmRlbmNpZXM6DQogICAgICB2aWV0bmFtOiB1dGY4DQogICAgdG9jOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICB3b3JkX2RvY3VtZW50Og0KICAgIHRvYzogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCmdlb21ldHJ5Og0KICAgICAgLSBpbm5lcj0zY20NCiAgICAgIC0gb3V0ZXI9NGNtDQogICAgICAtIHRvcD0zY20NCiAgICAgIC0gYm90dG9tPTRjbQ0KICAgICAgLSBoZWFkc2VwPTIycHQNCiAgICAgIC0gaGVhZGhlaWdodD0xMXB0DQogICAgICAtIGZvb3Rza2lwPTMzcHQNCiAgICAgIC0gaWdub3JlaGVhZA0KICAgICAgLSBpZ25vcmVmb290DQogICAgICAtIGhlaWdodHJvdW5kZWQNCi0tLQ0KdGh1IG5o4bqtcCBz4buRIHbhu6UgdGFpIG7huqFuIChjw7MgZ8OieSByYSB04butIHZvbmcpIHRyb25nIHbDsm5nIDEgbsSDbSDhu58ga2h1IHbhu7FjIG7DtG5nIHRow7RuIHRyw6puIHR1eeG6v24gxJHGsOG7nW5nIGNhbyB04buRYyBuw6B5LCBk4buvIGxp4buHdSBz4bq9IMSRxrDhu6NjIGdoaSBuaOG6rW4gaOG6sW5nIHR14bqnbi4NCg0KIyMgYS4gTOG6pXkgbeG6q3UgUG9pc3Nvbg0KDQpT4buRIHbhu6UgdGFpIG7huqFuIGfDonkgdOG7rSB2b25nIHRyb25nIG3hu5l0IHR14bqnbiBsw6AgYmnhur9uIG5n4bqrdSBuaGnDqm4gY8OzIHBow6JuIHBo4buRaSBQb2lzc29uIChtw7QgaMOsbmggUG9pc3NvbikuIE7DsyDEkcaw4bujYyB4w6FjIMSR4buLbmggaG/DoG4gdG/DoG4gYuG7n2kgdGhhbSBz4buRIM67IGzDoCBnacOhIHRy4buLIHRydW5nIGLDrG5oIGPhu6dhIHPhu5EgduG7pSB0YWkgbuG6oW4gY8OzIHThu60gdm9uZyB0cm9uZyAxIHR14bqnbi4gS8O9IGhp4buHdSBZIGzDoCBz4buRIHbhu6UgdGFpIG7huqFuIGPDsyB04butIHZvbmcgdHJvbmcgbeG7mXQgdHXhuqduIHRyw6puIHR1eeG6v24gxJHGsOG7nW5nIG7DoHksIHRow6wgWSBsw6AgYmnhur9uIG5n4bqrdSBuaGnDqm4gY8OzIHBow6JuIHBo4buRaSBQb2lzc29uLiBDw7RuZyB0aOG7qWMgdMOtbmggeMOhYyBzdeG6pXQgY2hvIFkgbMOgDQoNCiQkDQpQKFkgPSBrKSA9IFxmcmFje2Veey1cbGFtYmRhfSBcbGFtYmRhXmt9e2shfSwgXHF1YWQgayA9IDAsMSwyLFxsZG90cyANClx0YWd7MS4yLjF9DQokJA0KDQpHaeG6oyBz4butIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZyB0csOqbiB0dXnhur9uIMSRxrDhu51uZyBNSSB44bqjeSByYSDhu58gbeG7qWMgdHJ1bmcgYsOsbmggbMOgIDIgduG7pSBt4buXaSB0deG6p24sIHThu6ljIGzDoCBcKFkgXHNpbSBQKFxsYW1iZGEpXCksIHbhu5tpIFwoXGxhbWJkYSA9IDJcKSwga2hpIMSRw7MgeMOhYyBzdeG6pXQgxJHhu4Mga2jDtG5nIGPDsyB0YWkgbuG6oW4gZ8OieSB04butIHZvbmcgKFwoWSA9IDBcKSkgdHJvbmcgdHXhuqduIGzDoDoNCg0KJCQNClAoWSA9IDApID0gXGZyYWN7ZV57LTJ9ICgyKV4wfXswIX0gPSBlXnstMn0gPSAwLjEzNQ0KJCQNCg0KVMawxqFuZyB04buxOg0KDQokJA0KUChZID0gMSkgPSBcZnJhY3soZV57LTJ9ICgyKV4xKX17MSF9ID0gMmVeey0yfSA9IDAuMjcxDQokJA0KDQpC4bqjbmcgMS4xIGxp4buHdCBrw6ogeMOhYyBzdeG6pXQgdMawxqFuZyDhu6luZyB24bubaSBz4buRIHbhu6UgdGFpIG7huqFuIGfDonkgdOG7rSB2b25nLCB2w6AgaMOsbmggMS4xIG3DtCBwaOG7j25nIGNow7puZy4gTeG6t2MgZMO5IFkgbOG6pXkgdOG6pXQgY+G6oyBjw6FjIGdpw6EgdHLhu4sgXChrXCkgbmd1ecOqbiwga2jDtG5nIMOibSwgbmjGsG5nIHbhu5tpIGtoaSBcKFxsYW1iZGEgPSAyXCkgdGjhu7FjIHThur8gY2hvIHRo4bqleSBi4bqjbmcgMS4xLCBz4buRIHbhu6UgdGFpIG7huqFuIGfDonkgdOG7rSB2b25nIGjhuqd1IG5oxrAgdHJvbmcgcGjhuqFtIHZpIHThu6sgMCDEkeG6v24gOC4NCg0KVuG7m2kgZ2nDoSB0cuG7iyBz4buRIHbhu6UgdGFpIG7huqFuIGfDonkgdOG7rSB2b25nIHRydW5nIGLDrG5oIGzDoCBraMO0bmcgdGhheSDEkeG7lWkgdOG7qyB0cnVuZyBiw6xuaCA2IHbhu6UgbeG7l2kgdHXhuqduLCB0aMOsIHRyb25nIG3hu5l0IGtob+G6o25nIHRo4budaSBnaWFuIDEgdHXhuqduLCBz4buRIHbhu6UgdGFpIG7huqFuIGfDonkgdOG7rSB2b25nIGzDoCBiaeG6v24gbmfhuqt1IG5oacOqbiBjw7MgcGjDom4gcGjhu5FpIFBvaXNzb24gduG7m2kgdHJ1bmcgYsOsbmggbMOgIDJ0LiBWw6wgZOG7ryBsaeG7h3UgxJHGsOG7o2MgZ2hpIGzhuqFpIHRoZW8gdHXhuqduLCBwaMOibiBwaOG7kWkgUG9pc3NvbiBjw7MgXChcbGFtYmRhID0gNlwpLiBYw6FjIHN14bqldCDEkeG7gyBraMO0bmcgY8OzIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZyB0csOqbiB0dXnhur9uIMSRxrDhu51uZyBuw6B5IGzDoCBcKFAoWSA9IDYpID0gXGZyYWN7Nl42IGVeey02fX17NiF9ID0gMC4wMDJcKS4gSMOsbmggMS4xIG3DtCBwaOG7j25nIGNobyBwaMOibiBwaOG7kWkgUG9pc3NvbiBjw7MgdHJ1bmcgYsOsbmggbMOgIFwoXGxhbWJkYSA9IDZcKS4NCg0KUGjDom4gcGjhu5FpIFBvaXNzb24gY8OzIGThuqFuZyBcKE4oXG11LCBcc2lnbWFeMilcKSDEkeG7gyBiaeG7g3UgdGjhu4sgdGhhbSBz4buRIFwoXG11LCBcc2lnbWFeMlwpLCBwaMOibiBwaOG7kWkgUG9pc3NvbiBjaOG7iSBjw7MgbeG7mXQgdGhhbSBz4buRIHRydW5nIGLDrG5oIFwoXGxhbWJkYVwpIGPFqW5nIGzDoCBwaMawxqFuZyBzYWkgY+G7p2EgcGjDom4gcGjhu5FpLg0KDQokJA0KRShZKSA9IFZhcihZKSA9IFxsYW1iZGEsIFxxdWFkIFxzaWdtYShZKSA9IFxzcXJ0e1xsYW1iZGF9DQokJA0KDQpIw6xuaCAxLjEgbWluaCBo4buNYSBwaMOibiBwaOG7kWkgUG9pc3NvbiB0cm9uZyBoYWkgdHLGsOG7nW5nIGjhu6NwOiBUcnVuZyBiw6xuaCBi4bqxbmcgMiAoY8OzIMSR4buZIGzhu4djaCBjaHXhuqluIGLhurFuZyBcKFxzcXJ0ezJ9ID0gMS40XCkpIHbDoCB0cnVuZyBiw6xuaCBi4bqxbmcgNiAoY8OzIMSR4buZIGzhu4djaCBjaHXhuqluIGLhurFuZyBcKFxzcXJ0ezZ9ID0gMi40XCkpLiBEbyDEkcOzIHBow6JuIHBo4buRaSBQb2lzc29uIGzDoCBwaMawxqFuZyBzYWkgY+G7p2EgbsOzIHTEg25nIGzDqm4gY8O5bmcgdHJ1bmcgYsOsbmguIFbDrCB0aOG6vyBt4bqrdSBjw7MgeHUgaMaw4bubbmcgdGhheSDEkeG7lWkgbmhp4buBdSBoxqFuIGtoaSBt4bupYyB0cnVuZyBiw6xuaCBj4bunYSBwaMOibiBwaOG7kWkgUG9pc3NvbiB0xINuZyBsw6puLiBMxrB1IMO9IGzDoCBwaMawxqFuZyBzYWkgYuG6sW5nIHRydW5nIGLDrG5oLCBwaMOibiBwaOG7kWkgUG9pc3NvbiBjw7MgxJHhu5kgbOG7h2NoIGNodeG6qW4gdMSDbmcgbMOqbiBraGkgdMSDbmcgc+G7kSB24bulIHRhaSBu4bqhbiB0cnVuZyBiw6xuaCB2w6AgZG8gxJHDsyBsw6AgdMOtbmggY2jhuqV0IGPhu6dhIG3huqt1IHRyb25nIHBow6JuIHBo4buRaSBjaHXhuqluLg0KDQpHaeG6oyBz4butIG5nxrDhu51pIHRhIG114buRbiBiaeG6v3QgeMOhYyBzdeG6pXQgc+G7sSBraMOhYyBiaeG7h3QgZ2nhu69hIGdpw6EgdHLhu4sgdHJ1bmcgYsOsbmgsIHRyb25nIGLhuqV0IGvhu7MgMiB0deG6p24gbsOgbyDEkcOzIHRoZW8gcGjDom4gcGjhu5FpIFBvaXNzb24uIEhp4buHbiB0xrDhu6NuZyBuw6B5IGfhu41pIGzDoCBxdcOhIHBow6JuIHTDoW4uIFbDrCBk4buvIGPhu6dhIGNow7puZyB0YSBnaeG6oyDEkeG7i25oIHLhurFuZyBz4buRIHbhu6UgdGFpIG7huqFuIGfDonkgdOG7rSB2b25nIGThu7Ega2nhur9uIGzDoCBuaMawIG5oYXUgKGPhu6UgdGjhu4MgbMOgIDIpIHbDoG8gbeG7l2kgdHXhuqduIHRyb25nIG7Eg20uIFR1eSBuaGnDqm4sIGdpYW8gdGjDtG5nIGPDsyBuaOG7r25nIGJp4bq/biDEkeG7mW5nIHRoZW8gbcO5YSxjw7MgdGjhu4MgdOG6oW8gcmEgYmnhur9uIMSR4buZbmcgdHJvbmcgdHXhuqduIHRoZW8ga+G7syB24buNbmcgbsOgeS4NCg0KIyMgYi4gTOG6pXkgbeG6q3Ugbmjhu4sgdGjhu6ljDQoNClRyb25nIHbDrSBk4bulIHbhu4Egc+G7kSBjYSB04butIHZvbmcgZG8gZ2lhbyB0aMO0bmcsIHbhu5tpIG3DtCBow6xuaCBs4bqleSBt4bqrdSBQb2lzc29uIHRow6wgc+G7kSB24bulIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZyBow6BuZyB0deG6p24gbMOgIG5n4bqrdSBuaGnDqm4sIG5oxrAga2jDtG5nIHBo4bqjaSBj4buRIMSR4buLbmggdsOgIGtow7RuZyBzYWkgduG7iyB0csOtIG7hurFtIG5nYW5nLCB04bupYyBsw6AgdOG7rSB2b25nIG7DoHkga2jDtG5nIHBo4bulIHRodeG7mWMgdsOgbyB04butIHZvbmcga2jDoWMuIELDonkgZ2nhu50gxJHhu4MgeMOhYyDEkeG7i25oIHThu7cgbOG7hyB04butIHZvbmcgaMOgbmcgdHXhuqduIHAsIHThu6ljIGzDoCB4w6FjIHN14bqldCDEkeG7gyBt4buZdCB24bulIHRhaSBu4bqhbiB0csOqbiB0dXnhur9uIMSRxrDhu51uZyBuw6B5IGfDonkgdOG7rSB2b25nLCBjaMO6bmcgdGEgY+G6p24gY8OzIHRow7RuZyB0aW4gYuG7lSBzdW5nIHbhu4Egc+G7kSB0YWkgbuG6oW4geOG6o3kgcmEgdHJvbmcgdHXhuqduIMSRw7MuIE7hur91IGPDsyBt4bqrdSBsw6AgdsO0IGjhuqFuIHbDoCBi4bqxbmcgTiwgbmjGsCBjaOG7jW4ga2jDtG5nIHBo4bqjaSBuZ+G6q3Ugbmhpw6puLiBLaGkgxJHDsyBu4bq/dSBn4buNaSBZIGzDoCBz4buRIHbhu6UgdGFpIG7huqFuIGfDonkgdOG7rSB2b25nIHRyb25nIE4gduG7pSB0YWkgbuG6oW4ga2jDtG5nIGfDonkgdOG7rSB2b25nLCB0aMOsIFkgfiBOIC0gc+G7kSB24bulIHRhaSBu4bqhbiAoU+G7kSB24bulIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZykuIFRhIGPDsyBjw6FjIGJp4bq/biBuZ+G6q3Ugbmhpw6puIGPDsyBwaMOibiBwaOG7kWkgTmjhu4sgdGjhu6ljIEIoTiwgcCkgdsOgIEIoTiwgMS1wKSB0xrDGoW5nIOG7qW5nLg0KDQrEkOG7gyBtaW5oIGjhu41hLCBnaeG6oyBz4butIHPhu5EgbMaw4bujbmcgY8OhYyB0YWkgbuG6oW4gZ8OieSB04butIHZvbmcgMTAgduG7pSB0YWkgbuG6oW4sIGPDsyBwaMOibiBwaOG7kWkgUG9pc3NvbiB24bubaSBnacOhIHRy4buLIHRydW5nIGLDrG5oIGzDoCAyLyB2w6Agc+G7kSB24bulIHRhaSBu4bqhbiBraMO0bmcgZ8OieSB04butIHZvbmcgY8OzIHBow6JuIHBo4buRaSBQb2lzc29uIHbhu5tpIHRydW5nIGLDrG5oIGzDoCA4Ly4gQ8OhYyBuaMOgIG5naGnDqm4gY+G7qXUgcXVhbiBzw6F0IHPhu5EgdOG7lW5nIHPhu5EgdGFpIG7huqFuIE4gdsOgIHPhu5EgbMaw4bujbmcgcXXDoSB0csOsbmggcXVhbiBzw6F0LiBT4buRIGzGsOG7o25nIFkgY8OhYyB24bulIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZyB2w6Agc+G7kSBsxrDhu6NuZyBOIC0gWSB24bulIHRhaSBu4bqhbiBraMO0bmcgZ8OieSB04butIHZvbmcgdHJvbmcgTiB24bulIHRhaSBu4bqhbiBjw7MgcGjDom4gcGjhu5FpIG5o4buLIHRo4bupYy4gU+G7kSBsxrDhu6NuZyBjw6FjIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZyBjw7MgcGjDom4gcGjhu5FpIG5o4buLIHRo4bupYyB24bubaSBOIHbDoCB04bu3IGzhu4cgdOG7rSB2b25nIFAgPSAyLygyKzgpID0gMi8xMCwgxJHDsyBsw6AgeMOhYyBzdeG6pXQgYuG6r3Qga+G7syB0YWkgbuG6oW4geOG6o3kgcmEgZ8OieSB04butIHZvbmcuIFjDoWMgc3XhuqV0IG7DoHkgYuG6sW5nIHRydW5nIGLDrG5oIFBvaXNzb24gxJHhu5FpIHbhu5tpIGPDoWMgdGFpIG7huqFuIGfDonkgdOG7rSB2b25nIGNoaWEgY2hvIHThu5VuZyBj4buZbmcgdHJ1bmcgYsOsbmggUG9pc3NvbiDEkeG7kWkgduG7m2kgY8OhYyB0YWkgbuG6oW4gZ8OieSB04butIHZvbmcgdsOgIGtow7RuZyBnw6J5IHThu60gdm9uZy4gU+G7kSBsxrDhu6NuZyB0YWkgbuG6oW4ga2jDtG5nIGfDonkgdOG7rSB2b25nIGLhurFuZyAoTiAtIHPhu5EgduG7pSB0YWkgbuG6oW4gZ8OieSB04butIHZvbmcpIHbDoCBjw7MgcGjDom4gcGjhu5FpIG5o4buLIHRo4bupYyB24bubaSBOIHbhu6UgdGFpIG7huqFuIHbDoCB0aGFtIHPhu5EgMC44Lg0KDQpW4bqteSBwIGJp4buDdSB0aOG7iyB4w6FjIHN14bqldCB0aMOgbmggY8O0bmcgY2hvIG3hu5l0IHRo4butIG5naGnhu4dtIG5o4bqldCDEkeG7i25oLiBZIGJp4buDdSB0aOG7iyBz4buRIGzGsOG7o25nIHRow6BuaCBjw7RuZyB0cm9uZyBz4buRIE4gdGjhu60gbmdoaeG7h20uIFPhu7EgdGhheSDEkeG7lWkgY+G7p2EgWSBjw7MgcGjDom4gcGjhu5FpIG5o4buLIHRo4bupYyB24bubaSBOIHRo4butIG5naGnhu4dtIE4gdsOgIHRoYW0gc+G7kSBwLg0KDQpcWw0KUChZID0gaykgPSBcZnJhY3tOIX17ayEoTi1rKSF9IHBeayAoMS1wKV57Ti1rfSwgXHF1YWQgayA9IDAsMSwyLFxsZG90cyxOIFxxdWFkICgxLjIuMikNClxdDQoNCsSQ4buDIG1pbmggaOG7jWEsIGNobyBZIGJp4buDdSB0aOG7iyBz4buRIHbhu6UgdGFpIG7huqFuIGNo4bq/dCBuZ8aw4budaSB0cm9uZyAxMCB24bulIHRhaSBu4bqhbiwgeMOhYyBzdeG6pXQgdOG7rSB2b25nIGzDoCAwLjIgY2hvIG3hu5dpIHRhaSBu4bqhbjsga2hpIMSRw7MgTiA9IDEwIHbDoCBwID0gMC4yLiBYw6FjIHN14bqldCBraMO0bmcgY8OzIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZyAoWSA9IDApLCB2w6AgZG8gxJHDsyBOIC0gWSA9IDEwIHRhaSBu4bqhbiBraMO0bmcgZ8OieSB04butIHZvbmcsIGLhurFuZw0KDQpcWw0KUChZID0gMCkgPSBcZnJhY3sxMCF9ezAhMTAhfSAoMC4yKV4wICgwLjgpXnsxMH0gPSAwLjheezEwfSA9IDAuMTA3Ow0KXF0NCg0KWMOhYyBzdeG6pXQgxJHhu4MgY8OzIMSRw7puZyAxIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZyBi4bqxbmcNCg0KXFsNClAoWSA9IDEpID0gXGZyYWN7MTAhfXsxITkhfSAoMC4yKV4xICgwLjgpXjkgPSAxMCgwLjIpKDAuOCleOSA9IDAuMjY4Lg0KXF0NCg0KXFsNClx0ZXh0e0LhuqNuZyAxLjEgbGnhu4d0IGvDqiB0b8OgbiBi4buZIHBow6JuIHBo4buRaS59DQpcXQ0KDQpQaMOibiBwaOG7kWkgbmjhu4sgdGjhu6ljIGNobyBOIHRo4butIG5naGnhu4dtIHbhu5tpIHRoYW0gc+G7kSBwIGPDsyB0cnVuZyBiw6xuaCB2w6AgcGjGsMahbmcgc2FpLg0KS2jDtG5nIGdp4buRbmcgbmjGsCBwaMawxqFuZyBzYWkgY+G7p2EgcGjDom4gcGjhu5FpIFBvaXNzb24sIHBoxrDGoW5nIHNhaSBj4bunYSBwaMOibiBwaOG7kWkgbmjhu4sgdGjhu6ljIG5o4buPIGjGoW4gZ2nDoSB0cuG7iyB0cnVuZyBiw6xuaC4gUGjDom4gcGjhu5FpIG5o4buLIHRo4bupYyB0cm9uZyBC4bqjbmcgMS4xIGPDsyB0cnVuZyBiw6xuaCBsw6AgMTAgKDAuMikgPSAyLjAgdsOgIMSR4buZIGzhu4djaCBsw6AgXChcc3FydHsxMCAoMC4yKSAoMC44KX1cKSA9IDEuNi4gR2nDoSB0cuG7iyB0cnVuZyBiw6xuaCB0aMOsIHTGsMahbmcgxJHGsMahbmcgbmjGsCB0cnVuZyBiw6xuaCBQb2lzc29uIHRyb25nIELhuqNuZyAxLjEsIG5oxrBuZyBuaOG7iyB0aOG7qWMgYmnhu4N1IGhp4buHbiDDrXQgaMahbiBt4buZdCBjaMO6dC4gQ+G6oyBoYWkgcGjDom4gcGjhu5FpIG5o4buLIHRo4bupYyB2w6AgUG9pc3NvbiDEkeG7gXUgdHXDom4gdGhlbyBwaMOibiBi4buRIGNodeG6qW4ga2hpIHTEg25nIHRydW5nIGLDrG5oIGPhu6dhIGNow7puZywgdsOgIGtoaSB0cnVuZyBiw6xuaCBs4bubbiB0aMOsIGNow7puZyB0aMaw4budbmcgeOG6pXAgeOG7iSBi4bqxbmcgcGjDom4gcGjhu5FpIGNodeG6qW4uDQoNClTDuXkgdsOgbyBt4bulYyDEkcOtY2gga2jhuqNvIHPDoXQsIG5naGnDqm4gY+G7qXUgbcOgIMSR4buRaSB24bubaSBt4buZdCBiaeG6v24gxJHhu4tuaCB0w61uaCwgbmfGsOG7nWkgdGEgY8OzIHRo4buDIHBow6JuIGJp4buHdCBnacOhIHRy4buLIGPhu6dhIG7DsyB0aMOgbmggbmhp4buBdSBoxqFuIGhhaSBsb+G6oWkuIENo4bqzbmcgaOG6oW4sIG5nxrDhu51pIHRhIGPDsyB0aOG7gyBraOG6o28gc8OhdCBjaGkgdGnhur90IGjGoW4gdHJvbmcgbeG7l2kgduG7pSB0YWkgbuG6oW4gZ2lhbyB0aMO0bmcgduG7m2kgY8OhYyBsb+G6oWkgIktow7RuZyBi4buLIHRoxrDGoW5nIiwgInRoxrDGoW5nIHTDrWNoIGtow7RuZyBj4bqnbiBwaOG6o2kgbuG6sW0gdmnhu4duIiwgInRoxrDGoW5nIHTDrWNoIGPhuqduIHBo4bqjaSBu4bqxbSB2aeG7h24iLCAidOG7rSB2b25nIi4gQ8OhYyBz4buRIMSR4bq/bSB0cm9uZyBjw6FjIGxv4bqhaSBraMOhYyBuaGF1IG7DoHkgdMawxqFuZyDhu6luZyB24bubaSBuaOG7r25nIHBow6JuIHBo4buRaSBuaOG7iyB0aOG7qWMgY8OzIHThu7cgbOG7hyBwIGtow6FjIG5oYXUuIFBow6JuIHBo4buRaSBuaOG7iyB0aOG7qWMgbOG6pXkgbeG6q3UgY2hvIHBow6JuIHBo4buRaSDEkWEgdGjhu6ljIGfhu41pIGzDoCBs4bqleSBt4bqrdSBQb2lzc29uLiBQaMOibiBwaOG7kWkgbmjhu4sgdGjhu6ljLCB0cm9uZyB0csaw4budbmcgaOG7o3AgbsOgeSBsw6AgcGjDom4gcGjhu5FpIG5o4buLIHRo4bupYywga2hpIGNo4buJIGPDsyBoYWkga+G6v3QgcXXhuqMgY8OzIHRo4buDIGNobyBt4buXaSB0aOG7rSBuZ2hp4buHbS4gQ2jDum5nIHRhIHPhur0gxJHhu4EgY+G6rXAgxJHhur9uIHBow6JuIHBo4buRaSDEkWEgdGjhu6ljIGNobyBtw7QgaMOsbmggY8OhYyBiaeG6v24gxJHDoXAg4bupbmcgxJFhIGxv4bqhaS4NCg0KXFsNClAoWSA9IGspID0gDQpcXQ0KDQpcWw0KXGJlZ2lue2FycmF5fXtjfGNjfQ0KWSAmIFx0ZXh0e1BvaXNzb259ICYgXHRleHR7Tmjhu4sgdGjhu6ljfSBcXA0KXGhsaW5lDQowICYgMC4xMzUgJiAwLjEwNyBcXA0KMSAmIDAuMjcxICYgMC4yNjggXFwNCjIgJiAwLjI3MSAmIDAuMzAyIFxcDQozICYgMC4xODAgJiAwLjIwMSBcXA0KNCAmIDAuMDkwICYgMC4wODggXFwNCjUgJiAwLjAzNiAmIDAuMDI2IFxcDQo2ICYgMC4wMTIgJiAwLjAwNiBcXA0KNyAmIDAuMDAzICYgMC4wMDEgXFwNCjggJiAwLjAwMSAmIDAuMDAwIFxcDQo5ICYgMC4wMDAgJiAwLjAwMCBcXA0KMTAgJiAwLjAwMCAmIDAuMDAwIFxcDQo+MTEgJiAwLjAwMCAmIDAuMDAwIFxcDQpcZW5ke2FycmF5fQ0KXF0NCg0KXFsNClx0ZXh0e0LhuqNuZyAxLjE6IFBow6JuIHBo4buRaSB4w6FjIHN14bqldCBz4buRIHRhaSBu4bqhbiBnw6J5IHThu60gdm9uZyB0cm9uZyBt4buZdCB0deG6p24gdGhlbyBjw6FjIG3DtCBow6xuaCBuaMawIGzDoDogUG9pc3NvbiB24bubaSB0cnVuZyBiw6xuaCBsw6AgMi4wfSBcXA0KXHRleHR7KENow7ogw706IE5o4buLIHRo4bupYyBjw7MgTiA9IDEwIHbDoCBwID0gMC4yKX0NClxdDQpgYGB7cn0NCiMgTG9hZCBuZWNlc3NhcnkgbGlicmFyeQ0KbGlicmFyeShnZ3Bsb3QyKQ0KDQojIENyZWF0ZSBkYXRhIGZvciBtZWFuID0gMg0KeF9jb21iaW5lZCA8LSAwOjE5DQptdTEgPC0gMg0KbXUyIDwtIDYNCnkxIDwtIGRwb2lzKHhfY29tYmluZWQsIG11MSkNCnkyIDwtIGRwb2lzKHhfY29tYmluZWQsIG11MikNCmRhdGFfY29tYmluZWQgPC0gZGF0YS5mcmFtZSgNCiAgeCA9IHJlcCh4X2NvbWJpbmVkLCAyKSwNCiAgeSA9IGMoeTEsIHkyKSwNCiAgZ3JvdXAgPSBmYWN0b3IocmVwKGMoIk1lYW4gPSAyIiwgIk1lYW4gPSA2IiksIGVhY2ggPSBsZW5ndGgoeF9jb21iaW5lZCkpKQ0KKQ0KDQojIFBsb3QgdGhlIGNvbWJpbmVkIFBvaXNzb24gZGlzdHJpYnV0aW9ucw0KZ2dwbG90KGRhdGFfY29tYmluZWQsIGFlcyh4ID0geCwgeSA9IHksIGNvbG9yID0gZ3JvdXApKSArDQogIGdlb21fcG9pbnQoKSArDQogIGdlb21fbGluZSgpICsNCiAgZ2d0aXRsZSgiUG9pc3NvbiBEaXN0cmlidXRpb24gKE1lYW4gPSAyIGFuZCBNZWFuID0gNikiKSArDQogIHhsYWIoIk51bWJlciBvZiBFdmVudHMiKSArDQogIHlsYWIoIlByb2JhYmlsaXR5IikgKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiTWVhbiA9IDIiID0gImJsdWUiLCAiTWVhbiA9IDYiID0gImdyZWVuIikpDQoNCg0KYGBgDQoNCiFbSMOsbmggMS4xOiBQaMOibiBwaOG7kWkgUG9pc3NvbiBjw7MgdHJ1bmcgYsOsbmggMiB2w6AgNi5dDQoNCiMgMS40IMav4bubYyBsxrDhu6NuZyBo4bujcCBsw70gY+G7sWMgxJHhuqFpIChNYXhpbXVtIGxpa2VsaWhvb2QgZXN0aW1hdGlvbikNCg0KIyMgMS40LjEuIEPDoWMga2jDoWkgbmnhu4dtIHbhu4EgxrDhu5tjIGzGsOG7o25nIGjhu6NwIGzDvSBj4buxYyDEkeG6oWkNCg0KR2nhuqMgc+G7rSBiaeG6v24gcXVhbiBzw6F0ICRYJCBjw7MgcGjDom4gcGjhu5FpIHjDoWMgc3XhuqV0IHBo4bulIHRodeG7mWMgdsOgbyB0aGFtIHPhu5EgJFx0aGV0YSQgY2jGsGEgYmnhur90LCB0YSBj4bqnbiB0w6xtIMaw4bubYyBsxrDhu6NuZyBjaG8gJFx0aGV0YSQuIFbhu5tpICRXX24gPSAoWF8xLCBYXzIsIC4uLiwgWF9uKSQgbMOgIG3huqt1IG5n4bqrdSBuaGnDqm4gY+G7p2EgYmnhur9uIHF1YW4gc8OhdCAkWCQuDQoNCkvDvSBoaeG7h3UgJHEoeCwgXHRoZXRhKSQgbMOgIHjDoWMgc3XhuqV0IMSR4buDICRXX24gPSAoWF8xLCBYXzIsIC4uLiwgWF9uKSQgbmjhuq1uIGdpw6EgdHLhu4sgJHggPSAoeF8xLCB4XzIsIC4uLiwgeF9uKSQ7ICRxKHg7IFx0aGV0YSkgPSBQKFhfMSA9IHhfMSwgWF8yID0geF8yLCAuLi4sIFhfbiA9IHhfbikgPSBQKFdfbiA9IHgpJC4gTuG6v3UgJFhfaSQgYmnhur9uIG5n4bqrdSBuaGnDqm4gcuG7nWkgcuG6oWMsIHbDoCAkcSh4LCBcdGhldGEpJCBsw6AgZ2nDoSB0cuG7iyBow6BtIG3huq10IMSR4buZIHjDoWMgc3XhuqV0IGPhu6dhICRYJCB0aMOsICRxKHgsIFx0aGV0YSkkIGzDoCBnacOhIHRy4buLIGjDoG0gbeG6rXQgxJHhu5kgeMOhYyBzdeG6pXQgdOG6oWkgJHgkIGPhu6dhICRXX24gPSAoWF8xLCBYXzIsIC4uLiwgWF9uKSQgdOG6oWkgJFhfaSQgbMOgIGJp4bq/biBuZ+G6q3Ugbmhpw6puIGxpw6puIHThu6VjLg0KDQpYdeG6pXQgcGjDoXQgdOG7qyDDvSB0xrDhu59uZzogImPDoWkgxJHDoyB44bqjeSByYSBwaOG6o2kgbMOgIGPDoWkgY8OzIGto4bqjIG7Eg25nIG5o4bqldCIsIG5nxrDhu51pIHRhIHhlbSBnacOhIHRy4buLIMaw4bubYyBsxrDhu6NuZyBo4bujcCBsw70gbmjhuqV0IGNobyB0aGFtIHPhu5EgJFx0aGV0YSQgbMOgIGdpw6EgdHLhu4sgJFx0aGV0YSQgbMOgbSBjaG8gZ2nDoSB0cuG7iyAkcSh4LCBcdGhldGEpJCDEkeG6oXQgY+G7sWMgxJHhuqFpLg0KDQogxJDhu4tuaCBuZ2jEqWEgMS4xOg0KDQpUYSBn4buNaSBow6BtICRMKFx0aGV0YSkgPSBxKFhfMSwgWF8yLCAuLi4sIFhfbiwgXHRoZXRhKSQgbMOgIGjDoG0gaOG7o3AgbMO9IHbDoCBnacOhIHRy4buLIGPhu7FjIMSR4bqhaSBow6BtIGjhu6NwIGzDvSDEkcOzIGzDoCDGsOG7m2MgbMaw4bujbmcgaOG7o3AgbMO9IGPhu7FjIMSR4bqhaSAkXGhhdHtcdGhldGF9JCBj4bunYSB0aGFtIHPhu5EgJFx0aGV0YSQsIHThu6ljIGzDoDoNCg0KJCQNCkwoXGhhdHtcdGhldGF9KSA9IHEoWF8xLCBYXzIsIC4uLiwgWF9uLCBcaGF0e1x0aGV0YX0pID0gXG1heF97XHRoZXRhfSBxKFhfMSwgWF8yLCAuLi4sIFhfbiwgXHRoZXRhKQ0KJCQNCg0KIyMgMS40LjIuIFBoxrDGoW5nIHBow6FwIHTDrG0gxrDhu5tjIGzGsOG7o25nIGjhu6NwIGzDvSBj4buxYyDEkeG6oWkNCg0KVsOsIGjDoG0gaOG7o3AgbMO9ICRMKFx0aGV0YSkkIOG7nyBk4bqhbmcgdMOtY2ggY+G7p2EgY8OhYyB0aOG7q2Egc+G7kSBjaOG7qWEgJFx0aGV0YSQsIG7Dqm4gdmnhu4djIGto4bqjbyBzw6F0IGPhu7FjIHRy4buLIGPhu6dhIG7DsyBsw6Aga2jDoSBwaOG7qWMgdOG6oXAsIG3hurd0IGtow6FjIG7hur91IGzhuqV5IGxvZ2FyaXRoIGPhu6dhIGjDoG0gbsOgeSB0aMOsIGThuqFuZyBow6BtIHPhur0gY2h1eeG7g24gc2FuZyBk4bqhbmcgdOG7lW5nIHbDoCBow6BtIGxvZ2FyaXRoYyBjw7Mgc+G7sSDEkcahbiDEkWnhu4d1IHTEg25nLCBuw6puIHRoYXkgdsOsIGto4bqjbyBzw6F0IGPhu7FjIHRy4buLIGPhu6dhIGjDoG0gaOG7o3AgbMO9ICRMKFx0aGV0YSkkIHRhIMSRxqFuIGdp4bqjbiBoxqFuLCBuZ8aw4budaSB0YSBraOG6o28gc8OhdCBj4buxYyB0cuG7iyBj4bunYSBsb2dhcml0aCBj4bunYSBow6BtIG7DoHk6IA0KDQokJA0KbChcdGhldGEpID0gXGxuIEwoXHRoZXRhKQ0KJCQNCg0KdsOgIGtoaSDEkcOzDQoNCiQkDQpMKFxoYXR7XHRoZXRhfSkgXHJpZ2h0YXJyb3cgXG1heA0KJCQNCg0KdGjDrA0KDQokJA0KbChcaGF0e1x0aGV0YX0pIFxyaWdodGFycm93IFxtYXgNCiQkDQoNCk5oxrAgduG6rXkgxrDhu5tjIGzGsOG7o25nIGjhu6NwIGzDvSBuaOG6pXQgY2hvICRcdGhldGEkIGzDoCBuZ2hp4buHbSBj4bunYSBwaMawxqFuZyB0csOsbmg6DQoNCiQkDQpcZnJhY3tkIGwoXHRoZXRhKX17ZCBcdGhldGF9ID0gMA0KXHRhZ3sxLjQuMX0NCiQkDQoNClBoxrDGoW5nIHRyw6xuaCAoMS40LjEpIGfhu41pIGzDoCBwaMawxqFuZyB0csOsbmggaOG7o3AgbMO9Lg0KDQpUw7NtIGzhuqFpOiDEkOG7gyB0w6xtIMaw4bubYyBsxrDhu6NuZyBo4bujcCBsw70gY+G7sWMgxJHhuqFpIGNobyB0aGFtIHPhu5EgJFx0aGV0YSQsIHRhIHRp4bq/biBow6BuaCBraOG6o28gc8OhdCBj4buxYyB0cuG7iyBj4bunYSBow6BtICRsKFx0aGV0YSkgPSBcbG4gTChcdGhldGEpJCBi4bqxbmcgY8OhY2ggZ2nhuqNpIHBoxrDGoW5nIHRyw6xuaCBo4bujcCBsw70gxJHhu4MgdMOsbSDEkWnhu4NtIGThu6tuZyBj4bunYSB0aOG7kW5nIGvDqiBiaeG6v24gdGhpw6puIGPhu6dhIGjDoG0gJGwoXHRoZXRhKSA9IFxsbiBMKFx0aGV0YSkkIHbDoCBzdXkgcmEgxrDhu5tjIGzGsOG7o25nIGjhu6NwIGzDvSBj4buxYyDEkeG6oWkuDQoNCiBDaMO6IMO9Og0KDQotIEPDsyB0aOG7gyB0aGF5IGjDoG0gaOG7o3AgbMO9ICRxKHgsIFx0aGV0YSkkIHThu6sgcGjDom4gcGjhu5FpIGPhu6dhIG3huqt1ICQoWF8xLCBYXzIsIC4uLiwgWF9uKSQgYuG7n2kgJHFeKih4LCBcdGhldGEpJCBsw6AgcGjDom4gcGjhu5FpIGPhu6dhIHThu5VuZyBjw6FjIHRow6BuaCBwaOG6p24gY+G7p2EgbeG6q3UgJFUgPSBYXzEgKyBYXzIgKyAuLi4gKyBYX24kLg0KLSDGr+G7m2MgbMaw4bujbmcgaOG7o3AgbMO9IGPhu7FjIMSR4bqhaSDEkcaw4bujYyB2aeG6v3QgdOG6r3QgbMOgIMaw4bubYyBsxrDhu6NuZyBNTCwgxrDhu5tjIGzGsOG7o25nIE1MIGPhu6dhICRcdGhldGEkIHRoxrDhu51uZyDEkcaw4bujYyBrw70gaGnhu4d1IGzDoCAkXGhhdHtcdGhldGF9JC4NCi0gTuG6v3UgY8OhYyBiaeG6v24gbmfhuqt1IG5oacOqbiB0cm9uZyBt4bqrdSBsw6AgxJHhu5ljIGzhuq1wLCB0aMOsIGjDoG0gaOG7o3AgbMO9IGLhurFuZyB0w61jaCBjw6FjIGjDoG0gbeG6rXQgxJHhu5kgeMOhYyBzdeG6pXQgxJHDoyBjaG8uIE5nb8OgaSByYSwgcGjGsMahbmcgcGjDoXAgbeG6q3UgbOG7m24gY+G7p2EgxrDhu5tjIGzGsOG7o25nIE1MIGzDoCB44bqlcCB44buJIHBow6JuIHBo4buRaSBjaHXhuqluLiBU4bqldCBj4bqjIGPDoWMgxrDhu5tjIGzGsOG7o25nIMSRxrDhu6NjIHRyw6xuaCBiw6B5IHRyb25nIHTDoGkgbGnhu4d1IHPhu60gZOG7pW5nIHBoxrDGoW5nIHBow6FwIG7DoHkuDQogVsOtIGThu6UgbWluaCBo4buNYQ0KDQogQsOgaSB0b8OhbiAxOiANCg0KVMOsbSDGsOG7m2MgbMaw4bujbmcgaOG7o3AgbMO9IGPhu7FjIMSR4bqhaSBjaG8geMOhYyBzdeG6pXQgdGjDoG5oIGPDtG5nICRwID0gUChBKSQgaGF5IGzDoCB04bu3IGzhu4cgdMOtbmggY2jhuqV0IEEgdHJvbmcgdOG7lW5nIHRo4buDLg0KDQpHaeG6o2k6DQoNClRyb25nIG3hu5l0IHBow6lwIHRo4butIMSR4buDIHF1YW4gc8OhdCBBLCDEkeG6t3Q6DQoNCiQkDQpYID0NClxiZWdpbntjYXNlc30gDQoxICYgXHRleHR7buG6v3UgQSB4deG6pXQgaGnhu4dufSBcXA0KMCAmIFx0ZXh0e27hur91IEEga2jDtG5nIHh14bqldCBoaeG7h259IA0KXGVuZHtjYXNlc30NCiQkDQoNCnRow6wgJFgkIGPDsyBwaMOibiBwaOG7kWkgTmjhu4sgdGjhu6ljICRCKDEsIHApJCAoaGF5IHBow6JuIHBo4buRaSAwLTEsIHRoYW0gc+G7kSBwKSAobMOgIGJp4bq/biBy4budaSBy4bqhYyksIHRoYW0gc+G7kSBj4bqnbiDGsOG7m2MgbMaw4bujbmcgbMOgICRcdGhldGEgPSBwJCwgbeG6q3Ugbmfhuqt1IG5oacOqbiAkV19uID0gKFhfMSwgWF8yLCAuLi4sIFhfbikkIHbDoCBiaeG6v24gcXVhbiBzw6F0ICRYJCBiYW8gZ+G7k20gY8OhYyBiaeG6v24gbmfhuqt1IG5oacOqbiAkWF8xLCBYXzIsIC4uLiwgWF9uJCDEkeG7mWMgbOG6rXAsIGPDuW5nIHBow6JuIHBo4buRaSAkQigxLCBwKSQuIEPDsyBow6BtIGjhu6NwIGzDvSBsw6A6DQoNCiQkDQpMKHApID0gcShYXzEsIHApIHEoWF8yLCBwKSAuLi4gcShYX24sIHApID0gXHByb2Rfe2s9MX1ebiBwXnt4X2t9KDEgLSBwKV57MSAtIHhfa30NCiQkDQoNClbDrCB24bqteToNCg0KJCQNCmwocCkgPSBcbG4gTChwKSA9IFxzdW1fe2s9MX1ebiBbKFhfayBcbG4gcCArICgxIC0gWF9rKSBcbG4gKDEgLSBwKSldDQokJA0KDQpQaMawxqFuZyB0csOsbmggaOG7o3AgbMO9IGzDoDoNCg0KJCQNClxmcmFje2RsKHApfXtkcH0gPSAwIFxSaWdodGFycm93IFxmcmFjezF9e3B9IFxzdW1fe2s9MX1ebiBYX2sgLSBcZnJhY3sxfXsxIC0gcH0gXHN1bV97az0xfV5uICgxIC0gWF9rKSA9IDAgXFJpZ2h0YXJyb3cgXGZyYWN7MX17cH0gXHN1bV97az0xfV5uIFhfayAtIFxmcmFje24gLSBcc3VtX3trPTF9Xm4gWF9rfXsxIC0gcH0gPSAwIFxSaWdodGFycm93IFxmcmFjezF9e3B9IFxzdW1fe2s9MX1ebiBYX2sgLSBcZnJhY3tuIHB9ezEgLSBwfSA9IDANCiQkDQoNClBoxrDGoW5nIHRyw6xuaCBuw6B5IGPDsyBuZ2hp4buHbSBkdXkgbmjhuqV0Og0KDQokJA0KXGhhdHtwfSA9IFxmcmFjezF9e259IFxzdW1fe2s9MX1ebiBYX2sgPSBmKEEpDQokJA0KDQp0cm9uZyDEkcOzIGzGsHUgw70gcuG6sW5nICRtKEEpID0gXHN1bV97az0xfV5uIFhfayQgbMOgIHPhu5EgdGjDoG5oIGPDtG5nIHRyb25nIG4gbOG6p24gdGjhu60gdsOgICRmKEEpID0gXGZyYWN7bShBKX17bn0kIGNow61uaCBsw6AgdOG6p24gc3XhuqV0IG3huqt1IGPhu6dhIEEuIFbDrCB04bqhaSAkcCA9IFxoYXR7cH0gPSBcZnJhY3sxfXtufSBcc3VtX3trPTF9Xm4gWF9rID0gZihBKSQsIGPDszoNCg0KJCQNClxmcmFje2ReMiBsKFxoYXR7cH0pfXtkIHBeMn0gPSAtIFxmcmFjezF9e3BeMn0gXHN1bV97az0xfV5uIFhfayAtIFxmcmFjezF9eygxIC0gcCleMn0gXHN1bV97az0xfV5uICgxIC0gWF9rKSA8IDANCiQkDQoNCm7Dqm4gaMOgbSAkbChwKSQgdsOgIGRvIMSRw7MgaMOgbSBo4bujcCBsw70gJEwocCkkIMSR4bqhdCBj4buxYyDEkeG6oWkgZHV5IG5o4bqldCB04bqhaSAkcCA9IFxoYXR7cH0gPSBmKEEpJCwgdOG7qWMgbMOgICRMKHApJCDEkeG6oXQgdHLhu4sgbOG7m24gbmjhuqV0IHThuqFpICRcaGF0e3B9JC4gVMOzbSBs4bqhaSDGsOG7m2MgbMaw4bujbmcgaOG7o3AgbMO9IGPhu7FjIMSR4bqhaSBj4bunYSB04bu3IGzhu4cgJHAgPSBQKEEpJCBjaMOtbmggbMOgIHThuqduIHN14bqldCBt4bqrdSBj4bunYSBBIGhheSB04bu3IGzhu4cgdMOtbmggY2jhuqV0IEEgdHLDqm4gbeG6q3UuDQoNCkNow7ogw706DQoNCsSQ4buRaSB24bubaSBiw6BpIHRvw6FuIDEsIG5nxrDhu51pIHRhIGPDsyB0aOG7gyBnaeG6o2kgcXV54bq/dCB0aGVvIGPDoWNoIHRo4bupIGhhaSBuaMawIHNhdTogVGhlbyDDvSB0xrDhu59uZyBj4bunYSBwaMawxqFuZyBwaMOhcCBo4bujcCBsw70gY+G7sWMgxJHhuqFpOiAiY8OhaSDEkcOjIHjhuqN5IHJhIHBo4bqjaSBsw6AgY8OhaSBjw7Mga2jhuqMgbsSDbmcgbmjhuqV0IiwgdOG7qyBt4bqrdSAkV19uID0gKFhfMSwgWF8yLCAuLi4sIFhfbikkIHNpbmggcmEgYmnhur9uIG5n4bqrdSBuaGnDqm4gJFkgPSBYXzEgKyBYXzIgKyAuLi4gKyBYX24kIChz4buRIHRow6BuaCBjw7RuZyBoYXkgc+G7kSBs4bqnbiB4deG6pXQgaGnhu4duIGJp4bq/biBj4buRIEEgdHJvbmcgbiBs4bqnbiB0aOG7rSkgY8OzIHBow6JuIHBo4buRaSBOaOG7iyB0aOG7qWMgJEIobiwgcCkkIHbDoCBjw7MgeMOhYyBzdeG6pXQ6DQoNCiQkDQpQKFkgPSB5KSA9IFAoWSA9IHkpID0gQ19uXnkgcF55ICgxIC0gcClee24gLSB5fSwgeSA9IDAsIDEsIC4uLiwgbg0KJCQNCg0KVsOsIHRo4bq/IMaw4bubYyBsxrDhu6NuZyBo4bujcCBsw70gY2hvIHAgxJHGsOG7o2MgY29pIGzDoCBo4bujcCBuaOG6pXQgbuG6v3UgdOG6oWkgJHAgPSBcaGF0e3B9JCwgJFAoWSA9IHkpID0gQ19uXnkgcF55ICgxIC0gcClee24gLSB5fSQgxJHhuqF0IHRy4buLIGzhu5tuIG5o4bqldCwgdsOgIGtoaSDEkcOzIGjDoG0gJEwocCkgPSBccHJvZF97az0xfV5uIHBee3hfa30gKDEgLSBwKV57MSAtIHhfa30kIHRyb25nIMSR4buLbmggbmdoxKlhIHbhu5tpIGLDoGkgdG/DoW4gbsOgeSwgbmfGsOG7nWkgdGEgY29pIGjDoG0gJFAoWSwgcCkgPSBDX25eeSBwXnkgKDEgLSBwKV57biAtIHl9JCBsw6AgaMOgbSBo4bujcCBsw70gdsOgIHBoxrDGoW5nIHRyw6xuaCBo4bujcCBsw706DQpgYGANCg==