Turisme


Krydstogter
TUXKRH_raw <- 
  statgl_url("TUXKRH", lang = language) %>% 
  statgl_fetch(
    month     = px_all(),
    port      = px_all(),
    time      = px_top(),
    .col_code = TRUE
  ) %>% 
  as_tibble()

# Skal have ændret time i fetch og sys.time filter tilbage når der kommer nye tal for 2022 også i de næste 2 tabeller

TUXKRH <- 
  TUXKRH_raw %>% 
  #filter(time <= Sys.time() %>% year() - 3) %>% 
  drop_na() %>%
  mutate(
    month = month %>% fct_inorder(),
    port = port %>% fct_reorder(value, .fun = sum, .na_rm = TRUE, .desc = TRUE)
  ) %>% 
  spread(month, value) %>% 
  mutate_if(is.integer, ~ replace(., is.na(.), 0))

TUXKRH %>% 
  select(-time) %>% 
  rename(" " = 1) %>% 
  statgl_table(replace_0s = TRUE) %>% 
  pack_rows(index = TUXKRH[["time"]] %>% table()) %>% 
  row_spec(1, bold = TRUE) |> 
  column_spec(2, bold = T)
Total April Maj Juni Juli August September Oktober
2024
I alt 181.406 152 420 4.607 32.478 107.604 35.577 568
Qaqortoq 46.630 0 104 0 1.283 36.744 8.499 0
Nuuk 37.242 0 0 727 17.546 12.678 6.100 191
Nanortalik 28.937 0 0 0 2.354 20.310 6.273 0
Sisimiut 14.842 0 0 692 2.306 8.964 2.880 0
Ilulissat 14.165 0 0 388 2.326 8.558 2.893 0
Kangerlussuaq 7.109 0 0 0 1.057 4.067 1.985 0
Ittoqqortoormiit 6.633 0 196 133 1.025 2.902 2.186 191
Qeqertarsuaq 5.254 0 0 12 806 3.647 789 0
Paamiut 5.196 0 0 1.931 1.371 1.894 0 0
Narsaq 3.299 0 0 11 124 1.933 1.231 0
Uummannaq 3.150 0 0 0 725 1.877 548 0
Narsarsuaq 2.624 0 0 11 884 1.423 131 175
Maniitsoq 2.028 0 0 691 429 392 516 0
Upernavik 1.207 0 0 0 216 533 458 0
Tasiilaq 934 152 120 0 0 211 440 11
Qaanaaq 652 0 0 0 0 203 449 0
Aasiaat 516 0 0 0 19 497 0 0
Qasigiannguit 497 0 0 0 0 497 0 0
Qassiarsuk 133 0 0 0 0 133 0 0


Se Statistikbankens tabel: TUXKRH

TUXKRL_raw <- 
  statgl_url("TUXKRP", lang = language) %>% 
  statgl_fetch(
    month     = px_all(),
    time      = px_top(5),
    .col_code = TRUE
  ) %>% 
  as_tibble()

TUXKRL_raw %>% 
  mutate(
    month = month %>% fct_inorder(),
    time = time %>% fct_inorder() %>% fct_rev()
  ) %>% 
  drop_na() %>% 
  arrange(time, month) %>% 
  spread(time, value) %>% 
  mutate_if(is.integer, ~ replace(., is.na(.), 0)) %>% 
  rename(" " = 1) %>% 
  statgl_table(replace_0s = TRUE) %>% 
  row_spec(1, bold = TRUE)
2024 2023 2022
Total 95.185 76.477 43.999
April 152 19 9
Maj 420 557 252
Juni 3.160 4.066 1.403
Juli 23.043 21.627 12.496
August 52.606 38.469 22.012
September 15.427 11.739 7.827
Oktober 377 0 0


Se Statistikbankens tabel: TUXKRP

Flypassagerer
TUXUPAX_raw <- 
  statgl_url("TUXUPAX", lang = language) %>% 
  statgl_fetch(
    time      = px_top(2),
    month     = px_all(),
    airport   = px_all(),
    .col_code = TRUE
  ) %>% 
  as_tibble()

TUXUPAX <- 
  TUXUPAX_raw %>% 
  filter(time < Sys.time() %>% year()) %>% 
  mutate(
    month = month %>% fct_inorder(),
    airport = airport %>% fct_reorder(value, .fun = sum, .na_rm = TRUE, .desc = TRUE)
    ) %>% 
  spread(airport, value) %>% 
  mutate_if(is.integer, ~ replace(., is.na(.), 0))


