課題

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

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

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

これは、課題1と課題2の合わせたものです。課題1も課題2も終わった人は、挑戦してください。

2023.2.17.23:59 までに Moodle の課題2追加提出ボックスに提出してくださればフィードバックを書きます。。

データ

  1. Refugee population by country or territory of asylum:SM.POP.REFG [Link]

  2. Refugee population by country or territory of origin:SM.POP.REFG.OR [Link]

  3. Net ODA received (% of GNI):DT.ODA.ODAT.GN.ZS [Link]

  4. Net official development assistance and official aid received (current US$):DT.ODA.ALLD.CD [Link]

  5. Net ODA received (% of central government expense):DT.ODA.ODAT.XP.ZS [Link]

  6. Military expenditure (current USD):MS.MIL.XPND.CD [Link]

  7. Military expenditure (% of general government expenditure):MS.MIL.XPND.ZS [Link]

  8. Arms imports (SIPRI trend indicator values):MS.MIL.MPRT.KD [Link]

  9. Arms exports (SIPRI trend indicator values):MS.MIL.XPRT.KD [Link]

タイトル

データ

データ情報

  • Description:

  • 概要:

データの取得

準備

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

変数名を指定します。なるべくわかりやすい名前にします。

この変数名は、今後使いますから、重要です。一応、例として、わたしが使った、変数名を書いてあります。他の変数名を使っても構いません。extra = TRUE とすると、地域名(region)や、収入レベル(income)などが追加されます。

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

データの確認

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

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

変形

変数の選択(selecting)

データには 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")

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

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

分析する国のリスト

視覚化

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

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

気づいたこと・疑問

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

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

気づいたこと・疑問

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

気づいたこと・疑問

気づいたこと・疑問

3. 縦長の表(Long Table)

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

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

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

気づいたこと・疑問

気づいたこと・疑問

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

気づいたこと・疑問

4. ヒストグラム

それぞれのデータが十分ある最近の年の値のヒストグラム(度数分布)

分け方の数 bins や、幅 binwidth を適切に変更

一つ目の指標

必要に応じて、log10 スケール(scale_x_log10())を使う。

二つ目の指標

気づいたこと・疑問点

5. 棒グラフ

データが十分ある最近の年の値の10カ国の値の棒グラフ

a. 一つ目の指標:値が大きい方から

b. 一つ目の指標:値が小さい方から

a. 二つ目の指標:値が大きい方から

b. 二つ目の指標:値が小さい方から

6. 散布図

必要に応じて、LOG10 (scale_x_log10(), scale_y_log10()) スケールを使う。

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

気づいたこと・疑問

近似(回帰)直線の表示

気づいたこと・疑問

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

気づいたこと・疑問

近似(回帰)直線の表示

気づいたこと・疑問

c. 相関係数

気づいたこと・疑問

7. 箱ヒゲ図(Boxplot)

必要時応じて、ログスケール(scale_y_log10())

気づいたこと・疑問

気づいたこと・疑問

