課題

以下の指標の中から、二つ以上(複数)を選択して、データの概要(description)を記録し、データを WDI で取得し、以下の分析をする。

  1. 各年毎のデータの数の棒グラフ
  2. 経年変化を表す折れ線グラフ
    1. 日本、またはデータがある国
    2. 選択したいくつかの国
  3. 複数の指標の値を一列に含む縦長の表(Long Table)を作成し  a. 日本、またはデータがある国の、複数の指標を色分けした経年変化のグラフ  b. 選択したいくつかの国についての経年変化のグラフを、国を色分けし、指標は線の種類を変えたグラフ
  4. 二つのデータの散布図- NA は取り除くこと。(log10 スケールを用いる場合は値が正のもののみに限定)
    1. (地域を除き)国のみの散布図 (近似(回帰)直線を表示)
    2. 最近の年の(地域を除き)国のみの散布図 (近似(回帰)直線を表示)
      1. に対応する相関係数
  5. カテゴリー変数(Categorical Variable: region, income, year など)と、数値変数(Numberical Variable)一組についての箱ヒゲ図(Boxplot)

それぞれについて考察(気づいたこと、疑問など)を記す

2023.2.10.23:59 までに Moodle の課題2提出ボックスに提出してください。

できたグラフだけでも構いませんから、期限までに提出してください。解説を加え、課題2再提出ボックスを作成する予定です。

データ

  1. CO2 emissions (metric tons per capita) :EN.ATM.CO2E.PC [Link]

  2. Forest area (% of land area):AG.LND.FRST.ZS [Link]

  3. Renewable electricity output (% of total electricity output):EG.ELC.RNEW.ZS [Link]

  4. Electricity production from oil, gas and coal sources (% of total):EG.ELC.FOSL.ZS [Link]

  5. Electricity production from nuclear sources (% of total):EG.ELC.NUCL.ZS [Link]

  6. Access to electricity, urban (% of urban population):EG.ELC.ACCS.UR.ZS [Link]

  7. Access to electricity, rural (% of rural population):EG.ELC.ACCS.RU.ZS [Link]

  8. People using at least basic drinking water services, urban (% of urban population):SH.H2O.BASW.UR.ZS [Link]

  9. People using at least basic drinking water services, rural (% of rural population):SH.H2O.BASW.RU.ZS [Link]

  10. People using at least basic sanitation services, urban (% of urban population):SH.STA.BASS.UR.ZS [Link]

  11. People using at least basic sanitation services, rural (% of rural population):SH.STA.BASS.RU.ZS [Link]

データ

データ情報

  • データ名1:、データコード:、変数名:

  • 概要:

  • データ名2:、データコード:、変数名:

  • 概要:

データの取得

準備

これまでとも同じように二つのパッケージを読み込み(load)ます。

library(tidyverse)
library(WDI)

WDI パッケージを使って、直接データをダウンロードし、変数名を、under_6.85 に指定。

この変数名は、今後使いますから、重要です。一応、例として、わたしが使った、変数名を書いてあります。他の変数名を使っても構いません。

df_unemploy <- WDI(indicator = c(female_unemploy = "SL.UEM.TOTL.FE.ZS", 
                                 male_unemploy = "SL.UEM.TOTL.MA.ZS"),
                   extra = TRUE)

data ディレクトリに書き込んでおきます。

write_csv(df_unemploy, "data/unemploy.csv")

data ディレクトリから読み出します。Run All や、Run All Chunks Above をする時は、上の二つをスキップする設定にしてあります。

df_unemploy <- read_csv("data/unemploy.csv")

データの確認

データ名で、中身を表示できます。head(df_unemploy) とすると、6行表示されます。

df_unemploy

変数の情報を得ることができます。

str(df_unemploy)

変形

変数の選択(selecting)

df_unemp <- df_unemploy |> 
  select(country, iso2c, year, female_unemploy, male_unemploy, region, income)
df_unemp

データには country のところに、国だけでなく、地域も入っているので、地域のリストを、iso2cREGION に入れておきます。

REGION <- c("1A", "1W", "4E", "6F", "6N", "6X", "7E", "8S", "A4", "A5", 
"A9", "B1", "B2", "B3", "B4", "B6", "B7", "B8", "C4", "C5", "C6", 
"C7", "C8", "C9", "D2", "D3", "D4", "D5", "D6", "D7", "EU", "F1", 
"F6", "M1", "M2", "N6", "OE", "R6", "S1", "S2", "S3", "S4", "T2", 
"T3", "T4", "T5", "T6", "T7", "V1", "V2", "V3", "V4", "XC", "XD", 
"XE", "XF", "XG", "XH", "XI", "XJ", "XL", "XM", "XN", "XO", "XP", 
"XQ", "XT", "XU", "XY", "Z4", "Z7", "ZB", "ZF", "ZG", "ZH", "ZI", 
"ZJ", "ZQ", "ZT")

地域名にはどのようなものがあるか見ておきます。

df_unemp |> filter(iso2c %in% REGION) |> distinct(country, iso2c)

国名も、地域(region)と、所得レベル(income)と共に、表示しておきます。

df_unemp |> filter(!(iso2c %in% REGION)) |> distinct(country, iso2c, region, income)

分析する国のリスト

自分で分析したい国のリストを作ってください。ここでは、ASEAN を iso2c で設定します。国名で選択しても構いません。

ASEAN <- c("BN", "KH", "ID", "LA", "MY", "MM", "PH", "SG", "VN")
asean <- c("Brunei Darussalam", "Cambodia", "Indonesia", "Lao PDR", "Malaysia", "Myanmar", "Philippines", "Singapore", "Viet Nam")

視覚化

1. 各年毎のデータの数の棒グラフ

まずは、NA の値を削除します。そのあとで、国の情報の数を数えたいので、!(iso2c %in% REGION) で、上でおいた、地域の iso2c を選択し、! は否定でしたから、地域ではないものを選択し、その数を棒グラフにしています。

df_unemp |> drop_na(female_unemploy, male_unemploy) |> filter(!(iso2c %in% REGION)) |>
  ggplot(aes(year)) + geom_bar()

気づいたこと・疑問

経年変化を表す折れ線グラフ

a. 日本、またはデータがある国

df_unemp |> filter(country == "Japan") |> drop_na(female_unemploy) |>
  ggplot(aes(year, female_unemploy)) + geom_line() +
  labs(title = "日本の女性労働者失業率")