TUXUPAX %>% 
  select(-time) %>% 
  rename(" " = 1) %>% 
  statgl_table(replace_0s = TRUE) %>% 
  pack_rows(index = TUXUPAX[["time"]] %>% table()) %>% 
  row_spec(1, bold = T) |> 
  column_spec(2, bold = T)
I alt Kangerlussuaq Nuuk Narsarsuaq Kulusuk Ilulissat Nerlerit inaat
2024
I alt 96.817 69.447 11.306 5.997 5.359 3.816 892
I alt 0 0 0 0 0 0 0
Januar 4.256 3.849 265 74 40 0 28
Januar 4.847 327 4.454 0 0 0 66
Februar 4.254 3.819 298 0 27 67 43
Februar 4.144 0 4.082 0 0 29 33
Marts 7.042 5.700 516 193 397 166 70
Marts 6.358 347 5.490 0 237 222 62
April 6.803 5.851 298 278 297 17 62
April 8.239 754 7.219 0 190 0 76
Maj 6.858 5.592 465 496 229 0 76
Maj 7.776 653 6.833 53 196 0 41
Juni 9.867 7.376 672 719 624 404 72
2025
Juni 12.394 1.051 9.588 464 365 862 64
Juli 16.037 11.073 871 1.531 1.256 1.212 94
Juli 20.241 1.190 15.428 1.584 981 946 112
August 14.665 9.400 426 1.691 1.564 1.438 146
August 18.177 1.827 12.385 1.342 1.389 1.079 155
September 9.481 7.044 128 954 682 512 161
September 12.947 1.248 9.924 890 642 104 139
Oktober 7.056 6.383 457 0 162 0 54
Oktober 7.994 782 7.167 0 0 0 45
November 4.616 3.360 1.146 0 61 0 49
November 0 0 0 0 0 0 0
December 5.882 0 5.764 61 20 0 37
December 0 0 0 0 0 0 0


Se Statistikbankens tabel: TUXUPAX

Hotelovernatninger
TUXKAP_raw <- 
  statgl_url("TUXKAP", lang = language) %>% 
  statgl_fetch(
    unit      = c(2),
    month     = px_all(),
    region    = px_all(),
    time      = px_top(2),
    .col_code = TRUE
  ) %>% 
  as_tibble()


TUXKAP <- 
  TUXKAP_raw %>% 
  filter(time <= Sys.time() %>% year() -1) %>% 
  mutate(
    month = month %>% fct_inorder(),
    region = region %>% fct_inorder()
  ) %>% 
  spread(month, value) %>% 
  unite(combi, unit, time, sep = ", ")

TUXKAP %>% 
  select(-combi) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = TUXKAP[["combi"]] %>% table()) %>% 
  row_spec(1, bold = T) |> 
  column_spec(2, bold = T)
I alt Januar Februar Marts April Maj Juni Juli August September Oktober November December
Belægningsprocent, 2024
I alt 46,0 28,1 38,0 50,7 45,5 45,4 49,3 59,3 64,7 56,1 48,5 37,4 24,7
I alt NA 34,4 43,5 53,5 48,3 47,7 58,1 69,7 72,6 62,1 NA NA NA
Avannaata Kommunia og Kommune Qeqertalik 47,1 21,6 32,2 57,2 37,2 47,9 44,1 76,6 82,3 57,3 45,8 32,5 19,9
Avannaata Kommunia og Kommune Qeqertalik NA 23,3 47,9 62,3 49,3 47,0 63,6 87,4 86,8 60,4 NA NA NA
Ilulissat (*) 48,6 20,3 33,9 60,5 38,9 50,9 43,2 79,7 82,4 59,5 48,6 32,3 21,1
Ilulissat (*) NA 23,6 48,0 65,3 51,7 50,2 67,6 94,2 93,4 64,9 NA NA NA
Qeqqata Kommunia 46,4 19,5 41,5 52,3 48,0 51,4 61,3 58,1 68,9 60,5 50,9 31,5 11,7
Belægningsprocent, 2025
Qeqqata Kommunia NA 14,2 21,8 33,2 34,9 37,3 41,9 45,2 53,2 50,0 NA NA NA
Kommune Kujalleq 36,4 36,0 26,5 27,4 32,5 26,2 43,0 54,5 51,4 39,7 33,5 24,6 30,3
Kommune Kujalleq NA 47,7 36,2 29,1 30,6 29,3 36,5 50,9 51,9 45,9 NA NA NA
Kommuneqarfik Sermersooq Vest 51,7 39,1 52,0 56,7 58,3 54,8 51,9 43,4 52,4 63,0 58,7 55,1 35,8
Kommuneqarfik Sermersooq Vest NA 51,4 61,2 71,3 64,5 67,6 77,3 75,7 79,9 79,2 NA NA NA
Kommuneqarfik Sermersooq Øst 41,7 12,5 24,0 51,4 47,4 35,4 49,2 70,6 71,7 57,9 44,9 21,7 11,6
Kommuneqarfik Sermersooq Øst NA 11,7 14,4 46,1 44,1 34,4 43,8 74,4 77,7 57,1 NA NA NA