気づいたこと・疑問

  • `

気づいたこと・疑問

気づいたこと・疑問

LS0tCnRpdGxlOiAi5o6i57Si55qE44OH44O844K/5YiG5p6QIC0gRURBIOODhuODs+ODl+ODrOODvOODiCIKYXV0aG9yOiAiSUQsIExhc3QsIEZpcnN0IgpkYXRlOiAiMjAyNOW5tDLmnIgxM+aXpSIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQKLS0tCgojIyDoqrLpoYwKCuS7peS4i+OBruaMh+aomeOBruS4reOBi+OCieOAgeS6jOOBpOS7peS4iu+8iOikh+aVsO+8ieOCkumBuOaKnuOBl+OBpuOAgeODh+ODvOOCv+OBruamguimge+8iGRlc2NyaXB0aW9u77yJ44KS6KiY6Yyy44GX44CB44OH44O844K/44KSIFdESSDjgaflj5blvpfjgZfjgIHku6XkuIvjga7liIbmnpDjgpLjgZnjgovjgIIKCjEuICDlkITlubTmr47jga7jg4fjg7zjgr/jga7mlbDjga7mo5LjgrDjg6njg5UKMi4gIOe1jOW5tOWkieWMluOCkuihqOOBmeaKmOOCjOe3muOCsOODqeODlQogICAgYS4gIOaXpeacrOOAgeOBvuOBn+OBr+ODh+ODvOOCv+OBjOOBguOCi+WbvQogICAgYi4gIOmBuOaKnuOBl+OBn+OBhOOBj+OBpOOBi+OBruWbvQozLiAg6KSH5pWw44Gu5oyH5qiZ44Gu5YCk44KS5LiA5YiX44Gr5ZCr44KA57im6ZW344Gu6KGo77yITG9uZyBUYWJsZe+8ieOCkuS9nOaIkOOBlyDjgIAKICAgIGEuIOaXpeacrOOAgeOBvuOBn+OBr+ODh+ODvOOCv+OBjOOBguOCi+WbveOBruOAgeikh+aVsOOBruaMh+aomeOCkuiJsuWIhuOBkeOBl+OBn+e1jOW5tOWkieWMluOBruOCsOODqeODlSDjgIAKICAgIGIuIOmBuOaKnuOBl+OBn+OBhOOBj+OBpOOBi+OBruWbveOBq+OBpOOBhOOBpuOBrue1jOW5tOWkieWMluOBruOCsOODqeODleOCkuOAgeWbveOCkuiJsuWIhuOBkeOBl+OAgeaMh+aomeOBr+e3muOBrueorumhnuOCkuWkieOBiOOBn+OCsOODqeODlQo0LiAg44OH44O844K/44GM5Y2B5YiG44GC44KL5pyA6L+R44Gu5bm044Gu5YCk44Gu44OS44K544OI44Kw44Op44OgCjUuICDjg4fjg7zjgr/jgYzljYHliIbjgYLjgovmnIDov5Hjga7lubTjga7lgKTjga4xMOOCq+WbveOBruWApOOBruajkuOCsOODqeODlQogICAgYS4gIOWApOOBjOWkp+OBjeOBhOaWueOBi+OCiQogICAgYi4gIOWApOOBjOWwj+OBleOBhOaWueOBi+OCiQo2LiAg5LqM44Gk44Gu44OH44O844K/44Gu5pWj5biD5ZuzLSBOQSDjga/lj5bjgorpmaTjgY/jgZPjgajjgILvvIhsb2cxMCDjgrnjgrHjg7zjg6vjgpLnlKjjgYTjgovloLTlkIjjga/lgKTjgYzmraPjga7jgoLjga7jga7jgb/jgavpmZDlrprvvIkKICAgIGEuICDvvIjlnLDln5/jgpLpmaTjgY3vvInlm73jga7jgb/jga7mlaPluIPlm7Mg77yI6L+R5Ly877yI5Zue5biw77yJ55u057ea44KS6KGo56S677yJCiAgICBiLiAg5pyA6L+R44Gu5bm044Gu77yI5Zyw5Z+f44KS6Zmk44GN77yJ5Zu944Gu44G/44Gu5pWj5biD5Zuz44CA77yI6L+R5Ly877yI5Zue5biw77yJ55u057ea44KS6KGo56S677yJCiAgICBjLiAgYiDjgavlr77lv5zjgZnjgovnm7jplqLkv4LmlbAKNy4gIOOCq+ODhuOCtOODquODvOWkieaVsO+8iENhdGVnb3JpY2FsIFZhcmlhYmxlOiByZWdpb24sIGluY29tZSwgeWVhciDjgarjganvvInjgajjgIHmlbDlgKTlpInmlbDvvIhOdW1iZXJpY2FsIFZhcmlhYmxl77yJ5LiA57WE44Gr44Gk44GE44Gm44Gu566x44OS44Ky5Zuz77yIQm94cGxvdO+8iQoK44Gd44KM44Ge44KM44Gr44Gk44GE44Gm6ICD5a+f77yI5rCX44Gl44GE44Gf44GT44Go44CB55aR5ZWP44Gq44Gp77yJ44KS6KiY44GZCgrjgZPjgozjga/jgIHoqrLpoYzvvJHjgajoqrLpoYzvvJLjga7lkIjjgo/jgZvjgZ/jgoLjga7jgafjgZnjgILoqrLpoYzvvJHjgoLoqrLpoYzvvJLjgoLntYLjgo/jgaPjgZ/kurrjga/jgIHmjJHmiKbjgZfjgabjgY/jgaDjgZXjgYTjgIIKCioqMjAyMy4yLjE3LjIzOjU5Kiog44G+44Gn44GrIE1vb2RsZSDjga7oqrLpoYzvvJLov73liqDmj5Dlh7rjg5zjg4Pjgq/jgrnjgavmj5Dlh7rjgZfjgabjgY/jgaDjgZXjgozjgbDjg5XjgqPjg7zjg4njg5Djg4Pjgq/jgpLmm7jjgY3jgb7jgZnjgILjgIIKCiMjIyDjg4fjg7zjgr8KCjEuICAgUmVmdWdlZSBwb3B1bGF0aW9uIGJ5IGNvdW50cnkgb3IgdGVycml0b3J5IG9mIGFzeWx1be+8mlNNLlBPUC5SRUZHIFtbTGlua10oaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL1NNLlBPUC5SRUZHKV0KCjIuICAgUmVmdWdlZSBwb3B1bGF0aW9uIGJ5IGNvdW50cnkgb3IgdGVycml0b3J5IG9mIG9yaWdpbu+8mlNNLlBPUC5SRUZHLk9SIFtbTGlua10oaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL1NNLlBPUC5SRUZHLk9SKV0KCjMuICAgTmV0IE9EQSByZWNlaXZlZCAoJSBvZiBHTkkp77yaRFQuT0RBLk9EQVQuR04uWlMgW1tMaW5rXShodHRwczovL2RhdGEud29ybGRiYW5rLm9yZy9pbmRpY2F0b3IvRFQuT0RBLk9EQVQuR04uWlMpXQoKNC4gICBOZXQgb2ZmaWNpYWwgZGV2ZWxvcG1lbnQgYXNzaXN0YW5jZSBhbmQgb2ZmaWNpYWwgYWlkIHJlY2VpdmVkIChjdXJyZW50IFVTXCQp77yaRFQuT0RBLkFMTEQuQ0QgW1tMaW5rXShodHRwczovL2RhdGEud29ybGRiYW5rLm9yZy9pbmRpY2F0b3IvRFQuT0RBLkFMTEQuQ0QpXQoKNS4gICBOZXQgT0RBIHJlY2VpdmVkICglIG9mIGNlbnRyYWwgZ292ZXJubWVudCBleHBlbnNlKe+8mkRULk9EQS5PREFULlhQLlpTIFtbTGlua10oaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL0RULk9EQS5PREFULlhQLlpTKV0KCjYuICAgTWlsaXRhcnkgZXhwZW5kaXR1cmUgKGN1cnJlbnQgVVNEKe+8mk1TLk1JTC5YUE5ELkNEIFtbTGlua10oaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL01TLk1JTC5YUE5ELkNEKV0KCjcuICAgTWlsaXRhcnkgZXhwZW5kaXR1cmUgKCUgb2YgZ2VuZXJhbCBnb3Zlcm5tZW50IGV4cGVuZGl0dXJlKe+8mk1TLk1JTC5YUE5ELlpTIFtbTGlua10oaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL01TLk1JTC5YUE5ELlpTKV0KCjguICAgQXJtcyBpbXBvcnRzIChTSVBSSSB0cmVuZCBpbmRpY2F0b3IgdmFsdWVzKe+8mk1TLk1JTC5NUFJULktEIFtbTGlua10oaHR0cHM6Ly9kYXRhYmFuay53b3JsZGJhbmsub3JnL21ldGFkYXRhZ2xvc3Nhcnkvd29ybGQtZGV2ZWxvcG1lbnQtaW5kaWNhdG9ycy9zZXJpZXMvTVMuTUlMLk1QUlQuS0QpXQoKOS4gICBBcm1zIGV4cG9ydHMgKFNJUFJJIHRyZW5kIGluZGljYXRvciB2YWx1ZXMp77yaTVMuTUlMLlhQUlQuS0QgW1tMaW5rXShodHRwczovL2RhdGFiYW5rLndvcmxkYmFuay5vcmcvbWV0YWRhdGFnbG9zc2FyeS93b3JsZC1kZXZlbG9wbWVudC1pbmRpY2F0b3JzL3Nlcmllcy9NUy5NSUwuWFBSVC5LRCldCgojIOOCv+OCpOODiOODqwoKIyMg44OH44O844K/CgojIyMg44OH44O844K/5oOF5aCxCgoxLiAgIAoKMi4gICAKCi0gICAKCi0gICAqKkRlc2NyaXB0aW9uOioqIAoKLSAgICoq5qaC6KaBOioqIAoKIyMjIOODh+ODvOOCv+OBruWPluW+lwoKIyMjIyDmupblgpkKCirjgZPjgozjgb7jgafjgajjgoLlkIzjgZjjgojjgYbjgavkuozjgaTjga7jg5Hjg4PjgrHjg7zjgrjjgpLoqq3jgb/ovrzjgb/vvIhsb2Fk77yJ44G+44GZ44CCKgoKCmBgYHtyfQoKYGBgCgoq5aSJ5pWw5ZCN44KS5oyH5a6a44GX44G+44GZ44CC44Gq44KL44G544GP44KP44GL44KK44KE44GZ44GE5ZCN5YmN44Gr44GX44G+44GZ44CCKgoKKuOBk+OBruWkieaVsOWQjeOBr+OAgeS7iuW+jOS9v+OBhOOBvuOBmeOBi+OCieOAgemHjeimgeOBp+OBmeOAguS4gOW/nOOAgeS+i+OBqOOBl+OBpuOAgeOCj+OBn+OBl+OBjOS9v+OBo+OBn+OAgeWkieaVsOWQjeOCkuabuOOBhOOBpuOBguOCiuOBvuOBmeOAguS7luOBruWkieaVsOWQjeOCkuS9v+OBo+OBpuOCguani+OBhOOBvuOBm+OCk+OAgmBleHRyYSA9IFRSVUVgIOOBqOOBmeOCi+OBqOOAgeWcsOWfn+WQje+8iHJlZ2lvbu+8ieOChOOAgeWPjuWFpeODrOODmeODq++8iGluY29tZe+8ieOBquOBqeOBjOi/veWKoOOBleOCjOOBvuOBmeOAgioKCgpgYGB7ciBldmFsID0gRkFMU0V9CgoKYGBgCgoqZGF0YSDjg4fjgqPjg6zjgq/jg4jjg6rjgavmm7jjgY3ovrzjgpPjgafjgYrjgY3jgb7jgZnjgIIqCgoKYGBge3IgZXZhbCA9IEZBTFNFfQoKYGBgCgoKCmBgYHtyfQoKYGBgCgojIyMg44OH44O844K/44Gu56K66KqNCgoq44OH44O844K/5ZCN44Gn44CB5Lit6Lqr44KS6KGo56S644Gn44GN44G+44GZ44CCYGhlYWQoZGZfcmVmdWdlZSlgIOOBqOOBmeOCi+OBqOOAgTbooYzooajnpLrjgZXjgozjgb7jgZnjgIIqCgpgYGB7cn0KCmBgYAoKKuWkieaVsOOBruaDheWgseOCkuW+l+OCi+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAgioKCgpgYGB7cn0KCmBgYAoKIyMjIOWkieW9ogoKIyMjIyDlpInmlbDjga7pgbjmip7vvIhzZWxlY3RpbmfvvIkKCgpgYGB7cn0KCmBgYAoKKuODh+ODvOOCv+OBq+OBryBjb3VudHJ5IOOBruOBqOOBk+OCjeOBq+OAgeWbveOBoOOBkeOBp+OBquOBj+OAgeWcsOWfn+OCguWFpeOBo+OBpuOBhOOCi+OBruOBp+OAgeWcsOWfn+OBruODquOCueODiOOCkuOAgWBpc28yY2Ag44GnIGBSRUdJT05gIOOBq+WFpeOCjOOBpuOBiuOBjeOBvuOBmeOAgioKCmBgYApSRUdJT04gPC0gYygiMUEiLCAiMVciLCAiNEUiLCAiNkYiLCAiNk4iLCAiNlgiLCAiN0UiLCAiOFMiLCAiQTQiLCAiQTUiLCAKIkE5IiwgIkIxIiwgIkIyIiwgIkIzIiwgIkI0IiwgIkI2IiwgIkI3IiwgIkI4IiwgIkM0IiwgIkM1IiwgIkM2IiwgCiJDNyIsICJDOCIsICJDOSIsICJEMiIsICJEMyIsICJENCIsICJENSIsICJENiIsICJENyIsICJFVSIsICJGMSIsIAoiRjYiLCAiTTEiLCAiTTIiLCAiTjYiLCAiT0UiLCAiUjYiLCAiUzEiLCAiUzIiLCAiUzMiLCAiUzQiLCAiVDIiLCAKIlQzIiwgIlQ0IiwgIlQ1IiwgIlQ2IiwgIlQ3IiwgIlYxIiwgIlYyIiwgIlYzIiwgIlY0IiwgIlhDIiwgIlhEIiwgCiJYRSIsICJYRiIsICJYRyIsICJYSCIsICJYSSIsICJYSiIsICJYTCIsICJYTSIsICJYTiIsICJYTyIsICJYUCIsIAoiWFEiLCAiWFQiLCAiWFUiLCAiWFkiLCAiWjQiLCAiWjciLCAiWkIiLCAiWkYiLCAiWkciLCAiWkgiLCAiWkkiLCAKIlpKIiwgIlpRIiwgIlpUIikKYGBgCgpgYGB7cn0KCmBgYAoKKuWcsOWfn+WQjeOBq+OBr+OBqeOBruOCiOOBhuOBquOCguOBruOBjOOBguOCi+OBi+imi+OBpuOBiuOBjeOBvuOBmeOAgioKCgpgYGB7cn0KCmBgYAoKKuWbveWQjeOCguOAgeWcsOWfn++8iHJlZ2lvbu+8ieOBqOOAgeaJgOW+l+ODrOODmeODq++8iGluY29tZe+8ieOBqOWFseOBq+OAgeihqOekuuOBl+OBpuOBiuOBjeOBvuOBmeOAgioKCgpgYGB7cn0KCmBgYAoKIyMjIOWIhuaekOOBmeOCi+WbveOBruODquOCueODiAoKCmBgYHtyfQoKYGBgCgoKIyMg6KaW6Kaa5YyWCgojIyMgMS4g5ZCE5bm05q+O44Gu44OH44O844K/44Gu5pWw44Gu5qOS44Kw44Op44OVCgoq44G+44Ga44Gv44CBTkEg44Gu5YCk44KS5YmK6Zmk44GX44G+44GZ44CC44Gd44Gu44GC44Go44Gn44CB5Zu944Gu5oOF5aCx44Gu5pWw44KS5pWw44GI44Gf44GE44Gu44Gn44CBYCEoaXNvMmMgJWluJSBSRUdJT04pYCDjgafjgIHkuIrjgafjgYrjgYTjgZ/jgIHlnLDln5/jga4gaXNvMmMg44KS6YG45oqe44GX44CBISDjga/lkKblrprjgafjgZfjgZ/jgYvjgonjgIHlnLDln5/jgafjga/jgarjgYTjgoLjga7jgpLpgbjmip7jgZfjgIHjgZ3jga7mlbDjgpLmo5LjgrDjg6njg5XjgavjgZfjgabjgYTjgb7jgZnjgIIqCgoKCmBgYHtyfQoKCmBgYAoKKirmsJfjgaXjgYTjgZ/jgZPjgajjg7vnlpHllY8qKgoKLSAgCgojIyMgMi4g57WM5bm05aSJ5YyW44KS6KGo44GZ5oqY44KM57ea44Kw44Op44OVCgojIyMjIGEuIOaXpeacrOOAgeOBvuOBn+OBr+ODh+ODvOOCv+OBjOOBguOCi+WbvQoKYGBge3J9CgoKYGBgCgoKYGBge3J9CgoKYGBgCgoqKuawl+OBpeOBhOOBn+OBk+OBqOODu+eWkeWVjyoqCgotICAgCgojIyMjIGIuIOmBuOaKnuOBl+OBn+OBhOOBj+OBpOOBi+OBruWbvQoKCmBgYHtyfQoKCmBgYAoKKirmsJfjgaXjgYTjgZ/jgZPjgajjg7vnlpHllY8qKgoKLSAgIAoKCmBgYHtyfQoKCmBgYAoKKirmsJfjgaXjgYTjgZ/jgZPjgajjg7vnlpHllY8qKgoKLSAgCgojIyMgMy4g57im6ZW344Gu6KGo77yITG9uZyBUYWJsZe+8iQoKKmBjb2xzID0gYyhyZWZ1Z2VlX2FzeWx1bSwgcmVmdWdlZV9vcmlnaW4pYCDjgajjgIHkuIDjgaTjga7mjIfmqJnjgavjgb7jgajjgoHjgovjgoLjga7jgpLjg6rjgrnjg4jjgZnjgovjgajjgIFgbmFtZWAg44Gr5oyH5qiZ5ZCN44GM5YWl44KK44CBYHZhbHVlYCDjgavjgIHjgZ3jga7lgKTjgYzlhaXjgovjgILmm7jlvI/jga/jgIFgcGl2b3RfbG9uZ2VyKGNvbHMgPSAuLi4sIG5hbWVzX3RvID0gLi4uLCB2YWx1ZXNfdG8gPSAuLi4pYCDjgafjgIHliJ3mnJ/oqK3lrprjgafjga/jgIFgbmFtZXNfdG8gPSAibmFtZSIsIHZhbHVlc190byA9ICJ2YWx1ZSJgIOOBqOOBquOBo+OBpuOBhOOCi+OBruOBp+OAgeaMh+WumuOBl+OBquOBhOOBqOOAgeS4i+OBruOCiOOBhuOBq+OBquOCi+OAgkhlbHAg5Y+C54Wn44CCKgoKCmBgYHtyfQoKCmBgYAoKIyMjIyBhLiDml6XmnKzjga7opIfmlbDjga7mjIfmqJnjgpLoibLliIbjgZHjgZfjgZ/ntYzlubTlpInljJbjga7jgrDjg6njg5UgCgoqYGNvbCA9IG5hbWVgIOOBqOaMh+WumuOBmeOCi+OBqOOAgeiJsuOBp+WMuuWIpeOBl+OBpuOAgeS4gOOBpOOBruOCsOODqeODleOBq+aPj+OBkeOCiyoKCgpgYGB7cn0KCgpgYGAKCioq5rCX44Gl44GE44Gf44GT44Go44O755aR5ZWPKioKCi0gICAKCgpgYGB7cn0KCgpgYGAKCioq5rCX44Gl44GE44Gf44GT44Go44O755aR5ZWPKioKCi0gCgojIyMjIGIuIOmBuOaKnuOBl+OBn+OBhOOBj+OBpOOBi+OBruWbveOBruikh+aVsOOBruaMh+aomeOCkuiJsuWIhuOBkeOBl+OBn+e1jOW5tOWkieWMluOBruOCsOODqeODlSAKCgpgYGB7cn0KCgpgYGAKCioq5rCX44Gl44GE44Gf44GT44Go44O755aR5ZWPKioKCi0gICAKCgojIyMgNC4g44OS44K544OI44Kw44Op44OgCgrjgZ3jgozjgZ7jgozjga7jg4fjg7zjgr/jgYzljYHliIbjgYLjgovmnIDov5Hjga7lubTjga7lgKTjga7jg5Ljgrnjg4jjgrDjg6njg6DvvIjluqbmlbDliIbluIPvvIkKCl/liIbjgZHmlrnjga7mlbAgYmlucyDjgoTjgIHluYUgYmlud2lkdGgg44KS6YGp5YiH44Gr5aSJ5pu0XwoKIyMjIyDkuIDjgaTnm67jga7mjIfmqJkKCl/lv4XopoHjgavlv5zjgZjjgabjgIFsb2cxMCDjgrnjgrHjg7zjg6vvvIhzY2FsZV94X2xvZzEwKCnvvInjgpLkvb/jgYbjgIJfCgoKYGBge3J9CgpgYGAKCgpgYGB7cn0KCgpgYGAKCiMjIyMg5LqM44Gk55uu44Gu5oyH5qiZCgoKYGBge3J9CgoKYGBgCgoKYGBge3J9CgoKYGBgCgoqKuawl+OBpeOBhOOBn+OBk+OBqOODu+eWkeWVj+eCuSoqCgotIAoKIyMjIDUuIOajkuOCsOODqeODlQoK44OH44O844K/44GM5Y2B5YiG44GC44KL5pyA6L+R44Gu5bm044Gu5YCk44GuMTDjgqvlm73jga7lgKTjga7mo5LjgrDjg6njg5UKCiMjIyMgYS4gIOS4gOOBpOebruOBruaMh+aome+8muWApOOBjOWkp+OBjeOBhOaWueOBi+OCiQoKCmBgYHtyfQoKYGBgCgoKIyMjIyBiLiAg5LiA44Gk55uu44Gu5oyH5qiZ77ya5YCk44GM5bCP44GV44GE5pa544GL44KJCgoKYGBge3J9CgoKYGBgCgojIyMjIGEuICDkuozjgaTnm67jga7mjIfmqJnvvJrlgKTjgYzlpKfjgY3jgYTmlrnjgYvjgokKCgpgYGB7cn0KCmBgYAoKIyMjIyBiLiAg5LqM44Gk55uu44Gu5oyH5qiZ77ya5YCk44GM5bCP44GV44GE5pa544GL44KJCgoKYGBge3J9CgpgYGAKCiMjIyA2LiDmlaPluIPlm7MKCl/lv4XopoHjgavlv5zjgZjjgabjgIFMT0cxMCAoc2NhbGVfeF9sb2cxMCgpLCBzY2FsZV95X2xvZzEwKCkpIOOCueOCseODvOODq+OCkuS9v+OBhuOAgl8KCiMjIyMgYS7vvIjlnLDln5/jgpLpmaTjgY3vvInlm73jga7jgb/jga7mlaPluIPlm7MgCgoKYGBge3J9CgoKYGBgCgoqKuawl+OBpeOBhOOBn+OBk+OBqOODu+eWkeWVjyoqCgotICAgCgojIyMjIOi/keS8vO+8iOWbnuW4sO+8ieebtOe3muOBruihqOekugoKCgpgYGB7cn0KCgpgYGAKCioq5rCX44Gl44GE44Gf44GT44Go44O755aR5ZWPKioKCi0gICAKCiMjIyMgYi4g5pyA6L+R44Gu5bm044Gu77yI5Zyw5Z+f44KS6Zmk44GN77yJ5Zu944Gu44G/44Gu5pWj5biD5ZuzCgoKYGBge3J9CgoKYGBgCgoqKuawl+OBpeOBhOOBn+OBk+OBqOODu+eWkeWVjyoqCgotICAgCgojIyMjIOi/keS8vO+8iOWbnuW4sO+8ieebtOe3muOBruihqOekugoKCmBgYHtyfQoKCmBgYAoKKirmsJfjgaXjgYTjgZ/jgZPjgajjg7vnlpHllY8qKgoKLSAgIAoKIyMjIyBjLiDnm7jplqLkv4LmlbAKCmBgYHtyfQoKYGBgCgoqKuawl+OBpeOBhOOBn+OBk+OBqOODu+eWkeWVjyoqCgotICAgCgoKIyMjIDcuIOeuseODkuOCsuWbs++8iEJveHBsb3TvvIkKCuW/heimgeaZguW/nOOBmOOBpuOAgeODreOCsOOCueOCseODvOODq++8iHNjYWxlX3lfbG9nMTAoKe+8iQoKCmBgYHtyfQoKYGBgCgoqKuawl+OBpeOBhOOBn+OBk+OBqOODu+eWkeWVjyoqCgotICAgCgoKYGBge3J9CgpgYGAKCioq5rCX44Gl44GE44Gf44GT44Go44O755aR5ZWPKioKCi0gICAKCgpgYGB7cn0KCgpgYGAKCioq5rCX44Gl44GE44Gf44GT44Go44O755aR5ZWPKioKCi0gICAKYAoKCmBgYHtyfQoKYGBgCgoqKuawl+OBpeOBhOOBn+OBk+OBqOODu+eWkeWVjyoqCgotICAgCgoKCmBgYHtyfQoKCmBgYAoKKirmsJfjgaXjgYTjgZ/jgZPjgajjg7vnlpHllY8qKgoKLSAgIAo=