df_unemp |> filter(country == "Japan") |> drop_na(male_unemploy) |>
  ggplot(aes(year, male_unemploy)) + geom_line() +
  labs(title = "日本の男性労働者失業率")

気づいたこと・疑問

b. 選択したいくつかの国

ASEAN は、iso2c ですから、下のようにします。

df_unemp |> filter(iso2c %in% ASEAN) |> drop_na(female_unemploy) |>
  ggplot(aes(year, female_unemploy, col = country)) + geom_line()+
  labs(title = "ASEAN の女性労働者失業率")

asean は、国名でしたから、下のようにします。今度は、男性の失業率です。

df_unemp |> filter(country %in% asean) |> drop_na(male_unemploy) |>
  ggplot(aes(year, male_unemploy, col = country)) + geom_line() +
  labs(title = "ASEAN の男性労働者失業率")

気づいたこと・疑問

縦長の表(Long Table)

cols = c(female_unemploy, male_unemploy) と、一つの指標にまとめるものをリストすると、name に指標名が入り、value に、その値が入る。書式は、pivot_longer(cols = ..., names_to = ..., values_to = ...) で、初期設定では、names_to = "name", values_to = "value" となっているので、指定しないと、下のようになる。Help 参照。

df_unemp_long <- df_unemp |> pivot_longer(cols = c(female_unemploy, male_unemploy))
df_unemp_long

日本の複数の指標を色分けした経年変化のグラフ

col = name と指定すると、色で区別して、一つのグラフに描ける

df_unemp_long |> filter(country == "Japan") |> drop_na(value) |>
  ggplot(aes(year, value, col = name)) + geom_line() +
  labs(title = "日本の男女別失業率")

気づいたこと・疑問

選択したいくつかの国の複数の指標を色分けした経年変化のグラフ

df_unemp_long |> filter(iso2c %in% ASEAN) |> drop_na(value) |>
  ggplot(aes(year, value, col = country, linetype = name)) + geom_line() +
  labs(title = "ASEAN の男女別失業率")

気づいたこと・疑問

散布図

a.(地域を除き)国のみの散布図

df_unemp |> filter(!(iso2c %in% REGION)) |> drop_na(female_unemploy, male_unemploy) |>
  ggplot(aes(female_unemploy, male_unemploy)) + geom_point() +
  labs(title = "失業率:男女別相関")

気づいたこと・疑問

近似(回帰)直線の表示

df_unemp |> filter(!(iso2c %in% REGION)) |> drop_na(female_unemploy, male_unemploy) |>
  ggplot(aes(female_unemploy, male_unemploy)) + geom_point() + 
  geom_smooth(formula = 'y~x', method = "lm", se = FALSE) +
  labs(title = "失業率:男女別相関(回帰直線付)")

気づいたこと・疑問

b. 最近の年の(地域を除き)国のみの散布図

df_unemp |> filter(!(iso2c %in% REGION)) |> filter(year == 2022) |> 
  drop_na(female_unemploy, male_unemploy) |>
  ggplot(aes(female_unemploy, male_unemploy)) + geom_point() +
  labs(title = "2022年の失業率:男女別相関")

気づいたこと・疑問

近似(回帰)直線の表示

df_unemp |> filter(!(iso2c %in% REGION)) |> filter(year == 2022) |> 
  drop_na(female_unemploy, male_unemploy) |>
  ggplot(aes(female_unemploy, male_unemploy)) + geom_point() + 
  geom_smooth(formula = 'y~x', method = "lm", se = FALSE) +
  labs(title = "失業率:男女別相関(回帰直線付)")

気づいたこと・疑問

c. 相関係数

df_unemp |> filter(!(iso2c %in% REGION)) |> filter(year == 2022) |> 
  drop_na(female_unemploy, male_unemploy) |> select(female_unemploy, male_unemploy) |> cor()

気づいたこと・疑問

箱ヒゲ図(Boxplot)

指標別

df_unemp_long |> filter(!(iso2c %in% REGION)) |> filter(year == 2022) |> 
  drop_na(value) |>
  ggplot(aes(name, value)) + geom_boxplot()  +
  labs(title = "労働者失業率:男女別箱ひげ図")

地域別

df_unemp_long |> filter(!(iso2c %in% REGION)) |> filter(year == 2022) |> 
  drop_na(value, region) |>
  ggplot(aes(region, value, fill = name)) + geom_boxplot() + coord_flip() +
  labs(title = "労働者失業率:男女・地域別箱ひげ図")

収入レベル別

df_unemp_long |> filter(!(iso2c %in% REGION)) |> filter(year == 2022) |> 
  drop_na(value, income) |> filter(income != "Not classified") |>
  ggplot(aes(income, value, fill = name)) + geom_boxplot() + coord_flip() +
  labs(title = "労働者失業率:男女・収入レベル別箱ひげ図")

選択した年別

df_unemp_long |> filter(!(iso2c %in% REGION)) |> filter(year %in% c(1991, 2001, 2011, 2021)) |>
  drop_na(value) |> 
  ggplot(aes(factor(year), value, fill = name)) + geom_boxplot()  +
  labs(title = "労働者失業率:男女別・10年ごとの箱ひげ図")

選択した国別

df_unemp_long |> filter(iso2c %in% ASEAN) |> drop_na(value) |> 
  ggplot(aes(country, value, fill = name)) + geom_boxplot() + coord_flip() +
  labs(title = "ASEAN の労働者失業率:男女別箱ひげ図")

いくつか、試してみてください。

気づいたこと・疑問

気づいたこと・疑問

気づいたこと・疑問

気づいたこと・疑問