Se Statistikbankens tabel: TUXKAP

Slædehunde
TUX01_raw <- 
  statgl_url("TUX01", lang = language) %>%
  statgl_fetch(
    district  = px_all(),
    time      = px_top(5),
    .col_code = TRUE
  ) %>% 
  as_tibble()

TUX01_raw %>% 
  arrange(desc(time)) %>% 
  mutate(time = time %>% fct_inorder()) %>% 
  spread(time, value) %>% 
  arrange(desc(`2019`)) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  row_spec(1, bold = TRUE)
2022 2021 2020 2019 2018
I alt 13.123 13.395 13.417 13.315 14.130
Upernavik 2.501 2.478 2.719 3.058 2.954
Ilulissat 2.974 3.096 3.108 2.690 2.933
Uummannaq 1.863 1.863 1.751 1.811 2.633
Sisimiut 1.321 1.252 1.153 1.129 1.067
Qaanaaq 983 1.163 1.163 1.071 1.053
Tasiilaq 942 1.045 924 1.028 1.012
Qasigiannguit 806 943 810 809 756
Aasiaat 602 417 635 656 656
Kangaatsiaq 576 593 625 550 550
Qeqertarsuaq 375 365 349 319 327
Ittoqqortoormiit 180 180 180 194 189


Se Statistikbankens tabel: TUX01