LS0tCnRpdGxlOiAi6Kqy6aGMMu+8muaOoue0oueahOODh+ODvOOCv+WIhuaekCAtIEVEQSIKYXV0aG9yOiAiSUQsIExhc3QsIEZpcnN0IgpkYXRlOiAiMjAyNOW5tDLmnIg25pelIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdAotLS0KCiMjIOiqsumhjAoK5Lul5LiL44Gu5oyH5qiZ44Gu5Lit44GL44KJ44CB5LqM44Gk5Lul5LiK77yI6KSH5pWw77yJ44KS6YG45oqe44GX44Gm44CB44OH44O844K/44Gu5qaC6KaB77yIZGVzY3JpcHRpb27vvInjgpLoqJjpjLLjgZfjgIHjg4fjg7zjgr/jgpIgV0RJIOOBp+WPluW+l+OBl+OAgeS7peS4i+OBruWIhuaekOOCkuOBmeOCi+OAggoKMS4gIOWQhOW5tOavjuOBruODh+ODvOOCv+OBruaVsOOBruajkuOCsOODqeODlQoyLiAg57WM5bm05aSJ5YyW44KS6KGo44GZ5oqY44KM57ea44Kw44Op44OVCiAgICBhLiAg5pel5pys44CB44G+44Gf44Gv44OH44O844K/44GM44GC44KL5Zu9CiAgICBiLiAg6YG45oqe44GX44Gf44GE44GP44Gk44GL44Gu5Zu9CjMuICDopIfmlbDjga7mjIfmqJnjga7lgKTjgpLkuIDliJfjgavlkKvjgoDnuKbplbfjga7ooajvvIhMb25nIFRhYmxl77yJ44KS5L2c5oiQ44GXCiAg44CAYS4gIOaXpeacrOOAgeOBvuOBn+OBr+ODh+ODvOOCv+OBjOOBguOCi+WbveOBruOAgeikh+aVsOOBruaMh+aomeOCkuiJsuWIhuOBkeOBl+OBn+e1jOW5tOWkieWMluOBruOCsOODqeODlQogIOOAgGIuICDpgbjmip7jgZfjgZ/jgYTjgY/jgaTjgYvjga7lm73jgavjgaTjgYTjgabjga7ntYzlubTlpInljJbjga7jgrDjg6njg5XjgpLjgIHlm73jgpLoibLliIbjgZHjgZfjgIHmjIfmqJnjga/nt5rjga7nqK7poZ7jgpLlpInjgYjjgZ/jgrDjg6njg5UKNC4gIOS6jOOBpOOBruODh+ODvOOCv+OBruaVo+W4g+Wbsy0gTkEg44Gv5Y+W44KK6Zmk44GP44GT44Go44CC77yIbG9nMTAg44K544Kx44O844Or44KS55So44GE44KL5aC05ZCI44Gv5YCk44GM5q2j44Gu44KC44Gu44Gu44G/44Gr6ZmQ5a6a77yJCiAgICBhLiAg77yI5Zyw5Z+f44KS6Zmk44GN77yJ5Zu944Gu44G/44Gu5pWj5biD5ZuzIO+8iOi/keS8vO+8iOWbnuW4sO+8ieebtOe3muOCkuihqOekuu+8iQogICAgYi4gIOacgOi/keOBruW5tOOBru+8iOWcsOWfn+OCkumZpOOBje+8ieWbveOBruOBv+OBruaVo+W4g+Wbs+OAgO+8iOi/keS8vO+8iOWbnuW4sO+8ieebtOe3muOCkuihqOekuu+8iQogICAgYy4gIGIuIOOBq+WvvuW/nOOBmeOCi+ebuOmWouS/guaVsAo1LiAg44Kr44OG44K044Oq44O85aSJ5pWw77yIQ2F0ZWdvcmljYWwgVmFyaWFibGU6IHJlZ2lvbiwgaW5jb21lLCB5ZWFyIOOBquOBqe+8ieOBqOOAgeaVsOWApOWkieaVsO+8iE51bWJlcmljYWwgVmFyaWFibGXvvInkuIDntYTjgavjgaTjgYTjgabjga7nrrHjg5LjgrLlm7PvvIhCb3hwbG9077yJCgrjgZ3jgozjgZ7jgozjgavjgaTjgYTjgabogIPlr5/vvIjmsJfjgaXjgYTjgZ/jgZPjgajjgIHnlpHllY/jgarjganvvInjgpLoqJjjgZkKCioqMjAyMy4yLjEwLjIzOjU5Kiog44G+44Gn44GrIE1vb2RsZSDjga7oqrLpoYzvvJLmj5Dlh7rjg5zjg4Pjgq/jgrnjgavmj5Dlh7rjgZfjgabjgY/jgaDjgZXjgYTjgIIKCuOBp+OBjeOBn+OCsOODqeODleOBoOOBkeOBp+OCguani+OBhOOBvuOBm+OCk+OBi+OCieOAgeacn+mZkOOBvuOBp+OBq+aPkOWHuuOBl+OBpuOBj+OBoOOBleOBhOOAguino+iqrOOCkuWKoOOBiOOAgeiqsumhjO+8kuWGjeaPkOWHuuODnOODg+OCr+OCueOCkuS9nOaIkOOBmeOCi+S6iOWumuOBp+OBmeOAggoKIyMjIOODh+ODvOOCvwoKMS4gICBDTzIgZW1pc3Npb25zIChtZXRyaWMgdG9ucyBwZXIgY2FwaXRhKSDvvJpFTi5BVE0uQ08yRS5QQyBbW0xpbmtdKGh0dHBzOi8vZGF0YS53b3JsZGJhbmsub3JnL2luZGljYXRvci9FTi5BVE0uQ08yRS5QQyldCgoyLiAgIEZvcmVzdCBhcmVhICglIG9mIGxhbmQgYXJlYSnvvJpBRy5MTkQuRlJTVC5aUyBbW0xpbmtdKGh0dHBzOi8vZGF0YS53b3JsZGJhbmsub3JnL2luZGljYXRvci9BRy5MTkQuRlJTVC5aUyldCgozLiAgIFJlbmV3YWJsZSBlbGVjdHJpY2l0eSBvdXRwdXQgKCUgb2YgdG90YWwgZWxlY3RyaWNpdHkgb3V0cHV0Ke+8mkVHLkVMQy5STkVXLlpTIFtbTGlua10oaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL0VHLkVMQy5STkVXLlpTKV0KCjQuICAgRWxlY3RyaWNpdHkgcHJvZHVjdGlvbiBmcm9tIG9pbCwgZ2FzIGFuZCBjb2FsIHNvdXJjZXMgKCUgb2YgdG90YWwp77yaRUcuRUxDLkZPU0wuWlMgW1tMaW5rXShodHRwczovL2RhdGEud29ybGRiYW5rLm9yZy9pbmRpY2F0b3IvRUcuRUxDLkZPU0wuWlMpXQoKNS4gICBFbGVjdHJpY2l0eSBwcm9kdWN0aW9uIGZyb20gbnVjbGVhciBzb3VyY2VzICglIG9mIHRvdGFsKe+8mkVHLkVMQy5OVUNMLlpTIFtbTGlua10oaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL0VHLkVMQy5OVUNMLlpTKV0KCjYuICAgQWNjZXNzIHRvIGVsZWN0cmljaXR5LCB1cmJhbiAoJSBvZiB1cmJhbiBwb3B1bGF0aW9uKe+8mkVHLkVMQy5BQ0NTLlVSLlpTIFtbTGlua10oaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL0VHLkVMQy5BQ0NTLlVSLlpTKV0KCjcuICAgQWNjZXNzIHRvIGVsZWN0cmljaXR5LCBydXJhbCAoJSBvZiBydXJhbCBwb3B1bGF0aW9uKe+8mkVHLkVMQy5BQ0NTLlJVLlpTIFtbTGlua10oaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL0VHLkVMQy5BQ0NTLlJVLlpTKV0KCjguICAgUGVvcGxlIHVzaW5nIGF0IGxlYXN0IGJhc2ljIGRyaW5raW5nIHdhdGVyIHNlcnZpY2VzLCB1cmJhbiAoJSBvZiB1cmJhbiBwb3B1bGF0aW9uKe+8mlNILkgyTy5CQVNXLlVSLlpTIFtbTGlua10oaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL1NILkgyTy5CQVNXLlpTKV0KCjkuICAgUGVvcGxlIHVzaW5nIGF0IGxlYXN0IGJhc2ljIGRyaW5raW5nIHdhdGVyIHNlcnZpY2VzLCBydXJhbCAoJSBvZiBydXJhbCBwb3B1bGF0aW9uKe+8mlNILkgyTy5CQVNXLlJVLlpTIFtbTGlua10oaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL1NILkgyTy5CQVNXLlJVLlpTKV0KCjEwLiAgIFBlb3BsZSB1c2luZyBhdCBsZWFzdCBiYXNpYyBzYW5pdGF0aW9uIHNlcnZpY2VzLCB1cmJhbiAoJSBvZiB1cmJhbiBwb3B1bGF0aW9uKe+8mlNILlNUQS5CQVNTLlVSLlpTIFtbTGlua10oaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL1NILlNUQS5CQVNTLlVSLlpTKV0KCjExLiAgIFBlb3BsZSB1c2luZyBhdCBsZWFzdCBiYXNpYyBzYW5pdGF0aW9uIHNlcnZpY2VzLCBydXJhbCAoJSBvZiBydXJhbCBwb3B1bGF0aW9uKe+8mlNILlNUQS5CQVNTLlJVLlpTIFtbTGlua10oaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL1NILlNUQS5CQVNTLlJVLlpTKV0KCgojIyDjg4fjg7zjgr8KCiMjIyDjg4fjg7zjgr/mg4XloLEKCi0gICDjg4fjg7zjgr/lkI3vvJHvvJrjgIHjg4fjg7zjgr/jgrPjg7zjg4nvvJrjgIHlpInmlbDlkI3vvJoKCiAgLSAgIOamguimge+8mgoKLSAgIOODh+ODvOOCv+WQje+8ku+8muOAgeODh+ODvOOCv+OCs+ODvOODie+8muOAgeWkieaVsOWQje+8mgoKICAtICAg5qaC6KaB77yaCgoKIyMjIOODh+ODvOOCv+OBruWPluW+lwoKIyMjIyDmupblgpkKCirjgZPjgozjgb7jgafjgajjgoLlkIzjgZjjgojjgYbjgavkuozjgaTjga7jg5Hjg4PjgrHjg7zjgrjjgpLoqq3jgb/ovrzjgb/vvIhsb2Fk77yJ44G+44GZ44CCKgoKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KFdESSkKYGBgCgpXREkg44OR44OD44Kx44O844K444KS5L2/44Gj44Gm44CB55u05o6l44OH44O844K/44KS44OA44Km44Oz44Ot44O844OJ44GX44CB5aSJ5pWw5ZCN44KS44CBdW5kZXJfNi44NSDjgavmjIflrprjgIIKCirjgZPjga7lpInmlbDlkI3jga/jgIHku4rlvozkvb/jgYTjgb7jgZnjgYvjgonjgIHph43opoHjgafjgZnjgILkuIDlv5zjgIHkvovjgajjgZfjgabjgIHjgo/jgZ/jgZfjgYzkvb/jgaPjgZ/jgIHlpInmlbDlkI3jgpLmm7jjgYTjgabjgYLjgorjgb7jgZnjgILku5bjga7lpInmlbDlkI3jgpLkvb/jgaPjgabjgoLmp4vjgYTjgb7jgZvjgpPjgIIqCgpgYGAKZGZfdW5lbXBsb3kgPC0gV0RJKGluZGljYXRvciA9IGMoZmVtYWxlX3VuZW1wbG95ID0gIlNMLlVFTS5UT1RMLkZFLlpTIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbGVfdW5lbXBsb3kgPSAiU0wuVUVNLlRPVEwuTUEuWlMiKSwKICAgICAgICAgICAgICAgICAgIGV4dHJhID0gVFJVRSkKYGBgCgpgYGB7cn0KCmBgYAoKCipkYXRhIOODh+OCo+ODrOOCr+ODiOODquOBq+abuOOBjei+vOOCk+OBp+OBiuOBjeOBvuOBmeOAgioKCmBgYAp3cml0ZV9jc3YoZGZfdW5lbXBsb3ksICJkYXRhL3VuZW1wbG95LmNzdiIpCmBgYAoKYGBge3J9CgpgYGAKCipkYXRhIOODh+OCo+ODrOOCr+ODiOODquOBi+OCieiqreOBv+WHuuOBl+OBvuOBmeOAglJ1biBBbGwg44KE44CBUnVuIEFsbCBDaHVua3MgQWJvdmUg44KS44GZ44KL5pmC44Gv44CB5LiK44Gu5LqM44Gk44KS44K544Kt44OD44OX44GZ44KL6Kit5a6a44Gr44GX44Gm44GC44KK44G+44GZ44CCKgoKYGBgCmRmX3VuZW1wbG95IDwtIHJlYWRfY3N2KCJkYXRhL3VuZW1wbG95LmNzdiIpCmBgYAoKYGBge3J9CgpgYGAKCgojIyMg44OH44O844K/44Gu56K66KqNCgoq44OH44O844K/5ZCN44Gn44CB5Lit6Lqr44KS6KGo56S644Gn44GN44G+44GZ44CCYGhlYWQoZGZfdW5lbXBsb3kpYCDjgajjgZnjgovjgajjgIE26KGM6KGo56S644GV44KM44G+44GZ44CCKgoKYGBgCmRmX3VuZW1wbG95CmBgYAoKYGBge3J9CgpgYGAKCgoq5aSJ5pWw44Gu5oOF5aCx44KS5b6X44KL44GT44Go44GM44Gn44GN44G+44GZ44CCKgoKYGBgCnN0cihkZl91bmVtcGxveSkKYGBgCgpgYGB7cn0KCmBgYAoKCiMjIyDlpInlvaIKCiMjIyMg5aSJ5pWw44Gu6YG45oqe77yIc2VsZWN0aW5n77yJCgpgYGAKZGZfdW5lbXAgPC0gZGZfdW5lbXBsb3kgfD4gCiAgc2VsZWN0KGNvdW50cnksIGlzbzJjLCB5ZWFyLCBmZW1hbGVfdW5lbXBsb3ksIG1hbGVfdW5lbXBsb3ksIHJlZ2lvbiwgaW5jb21lKQpkZl91bmVtcApgYGAKCmBgYHtyfQoKYGBgCgoq44OH44O844K/44Gr44GvIGNvdW50cnkg44Gu44Go44GT44KN44Gr44CB5Zu944Gg44GR44Gn44Gq44GP44CB5Zyw5Z+f44KC5YWl44Gj44Gm44GE44KL44Gu44Gn44CB5Zyw5Z+f44Gu44Oq44K544OI44KS44CBYGlzbzJjYCDjgacgYFJFR0lPTmAg44Gr5YWl44KM44Gm44GK44GN44G+44GZ44CCKgoKYGBge3J9ClJFR0lPTiA8LSBjKCIxQSIsICIxVyIsICI0RSIsICI2RiIsICI2TiIsICI2WCIsICI3RSIsICI4UyIsICJBNCIsICJBNSIsIAoiQTkiLCAiQjEiLCAiQjIiLCAiQjMiLCAiQjQiLCAiQjYiLCAiQjciLCAiQjgiLCAiQzQiLCAiQzUiLCAiQzYiLCAKIkM3IiwgIkM4IiwgIkM5IiwgIkQyIiwgIkQzIiwgIkQ0IiwgIkQ1IiwgIkQ2IiwgIkQ3IiwgIkVVIiwgIkYxIiwgCiJGNiIsICJNMSIsICJNMiIsICJONiIsICJPRSIsICJSNiIsICJTMSIsICJTMiIsICJTMyIsICJTNCIsICJUMiIsIAoiVDMiLCAiVDQiLCAiVDUiLCAiVDYiLCAiVDciLCAiVjEiLCAiVjIiLCAiVjMiLCAiVjQiLCAiWEMiLCAiWEQiLCAKIlhFIiwgIlhGIiwgIlhHIiwgIlhIIiwgIlhJIiwgIlhKIiwgIlhMIiwgIlhNIiwgIlhOIiwgIlhPIiwgIlhQIiwgCiJYUSIsICJYVCIsICJYVSIsICJYWSIsICJaNCIsICJaNyIsICJaQiIsICJaRiIsICJaRyIsICJaSCIsICJaSSIsIAoiWkoiLCAiWlEiLCAiWlQiKQpgYGAKCirlnLDln5/lkI3jgavjga/jganjga7jgojjgYbjgarjgoLjga7jgYzjgYLjgovjgYvopovjgabjgYrjgY3jgb7jgZnjgIIqCgpgYGAKZGZfdW5lbXAgfD4gZmlsdGVyKGlzbzJjICVpbiUgUkVHSU9OKSB8PiBkaXN0aW5jdChjb3VudHJ5LCBpc28yYykKYGBgCgpgYGB7cn0KCmBgYAoKCirlm73lkI3jgoLjgIHlnLDln5/vvIhyZWdpb27vvInjgajjgIHmiYDlvpfjg6zjg5njg6vvvIhpbmNvbWXvvInjgajlhbHjgavjgIHooajnpLrjgZfjgabjgYrjgY3jgb7jgZnjgIIqCgpgYGAKZGZfdW5lbXAgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBkaXN0aW5jdChjb3VudHJ5LCBpc28yYywgcmVnaW9uLCBpbmNvbWUpCmBgYAoKYGBge3J9CgpgYGAKCiMjIyDliIbmnpDjgZnjgovlm73jga7jg6rjgrnjg4gKCiroh6rliIbjgafliIbmnpDjgZfjgZ/jgYTlm73jga7jg6rjgrnjg4jjgpLkvZzjgaPjgabjgY/jgaDjgZXjgYTjgILjgZPjgZPjgafjga/jgIFBU0VBTiDjgpIgaXNvMmMg44Gn6Kit5a6a44GX44G+44GZ44CC5Zu95ZCN44Gn6YG45oqe44GX44Gm44KC5qeL44GE44G+44Gb44KT44CCKgoKYGBgCkFTRUFOIDwtIGMoIkJOIiwgIktIIiwgIklEIiwgIkxBIiwgIk1ZIiwgIk1NIiwgIlBIIiwgIlNHIiwgIlZOIikKYGBgCgpgYGAKYXNlYW4gPC0gYygiQnJ1bmVpIERhcnVzc2FsYW0iLCAiQ2FtYm9kaWEiLCAiSW5kb25lc2lhIiwgIkxhbyBQRFIiLCAiTWFsYXlzaWEiLCAiTXlhbm1hciIsICJQaGlsaXBwaW5lcyIsICJTaW5nYXBvcmUiLCAiVmlldCBOYW0iKQpgYGAKCmBgYHtyfQoKYGBgCgoKIyMg6KaW6Kaa5YyWCgojIyMgMS4g5ZCE5bm05q+O44Gu44OH44O844K/44Gu5pWw44Gu5qOS44Kw44Op44OVCgoq44G+44Ga44Gv44CBTkEg44Gu5YCk44KS5YmK6Zmk44GX44G+44GZ44CC44Gd44Gu44GC44Go44Gn44CB5Zu944Gu5oOF5aCx44Gu5pWw44KS5pWw44GI44Gf44GE44Gu44Gn44CBYCEoaXNvMmMgJWluJSBSRUdJT04pYCDjgafjgIHkuIrjgafjgYrjgYTjgZ/jgIHlnLDln5/jga4gaXNvMmMg44KS6YG45oqe44GX44CBISDjga/lkKblrprjgafjgZfjgZ/jgYvjgonjgIHlnLDln5/jgafjga/jgarjgYTjgoLjga7jgpLpgbjmip7jgZfjgIHjgZ3jga7mlbDjgpLmo5LjgrDjg6njg5XjgavjgZfjgabjgYTjgb7jgZnjgIIqCgpgYGAKZGZfdW5lbXAgfD4gZHJvcF9uYShmZW1hbGVfdW5lbXBsb3ksIG1hbGVfdW5lbXBsb3kpIHw+IGZpbHRlcighKGlzbzJjICVpbiUgUkVHSU9OKSkgfD4KICBnZ3Bsb3QoYWVzKHllYXIpKSArIGdlb21fYmFyKCkKYGBgCgpgYGB7cn0KCmBgYAoKCioq5rCX44Gl44GE44Gf44GT44Go44O755aR5ZWPKioKCi0gICAKCiMjIyDntYzlubTlpInljJbjgpLooajjgZnmipjjgoznt5rjgrDjg6njg5UKCiMjIyMgYS4g5pel5pys44CB44G+44Gf44Gv44OH44O844K/44GM44GC44KL5Zu9CgpgYGAKZGZfdW5lbXAgfD4gZmlsdGVyKGNvdW50cnkgPT0gIkphcGFuIikgfD4gZHJvcF9uYShmZW1hbGVfdW5lbXBsb3kpIHw+CiAgZ2dwbG90KGFlcyh5ZWFyLCBmZW1hbGVfdW5lbXBsb3kpKSArIGdlb21fbGluZSgpICsKICBsYWJzKHRpdGxlID0gIuaXpeacrOOBruWls+aAp+WKtOWDjeiAheWksealreeOhyIpCmBgYAoKYGBge3J9CgpgYGAKCgpgYGAKZGZfdW5lbXAgfD4gZmlsdGVyKGNvdW50cnkgPT0gIkphcGFuIikgfD4gZHJvcF9uYShtYWxlX3VuZW1wbG95KSB8PgogIGdncGxvdChhZXMoeWVhciwgbWFsZV91bmVtcGxveSkpICsgZ2VvbV9saW5lKCnjgIArCiAgbGFicyh0aXRsZSA9ICLml6XmnKzjga7nlLfmgKflirTlg43ogIXlpLHmpa3njociKQpgYGAKCgpgYGB7cn0KCmBgYAoKCioq5rCX44Gl44GE44Gf44GT44Go44O755aR5ZWPKioKCi0gICAKCiMjIyMgYi4g6YG45oqe44GX44Gf44GE44GP44Gk44GL44Gu5Zu9CgoqQVNFQU4g44Gv44CBaXNvMmMg44Gn44GZ44GL44KJ44CB5LiL44Gu44KI44GG44Gr44GX44G+44GZ44CCKgoKYGBgCmRmX3VuZW1wIHw+IGZpbHRlcihpc28yYyAlaW4lIEFTRUFOKSB8PiBkcm9wX25hKGZlbWFsZV91bmVtcGxveSkgfD4KICBnZ3Bsb3QoYWVzKHllYXIsIGZlbWFsZV91bmVtcGxveSwgY29sID0gY291bnRyeSkpICsgZ2VvbV9saW5lKCkrCiAgbGFicyh0aXRsZSA9ICJBU0VBTiDjga7lpbPmgKflirTlg43ogIXlpLHmpa3njociKQpgYGAKYXNlYW4g44Gv44CB5Zu95ZCN44Gn44GX44Gf44GL44KJ44CB5LiL44Gu44KI44GG44Gr44GX44G+44GZ44CC5LuK5bqm44Gv44CB55S35oCn44Gu5aSx5qWt546H44Gn44GZ44CCCgpgYGAKZGZfdW5lbXAgfD4gZmlsdGVyKGNvdW50cnkgJWluJSBhc2VhbikgfD4gZHJvcF9uYShtYWxlX3VuZW1wbG95KSB8PgogIGdncGxvdChhZXMoeWVhciwgbWFsZV91bmVtcGxveSwgY29sID0gY291bnRyeSkpICsgZ2VvbV9saW5lKCkgKwogIGxhYnModGl0bGUgPSAiQVNFQU4g44Gu55S35oCn5Yq05YON6ICF5aSx5qWt546HIikKYGBgCgpgYGB7cn0KCmBgYAoKCioq5rCX44Gl44GE44Gf44GT44Go44O755aR5ZWPKioKCi0gICAKCiMjIyDnuKbplbfjga7ooajvvIhMb25nIFRhYmxl77yJCgoqYGNvbHMgPSBjKGZlbWFsZV91bmVtcGxveSwgbWFsZV91bmVtcGxveSlgIOOBqOOAgeS4gOOBpOOBruaMh+aomeOBq+OBvuOBqOOCgeOCi+OCguOBruOCkuODquOCueODiOOBmeOCi+OBqOOAgWBuYW1lYCDjgavmjIfmqJnlkI3jgYzlhaXjgorjgIFgdmFsdWVgIOOBq+OAgeOBneOBruWApOOBjOWFpeOCi+OAguabuOW8j+OBr+OAgWBwaXZvdF9sb25nZXIoY29scyA9IC4uLiwgbmFtZXNfdG8gPSAuLi4sIHZhbHVlc190byA9IC4uLilgIOOBp+OAgeWIneacn+ioreWumuOBp+OBr+OAgWBuYW1lc190byA9ICJuYW1lIiwgdmFsdWVzX3RvID0gInZhbHVlImAg44Go44Gq44Gj44Gm44GE44KL44Gu44Gn44CB5oyH5a6a44GX44Gq44GE44Go44CB5LiL44Gu44KI44GG44Gr44Gq44KL44CCSGVscCDlj4LnhafjgIIqCgpgYGAKZGZfdW5lbXBfbG9uZyA8LSBkZl91bmVtcCB8PiBwaXZvdF9sb25nZXIoY29scyA9IGMoZmVtYWxlX3VuZW1wbG95LCBtYWxlX3VuZW1wbG95KSkKZGZfdW5lbXBfbG9uZwpgYGAKCmBgYHtyfQoKYGBgCgoKIyMjIyDml6XmnKzjga7opIfmlbDjga7mjIfmqJnjgpLoibLliIbjgZHjgZfjgZ/ntYzlubTlpInljJbjga7jgrDjg6njg5UgCgoqYGNvbCA9IG5hbWVgIOOBqOaMh+WumuOBmeOCi+OBqOOAgeiJsuOBp+WMuuWIpeOBl+OBpuOAgeS4gOOBpOOBruOCsOODqeODleOBq+aPj+OBkeOCiyoKCmBgYApkZl91bmVtcF9sb25nIHw+IGZpbHRlcihjb3VudHJ5ID09ICJKYXBhbiIpIHw+IGRyb3BfbmEodmFsdWUpIHw+CiAgZ2dwbG90KGFlcyh5ZWFyLCB2YWx1ZSwgY29sID0gbmFtZSkpICsgZ2VvbV9saW5lKCkgKwogIGxhYnModGl0bGUgPSAi5pel5pys44Gu55S35aWz5Yil5aSx5qWt546HIikKYGBgCgpgYGB7cn0KCmBgYAoKKirmsJfjgaXjgYTjgZ/jgZPjgajjg7vnlpHllY8qKgoKLSAgIAoKIyMjIyDpgbjmip7jgZfjgZ/jgYTjgY/jgaTjgYvjga7lm73jga7opIfmlbDjga7mjIfmqJnjgpLoibLliIbjgZHjgZfjgZ/ntYzlubTlpInljJbjga7jgrDjg6njg5UgCgpgYGAKZGZfdW5lbXBfbG9uZyB8PiBmaWx0ZXIoaXNvMmMgJWluJSBBU0VBTikgfD4gZHJvcF9uYSh2YWx1ZSkgfD4KICBnZ3Bsb3QoYWVzKHllYXIsIHZhbHVlLCBjb2wgPSBjb3VudHJ5LCBsaW5ldHlwZSA9IG5hbWUpKSArIGdlb21fbGluZSgpICsKICBsYWJzKHRpdGxlID0gIkFTRUFOIOOBrueUt+Wls+WIpeWksealreeOhyIpCmBgYAoKYGBge3J9CgpgYGAKCgoqKuawl+OBpeOBhOOBn+OBk+OBqOODu+eWkeWVjyoqCgotICAgCgojIyMg5pWj5biD5ZuzCgojIyMjIGEu77yI5Zyw5Z+f44KS6Zmk44GN77yJ5Zu944Gu44G/44Gu5pWj5biD5ZuzIAoKYGBgCmRmX3VuZW1wIHw+IGZpbHRlcighKGlzbzJjICVpbiUgUkVHSU9OKSkgfD4gZHJvcF9uYShmZW1hbGVfdW5lbXBsb3ksIG1hbGVfdW5lbXBsb3kpIHw+CiAgZ2dwbG90KGFlcyhmZW1hbGVfdW5lbXBsb3ksIG1hbGVfdW5lbXBsb3kpKSArIGdlb21fcG9pbnQoKSArCiAgbGFicyh0aXRsZSA9ICLlpLHmpa3njofvvJrnlLflpbPliKXnm7jplqIiKQpgYGAKCmBgYHtyfQoKYGBgCgoKKirmsJfjgaXjgYTjgZ/jgZPjgajjg7vnlpHllY8qKgoKLSAgIAoKIyMjIyDov5HkvLzvvIjlm57luLDvvInnm7Tnt5rjga7ooajnpLoKCmBgYApkZl91bmVtcCB8PiBmaWx0ZXIoIShpc28yYyAlaW4lIFJFR0lPTikpIHw+IGRyb3BfbmEoZmVtYWxlX3VuZW1wbG95LCBtYWxlX3VuZW1wbG95KSB8PgogIGdncGxvdChhZXMoZmVtYWxlX3VuZW1wbG95LCBtYWxlX3VuZW1wbG95KSkgKyBnZW9tX3BvaW50KCkgKyAKICBnZW9tX3Ntb290aChmb3JtdWxhID0gJ3l+eCcsIG1ldGhvZCA9ICJsbSIsIHNlID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIuWksealreeOh++8mueUt+Wls+WIpeebuOmWou+8iOWbnuW4sOebtOe3muS7mO+8iSIpCmBgYAoKYGBge3J9CgpgYGAKCgoqKuawl+OBpeOBhOOBn+OBk+OBqOODu+eWkeWVjyoqCgotICAgCgojIyMjIGIuIOacgOi/keOBruW5tOOBru+8iOWcsOWfn+OCkumZpOOBje+8ieWbveOBruOBv+OBruaVo+W4g+WbswoKYGBgCmRmX3VuZW1wIHw+IGZpbHRlcighKGlzbzJjICVpbiUgUkVHSU9OKSkgfD4gZmlsdGVyKHllYXIgPT0gMjAyMikgfD4gCiAgZHJvcF9uYShmZW1hbGVfdW5lbXBsb3ksIG1hbGVfdW5lbXBsb3kpIHw+CiAgZ2dwbG90KGFlcyhmZW1hbGVfdW5lbXBsb3ksIG1hbGVfdW5lbXBsb3kpKSArIGdlb21fcG9pbnQoKSArCiAgbGFicyh0aXRsZSA9ICIyMDIy5bm044Gu5aSx5qWt546H77ya55S35aWz5Yil55u46ZaiIikKYGBgCgpgYGB7cn0KCmBgYAoKCioq5rCX44Gl44GE44Gf44GT44Go44O755aR5ZWPKioKCi0gICAKCiMjIyMg6L+R5Ly877yI5Zue5biw77yJ55u057ea44Gu6KGo56S6CgpgYGAKZGZfdW5lbXAgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBmaWx0ZXIoeWVhciA9PSAyMDIyKSB8PiAKICBkcm9wX25hKGZlbWFsZV91bmVtcGxveSwgbWFsZV91bmVtcGxveSkgfD4KICBnZ3Bsb3QoYWVzKGZlbWFsZV91bmVtcGxveSwgbWFsZV91bmVtcGxveSkpICsgZ2VvbV9wb2ludCgpICsgCiAgZ2VvbV9zbW9vdGgoZm9ybXVsYSA9ICd5fngnLCBtZXRob2QgPSAibG0iLCBzZSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICLlpLHmpa3njofvvJrnlLflpbPliKXnm7jplqLvvIjlm57luLDnm7Tnt5rku5jvvIkiKQpgYGAKCmBgYHtyfQoKYGBgCgoKKirmsJfjgaXjgYTjgZ/jgZPjgajjg7vnlpHllY8qKgoKLSAgIAoKIyMjIyBjLiDnm7jplqLkv4LmlbAKCmBgYApkZl91bmVtcCB8PiBmaWx0ZXIoIShpc28yYyAlaW4lIFJFR0lPTikpIHw+IGZpbHRlcih5ZWFyID09IDIwMjIpIHw+IAogIGRyb3BfbmEoZmVtYWxlX3VuZW1wbG95LCBtYWxlX3VuZW1wbG95KSB8PiBzZWxlY3QoZmVtYWxlX3VuZW1wbG95LCBtYWxlX3VuZW1wbG95KSB8PiBjb3IoKQpgYGAKCmBgYHtyfQoKYGBgCgoqKuawl+OBpeOBhOOBn+OBk+OBqOODu+eWkeWVjyoqCgotICAgCgoKIyMjIyDnrrHjg5LjgrLlm7PvvIhCb3hwbG9077yJCgrmjIfmqJnliKUKCmBgYApkZl91bmVtcF9sb25nIHw+IGZpbHRlcighKGlzbzJjICVpbiUgUkVHSU9OKSkgfD4gZmlsdGVyKHllYXIgPT0gMjAyMikgfD4gCiAgZHJvcF9uYSh2YWx1ZSkgfD4KICBnZ3Bsb3QoYWVzKG5hbWUsIHZhbHVlKSkgKyBnZW9tX2JveHBsb3QoKSAgKwogIGxhYnModGl0bGUgPSAi5Yq05YON6ICF5aSx5qWt546H77ya55S35aWz5Yil566x44Gy44GS5ZuzIikKYGBgCgrlnLDln5/liKUKCmBgYApkZl91bmVtcF9sb25nIHw+IGZpbHRlcighKGlzbzJjICVpbiUgUkVHSU9OKSkgfD4gZmlsdGVyKHllYXIgPT0gMjAyMikgfD4gCiAgZHJvcF9uYSh2YWx1ZSwgcmVnaW9uKSB8PgogIGdncGxvdChhZXMocmVnaW9uLCB2YWx1ZSwgZmlsbCA9IG5hbWUpKSArIGdlb21fYm94cGxvdCgpICsgY29vcmRfZmxpcCgp44CAKwogIGxhYnModGl0bGUgPSAi5Yq05YON6ICF5aSx5qWt546H77ya55S35aWz44O75Zyw5Z+f5Yil566x44Gy44GS5ZuzIikKYGBgCgrlj47lhaXjg6zjg5njg6vliKUKCmBgYApkZl91bmVtcF9sb25nIHw+IGZpbHRlcighKGlzbzJjICVpbiUgUkVHSU9OKSkgfD4gZmlsdGVyKHllYXIgPT0gMjAyMikgfD4gCiAgZHJvcF9uYSh2YWx1ZSwgaW5jb21lKSB8PiBmaWx0ZXIoaW5jb21lICE9ICJOb3QgY2xhc3NpZmllZCIpIHw+CiAgZ2dwbG90KGFlcyhpbmNvbWUsIHZhbHVlLCBmaWxsID0gbmFtZSkpICsgZ2VvbV9ib3hwbG90KCkgKyBjb29yZF9mbGlwKCnjgIArCiAgbGFicyh0aXRsZSA9ICLlirTlg43ogIXlpLHmpa3njofvvJrnlLflpbPjg7vlj47lhaXjg6zjg5njg6vliKXnrrHjgbLjgZLlm7MiKQpgYGAKCumBuOaKnuOBl+OBn+W5tOWIpQoKYGBgCmRmX3VuZW1wX2xvbmcgfD4gZmlsdGVyKCEoaXNvMmMgJWluJSBSRUdJT04pKSB8PiBmaWx0ZXIoeWVhciAlaW4lIGMoMTk5MSwgMjAwMSwgMjAxMSwgMjAyMSkpIHw+CiAgZHJvcF9uYSh2YWx1ZSkgfD4gCiAgZ2dwbG90KGFlcyhmYWN0b3IoeWVhciksIHZhbHVlLCBmaWxsID0gbmFtZSkpICsgZ2VvbV9ib3hwbG90KCkgICsKICBsYWJzKHRpdGxlID0gIuWKtOWDjeiAheWksealreeOh++8mueUt+Wls+WIpeODuzEw5bm044GU44Go44Gu566x44Gy44GS5ZuzIikKYGBgCgrpgbjmip7jgZfjgZ/lm73liKUKCmBgYApkZl91bmVtcF9sb25nIHw+IGZpbHRlcihpc28yYyAlaW4lIEFTRUFOKSB8PiBkcm9wX25hKHZhbHVlKSB8PiAKICBnZ3Bsb3QoYWVzKGNvdW50cnksIHZhbHVlLCBmaWxsID0gbmFtZSkpICsgZ2VvbV9ib3hwbG90KCkgKyBjb29yZF9mbGlwKCkgKwogIGxhYnModGl0bGUgPSAiQVNFQU4g44Gu5Yq05YON6ICF5aSx5qWt546H77ya55S35aWz5Yil566x44Gy44GS5ZuzIikKYGBgCgrjgYTjgY/jgaTjgYvjgIHoqabjgZfjgabjgb/jgabjgY/jgaDjgZXjgYTjgIIKCmBgYHtyfQoKYGBgCgoKKirmsJfjgaXjgYTjgZ/jgZPjgajjg7vnlpHllY8qKgoKLSAgIAoKYGBge3J9CgpgYGAKCgoqKuawl+OBpeOBhOOBn+OBk+OBqOODu+eWkeWVjyoqCgotICAgCgpgYGB7cn0KCmBgYAoKCioq5rCX44Gl44GE44Gf44GT44Go44O755aR5ZWPKioKCi0gICAKCmBgYHtyfQoKYGBgCgoKKirmsJfjgaXjgYTjgZ/jgZPjgajjg7vnlpHllY8qKgoKLSAgIAo=