Sidst opdateret: 15. januar 2026
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KCWVjaG8gICAgPSBUUlVFLA0KCW1lc3NhZ2UgPSBUUlVFLA0KCXdhcm5pbmcgPSBGQUxTRQ0KKQ0KDQpsaWJyYXJ5KCJ0aWR5dmVyc2UiKQ0KbGlicmFyeSgic3RhdGdsIikNCmxpYnJhcnkoImthYmxlRXh0cmEiKQ0KbGlicmFyeSgibHVicmlkYXRlIikNCmxpYnJhcnkoInlhbWwiKQ0KDQpsYW5ndWFnZSAgPC0gcGFyYW1zJGxhbmcNCm9wdGlvbiAgICA8LSBwYXN0ZTAoIj9sYW5nPSIsIGxhbmd1YWdlLCAiJnNlbGVjdCIpDQpsb2dvICAgICAgPC0gcGFzdGUwKGdldHdkKCksIi9hZGQvbG9nby5naWYiKQ0KdHh0ICAgICAgIDwtIHJlYWRfeWFtbChwYXN0ZTAoZ2V0d2QoKSwgIi9hZGQvdHh0LnltbCIpLCBmaWxlRW5jb2RpbmcgPSAiSVNPLTg4NTktMSIpDQpzb3VyY2UgICAgPC0gdHh0JHNvdXJjZVtsYW5ndWFnZV0gJT4lIHVubGlzdCgpDQpgYGANCg0KYGBge2NzcywgZWNobyA9IEZBTFNFfQ0KDQouYWNjb3JkaW9uIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzkxOTkwMDsNCiAgY29sb3I6IHdoaXRlOw0KICBjdXJzb3I6IHBvaW50ZXI7DQogIHBhZGRpbmc6IDE4cHg7DQogIHdpZHRoOiAxMDAlOw0KICBib3JkZXI6IG5vbmU7DQogIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgdGV4dC1hbGlnbjogbGVmdDsNCiAgb3V0bGluZTogbm9uZTsNCiAgZm9udC1zaXplOiAxNXB4Ow0KICB0cmFuc2l0aW9uOiAwLjRzOw0KfQ0KDQouYWN0aXZlLCAuYWNjb3JkaW9uOmhvdmVyIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5NzI0MjsNCn0NCg0KLmFjY29yZGlvbjphZnRlciB7DQogIGNvbnRlbnQ6ICdcMDAyQic7DQogIGNvbG9yOiAjNzc3Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZmxvYXQ6IHJpZ2h0Ow0KICBtYXJnaW4tbGVmdDogNXB4Ow0KfQ0KDQouYWN0aXZlOmFmdGVyIHsNCiAgY29udGVudDogIlwyMjEyIjsNCn0NCg0KLnBhbmVsIHsNCiAgcGFkZGluZzogMHB4IDVweCAwcHggNXB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsNCiAgbWF4LWhlaWdodDogMDsNCiAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjJzIGVhc2Utb3V0Ow0KfQ0KDQpkZXRhaWxzIHsNCiAgd2lkdGg6IDEwMCU7DQp9DQoNCmRldGFpbHMgPiBzdW1tYXJ5IHsNCiAgcGFkZGluZzogNHB4IDEycHg7DQogIHdpZHRoOiAxMDAlOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3Zjk5Ow0KICBib3JkZXI6IHNvbGlkOw0KICBib3JkZXItY29sb3I6IHdoaXRlOw0KICBib3JkZXItcmFkaXVzOiA1cHg7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgZm9udC1zaXplOiAxNXB4Ow0KICBjb2xvcjogd2hpdGU7DQp9DQoNCmRldGFpbHNbb3Blbl0gPiBzdW1tYXJ5IHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhYTQxYTsNCn0NCg0KDQoudGl0bGUgew0KICBjb2xvcjogIzFiNTQ2MzsNCiAgZm9udC1zaXplOiAzNnB4Ow0KfQ0KDQoNCi5wZXJzb25lciB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjMDA0NDU5Ow0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAwLjFweDsNCiAgcGFkZGluZy1ib3R0b206IDFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi7DuGtvbm9taSB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjMDA3Rjk5Ow0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAxcHg7DQogIHBhZGRpbmctYm90dG9tOiAwLjFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi50dsOmcmfDpWVuZGUgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogI2ZhYTQxYTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMC4xcHg7DQogIHBhZGRpbmctYm90dG9tOiAxcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQouY29udGFpbmVyIHsNCiAgd2lkdGg6IGluaGVyaXQ7DQp9DQoNCg0KDQpgYGANCg0KYGBge3IgeGFyaW5nYW5FeHRyYS1jbGlwYm9hcmQsIGVjaG89RkFMU0V9DQp4YXJpbmdhbkV4dHJhOjp1c2VfY2xpcGJvYXJkKCkNCmBgYA0KDQoNCjxicj4NCjxicj4NCg0KPGNlbnRlcj4NCg0KLS0tDQogDQojIFtgciB0eHQkVFUkdGl0bGVbbGFuZ3VhZ2VdYF17LnRpdGxlfQ0KIA0KLS0tDQo8L2NlbnRlcj4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVFUkc3ViMVtsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMTogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJUVVhLUkgiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KYGBge3IsIGNsYXNzLnNvdXJjZT0na2xpcHB5J30NCg0KVFVYS1JIX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVFVYS1JIIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICBtb250aCAgICAgPSBweF9hbGwoKSwNCiAgICBwb3J0ICAgICAgPSBweF9hbGwoKSwNCiAgICB0aW1lICAgICAgPSBweF90b3AoKSwNCiAgICAuY29sX2NvZGUgPSBUUlVFDQogICkgJT4lIA0KICBhc190aWJibGUoKQ0KDQojIFNrYWwgaGF2ZSDDpm5kcmV0IHRpbWUgaSBmZXRjaCBvZyBzeXMudGltZSBmaWx0ZXIgdGlsYmFnZSBuw6VyIGRlciBrb21tZXIgbnllIHRhbCBmb3IgMjAyMiBvZ3PDpSBpIGRlIG7DpnN0ZSAyIHRhYmVsbGVyDQoNClRVWEtSSCA8LSANCiAgVFVYS1JIX3JhdyAlPiUgDQogICNmaWx0ZXIodGltZSA8PSBTeXMudGltZSgpICU+JSB5ZWFyKCkgLSAzKSAlPiUgDQogIGRyb3BfbmEoKSAlPiUNCiAgbXV0YXRlKA0KICAgIG1vbnRoID0gbW9udGggJT4lIGZjdF9pbm9yZGVyKCksDQogICAgcG9ydCA9IHBvcnQgJT4lIGZjdF9yZW9yZGVyKHZhbHVlLCAuZnVuID0gc3VtLCAubmFfcm0gPSBUUlVFLCAuZGVzYyA9IFRSVUUpDQogICkgJT4lIA0KICBzcHJlYWQobW9udGgsIHZhbHVlKSAlPiUgDQogIG11dGF0ZV9pZihpcy5pbnRlZ2VyLCB+IHJlcGxhY2UoLiwgaXMubmEoLiksIDApKQ0KDQpUVVhLUkggJT4lIA0KICBzZWxlY3QoLXRpbWUpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKHJlcGxhY2VfMHMgPSBUUlVFKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IFRVWEtSSFtbInRpbWUiXV0gJT4lIHRhYmxlKCkpICU+JSANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFRSVUUpIHw+IA0KICBjb2x1bW5fc3BlYygyLCBib2xkID0gVCkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJUVVhLUkgiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxL2I0ZTdkNGZiLWQ5MjctNDFhMS1hMjM3LTA1ZWY5ODU4YTBjOSIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQoNCg0KDQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMjogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJUVVhLUlAiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBUVVhLUlB9DQoNClRVWEtSTF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlRVWEtSUCIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAgbW9udGggICAgID0gcHhfYWxsKCksDQogICAgdGltZSAgICAgID0gcHhfdG9wKDUpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNClRVWEtSTF9yYXcgJT4lIA0KICBtdXRhdGUoDQogICAgbW9udGggPSBtb250aCAlPiUgZmN0X2lub3JkZXIoKSwNCiAgICB0aW1lID0gdGltZSAlPiUgZmN0X2lub3JkZXIoKSAlPiUgZmN0X3JldigpDQogICkgJT4lIA0KICBkcm9wX25hKCkgJT4lIA0KICBhcnJhbmdlKHRpbWUsIG1vbnRoKSAlPiUgDQogIHNwcmVhZCh0aW1lLCB2YWx1ZSkgJT4lIA0KICBtdXRhdGVfaWYoaXMuaW50ZWdlciwgfiByZXBsYWNlKC4sIGlzLm5hKC4pLCAwKSkgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUocmVwbGFjZV8wcyA9IFRSVUUpICU+JSANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFRSVUUpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYS1JQIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS8wN2NiMTE0NS0zZDA0LTRjMDAtYjU5ZS1jMDQ4NTg1OWE4NTkiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KPC9kZXRhaWxzPg0KDQo8ZGV0YWlscz4gPHN1bW1hcnk+IGByIHR4dCRUVSRzdWIyW2xhbmd1YWdlXWAgPC9zdW1tYXJ5Pg0KPGJyPg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDM6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVFVYVVBBWCIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIFRVWFVQQVh9DQoNClRVWFVQQVhfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJUVVhVUEFYIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICB0aW1lICAgICAgPSBweF90b3AoMiksDQogICAgbW9udGggICAgID0gcHhfYWxsKCksDQogICAgYWlycG9ydCAgID0gcHhfYWxsKCksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KVFVYVVBBWCA8LSANCiAgVFVYVVBBWF9yYXcgJT4lIA0KICBmaWx0ZXIodGltZSA8IFN5cy50aW1lKCkgJT4lIHllYXIoKSkgJT4lIA0KICBtdXRhdGUoDQogICAgbW9udGggPSBtb250aCAlPiUgZmN0X2lub3JkZXIoKSwNCiAgICBhaXJwb3J0ID0gYWlycG9ydCAlPiUgZmN0X3Jlb3JkZXIodmFsdWUsIC5mdW4gPSBzdW0sIC5uYV9ybSA9IFRSVUUsIC5kZXNjID0gVFJVRSkNCiAgICApICU+JSANCiAgc3ByZWFkKGFpcnBvcnQsIHZhbHVlKSAlPiUgDQogIG11dGF0ZV9pZihpcy5pbnRlZ2VyLCB+IHJlcGxhY2UoLiwgaXMubmEoLiksIDApKQ0KDQoNClRVWFVQQVggJT4lIA0KICBzZWxlY3QoLXRpbWUpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKHJlcGxhY2VfMHMgPSBUUlVFKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IFRVWFVQQVhbWyJ0aW1lIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUKSB8PiANCiAgY29sdW1uX3NwZWMoMiwgYm9sZCA9IFQpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYVVBBWCIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvMGFiMTRkN2QtM2NkMS00NmJkLWE2ZmItZWM4Y2NhYjhkNjdiIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVFUkc3ViM1tsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgNDogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJUVVhLQVAiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBUVVhLQVB9DQoNClRVWEtBUF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlRVWEtBUCIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAgdW5pdCAgICAgID0gYygyKSwNCiAgICBtb250aCAgICAgPSBweF9hbGwoKSwNCiAgICByZWdpb24gICAgPSBweF9hbGwoKSwNCiAgICB0aW1lICAgICAgPSBweF90b3AoMiksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KDQpUVVhLQVAgPC0gDQogIFRVWEtBUF9yYXcgJT4lIA0KICBmaWx0ZXIodGltZSA8PSBTeXMudGltZSgpICU+JSB5ZWFyKCkgLTEpICU+JSANCiAgbXV0YXRlKA0KICAgIG1vbnRoID0gbW9udGggJT4lIGZjdF9pbm9yZGVyKCksDQogICAgcmVnaW9uID0gcmVnaW9uICU+JSBmY3RfaW5vcmRlcigpDQogICkgJT4lIA0KICBzcHJlYWQobW9udGgsIHZhbHVlKSAlPiUgDQogIHVuaXRlKGNvbWJpLCB1bml0LCB0aW1lLCBzZXAgPSAiLCAiKQ0KDQpUVVhLQVAgJT4lIA0KICBzZWxlY3QoLWNvbWJpKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcGFja19yb3dzKGluZGV4ID0gVFVYS0FQW1siY29tYmkiXV0gJT4lIHRhYmxlKCkpICU+JSANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFQpIHw+IA0KICBjb2x1bW5fc3BlYygyLCBib2xkID0gVCkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJUVVhLQVAiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzQ4OGFhY2ZiLTc5ZTktNDU2ZC04ODg5LWQ4MjA2YTQ4NGNiZCIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQo8L2RldGFpbHM+IA0KDQo8ZGV0YWlscz4gPHN1bW1hcnk+IGByIHR4dCRUVSRzdWI0W2xhbmd1YWdlXWAgPC9zdW1tYXJ5Pg0KPGJyPg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDU6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVFVYMDEiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBUVVgwMX0NCg0KVFVYMDFfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJUVVgwMSIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lDQogIHN0YXRnbF9mZXRjaCgNCiAgICBkaXN0cmljdCAgPSBweF9hbGwoKSwNCiAgICB0aW1lICAgICAgPSBweF90b3AoNSksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KVFVYMDFfcmF3ICU+JSANCiAgYXJyYW5nZShkZXNjKHRpbWUpKSAlPiUgDQogIG11dGF0ZSh0aW1lID0gdGltZSAlPiUgZmN0X2lub3JkZXIoKSkgJT4lIA0KICBzcHJlYWQodGltZSwgdmFsdWUpICU+JSANCiAgYXJyYW5nZShkZXNjKGAyMDE5YCkpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKCkgJT4lIA0KICByb3dfc3BlYygxLCBib2xkID0gVFJVRSkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJUVVgwMSIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvYmZlOGY5ZGUtYWUxOC00ZjUyLWJjN2ItZDQ4MDkxMzAxOTQxIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4NCg0KPGhyIHN0eWxlPSJib3JkZXI6MXB4IHJpZGdlIGxpZ2h0Z3JheSI+IDwvaHI+DQo8Y2VudGVyPiANCjxzcGFuIHN0eWxlPSdjb2xvcjojRDNEM0QzOyBmb250LXNpemU6OTAlOyc+IGByIHBhc3RlKHR4dCR1cGRhdGVbbGFuZ3VhZ2VdLCBmb3JtYXQoU3lzLkRhdGUoKSwgIiVkLiAlQiAlWSIpKWAgPC9zcGFuPiANCjwvY2VudGVyPg0KDQoNCjxzY3JpcHQ+DQp2YXIgYWNjID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiYWNjb3JkaW9uIik7DQp2YXIgaTsNCg0KZm9yIChpID0gMDsgaSA8IGFjYy5sZW5ndGg7IGkrKykgew0KICBhY2NbaV0uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsNCiAgICB0aGlzLmNsYXNzTGlzdC50b2dnbGUoImFjdGl2ZSIpOw0KICAgIHZhciBwYW5lbCA9IHRoaXMubmV4dEVsZW1lbnRTaWJsaW5nOw0KICAgIGlmIChwYW5lbC5zdHlsZS5tYXhIZWlnaHQpIHsNCiAgICAgIHBhbmVsLnN0eWxlLm1heEhlaWdodCA9IG51bGw7DQogICAgfSBlbHNlIHsNCiAgICAgIHBhbmVsLnN0eWxlLm1heEhlaWdodCA9IHBhbmVsLnNjcm9sbEhlaWdodCArICJweCI7DQogICAgfSANCiAgfSk7DQp9DQo8L3NjcmlwdD4NCg0KDQo=