Turisme


Krydstogter
TUXKRH_raw <- 
  statgl_url("TUXKRH", lang = language) %>% 
  statgl_fetch(
    month     = px_all(),
    port      = px_all(),
    time      = px_top(3),
    .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) %>% 
  mutate(
    month = month %>% fct_inorder(),
    port = port %>% fct_reorder(value, .fun = sum, na.rm = TRUE, .desc = TRUE)
  ) %>% 
  drop_na() %>%
  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 Maj Juni Juli August September Oktober
2019
I alt 122.314 124 101 25.681 74.437 21.907 64
Qaqortoq 28.214 - - 3.816 16.700 7.698 -
Nuuk 18.172 - 25 3.480 11.164 3.503 -
Ilulissat 14.762 - 51 2.035 10.391 2.285 -
Nanortalik 11.666 - - 1.600 9.145 921 -
Sisimiut 11.629 25 - 3.729 6.662 1.213 -
Kangerlussuaq 7.953 58 3 1.844 4.901 1.147 -
Paamiut 5.853 - - 464 3.984 1.405 -
Qeqertarsuaq 4.895 6 22 2.103 2.559 205 -
Tasiilaq 3.099 - - 1.473 1.626 - -
Narsarsuaq 2.968 - - 1.243 1.433 292 -
Ittoqqortoormiit 2.860 - - - 1.048 1.748 64
Uummannaq 2.717 - - 1.317 1.264 136 -
Narsaq 2.705 - - 552 1.393 760 -
Maniitsoq 1.736 28 - 768 940 - -
Qaanaaq 795 - - - 662 133 -
Qassiarsuk 630 - - - 169 461 -
Upernavik 595 - - 364 231 - -
Aasiaat 536 7 - 364 165 - -
Qasigiannguit 529 - - 529 - - -


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)
2019 2018 2017
Total 46.633 45.739 38.182
Maj 89 156 185
Juni 76 1.768 463
Juli 7.497 9.620 7.708
August 26.236 17.269 14.820
September 12.671 15.990 14.958
Oktober 64 936 48


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(month, 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 Januar Februar Marts April Maj Juni Juli August September Oktober November December
2022
I alt 85.484 2.865 3.252 5.322 6.022 6.085 9.316 14.543 12.835 9.321 6.355 4.374 5.194
Kangerlussuaq 69.036 2.677 3.079 4.777 5.471 5.224 6.970 10.898 8.612 7.077 5.689 3.902 4.660
Nuuk 5.263 116 118 250 316 482 601 490 808 848 565 318 351
Narsarsuaq 4.374 - - - - - 777 1.512 1.505 468 - - 112
Kulusuk 4.256 39 34 157 195 287 501 1.083 1.232 514 60 106 48
Ilulissat 1.748 - - 80 - 27 402 461 486 292 - - -
Nerlerit inaat 807 33 21 58 40 65 65 99 192 122 41 48 23


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(),
    .col_code = TRUE
  ) %>% 
  as_tibble()


TUXKAP <- 
  TUXKAP_raw %>% 
  filter(time < Sys.time() %>% year()) %>% 
  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, 2022
I alt 47,6 25,5 34,5 47,7 44,4 49,6 52,2 57,2 64,1 65,8 54,1 42,8 25,5
Avannaata Kommunia og Kommune Qeqertalik 57,2 22,4 36,1 52,8 54,6 60,3 67,6 84,6 81,7 76,3 63,4 42,2 28,9
Ilulissat (*) 57,5 20,7 34,7 56,5 55,5 64,0 65,8 89,4 79,2 72,7 63,7 36,0 31,8
Qeqqata Kommunia 49,3 26,1 37,4 59,3 52,9 54,6 56,2 60,3 66,0 64,1 52,6 38,0 22,9
Kommune Kujalleq 27,9 21,7 19,8 23,2 19,7 17,4 30,2 37,3 39,9 32,5 27,5 28,5 22,6
Kommuneqarfik Sermersooq Vest 54,5 32,2 46,0 54,6 48,3 61,9 57,5 45,9 64,0 88,1 70,7 58,9 26,7
Kommuneqarfik Sermersooq Øst 35,0 17,3 13,1 34,8 34,7 33,6 39,3 56,3 72,3 53,8 21,7 18,0 21,7


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: 27. marts 2023
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGFuY2hvcl9zZWN0aW9uczogZmFsc2UNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQplZGl0b3Jfb3B0aW9uczogDQogIGNodW5rX291dHB1dF90eXBlOiBjb25zb2xlDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQoNCmtuaXRyOjpvcHRzX2NodW5rJHNldCgNCgllY2hvICAgID0gVFJVRSwNCgltZXNzYWdlID0gVFJVRSwNCgl3YXJuaW5nID0gRkFMU0UNCikNCg0KbGlicmFyeSgidGlkeXZlcnNlIikNCmxpYnJhcnkoInN0YXRnbCIpDQpsaWJyYXJ5KCJrYWJsZUV4dHJhIikNCmxpYnJhcnkoImx1YnJpZGF0ZSIpDQpsaWJyYXJ5KCJ5YW1sIikNCg0KbGFuZ3VhZ2UgIDwtIHBhcmFtcyRsYW5nDQpvcHRpb24gICAgPC0gcGFzdGUwKCI/bGFuZz0iLCBsYW5ndWFnZSwgIiZzZWxlY3QiKQ0KbG9nbyAgICAgIDwtIHBhc3RlMChnZXR3ZCgpLCIvYWRkL2xvZ28uZ2lmIikNCnR4dCAgICAgICA8LSByZWFkX3lhbWwocGFzdGUwKGdldHdkKCksICIvYWRkL3R4dC55bWwiKSwgZmlsZUVuY29kaW5nID0gIklTTy04ODU5LTEiKQ0Kc291cmNlICAgIDwtIHR4dCRzb3VyY2VbbGFuZ3VhZ2VdICU+JSB1bmxpc3QoKQ0KYGBgDQoNCmBgYHtjc3MsIGVjaG8gPSBGQUxTRX0NCg0KLmFjY29yZGlvbiB7DQogIGJhY2tncm91bmQtY29sb3I6ICM5MTk5MDA7DQogIGNvbG9yOiB3aGl0ZTsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBwYWRkaW5nOiAxOHB4Ow0KICB3aWR0aDogMTAwJTsNCiAgYm9yZGVyOiBub25lOw0KICBib3JkZXItcmFkaXVzOiA1cHg7DQogIHRleHQtYWxpZ246IGxlZnQ7DQogIG91dGxpbmU6IG5vbmU7DQogIGZvbnQtc2l6ZTogMTVweDsNCiAgdHJhbnNpdGlvbjogMC40czsNCn0NCg0KLmFjdGl2ZSwgLmFjY29yZGlvbjpob3ZlciB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmOTcyNDI7DQp9DQoNCi5hY2NvcmRpb246YWZ0ZXIgew0KICBjb250ZW50OiAnXDAwMkInOw0KICBjb2xvcjogIzc3NzsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGZsb2F0OiByaWdodDsNCiAgbWFyZ2luLWxlZnQ6IDVweDsNCn0NCg0KLmFjdGl2ZTphZnRlciB7DQogIGNvbnRlbnQ6ICJcMjIxMiI7DQp9DQoNCi5wYW5lbCB7DQogIHBhZGRpbmc6IDBweCA1cHggMHB4IDVweDsNCiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7DQogIG1heC1oZWlnaHQ6IDA7DQogIG92ZXJmbG93OiBoaWRkZW47DQogIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4ycyBlYXNlLW91dDsNCn0NCg0KZGV0YWlscyB7DQogIHdpZHRoOiAxMDAlOw0KfQ0KDQpkZXRhaWxzID4gc3VtbWFyeSB7DQogIHBhZGRpbmc6IDRweCAxMnB4Ow0KICB3aWR0aDogMTAwJTsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2Y5OTsNCiAgYm9yZGVyOiBzb2xpZDsNCiAgYm9yZGVyLWNvbG9yOiB3aGl0ZTsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICBjdXJzb3I6IHBvaW50ZXI7DQogIGZvbnQtc2l6ZTogMTVweDsNCiAgY29sb3I6IHdoaXRlOw0KfQ0KDQpkZXRhaWxzW29wZW5dID4gc3VtbWFyeSB7DQogIGJhY2tncm91bmQtY29sb3I6ICNmYWE0MWE7DQp9DQoNCg0KLnRpdGxlIHsNCiAgY29sb3I6ICMxYjU0NjM7DQogIGZvbnQtc2l6ZTogMzZweDsNCn0NCg0KDQoucGVyc29uZXIgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogIzAwNDQ1OTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMC4xcHg7DQogIHBhZGRpbmctYm90dG9tOiAxcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQouw7hrb25vbWkgew0KICBib3gtc2hhZG93OiAzcHggM3B4IDRweCBibGFjazsNCiAgYmFja2dyb3VuZDogIzAwN0Y5OTsNCiAgcGFkZGluZy1yaWdodDogMTVweDsNCiAgcGFkZGluZy1sZWZ0OiAxNnB4Ow0KICBwYWRkaW5nLXRvcDogMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMC4xcHg7DQogIGZvbnQtc2l6ZTogMTFweDsNCiAgY29sb3I6IHdoaXRlOw0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQoudHbDpnJnw6VlbmRlIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICNmYWE0MWE7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDAuMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLmNvbnRhaW5lciB7DQogIHdpZHRoOiBpbmhlcml0Ow0KfQ0KDQoNCg0KYGBgDQoNCmBgYHtyIHhhcmluZ2FuRXh0cmEtY2xpcGJvYXJkLCBlY2hvPUZBTFNFfQ0KeGFyaW5nYW5FeHRyYTo6dXNlX2NsaXBib2FyZCgpDQpgYGANCg0KDQo8YnI+DQo8YnI+DQoNCjxjZW50ZXI+DQoNCi0tLQ0KIA0KIyBbYHIgdHh0JFRVJHRpdGxlW2xhbmd1YWdlXWBdey50aXRsZX0NCiANCi0tLQ0KPC9jZW50ZXI+DQoNCjxkZXRhaWxzPiA8c3VtbWFyeT4gYHIgdHh0JFRVJHN1YjFbbGFuZ3VhZ2VdYCA8L3N1bW1hcnk+IA0KPGJyPg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDE6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVFVYS1JIIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCmBgYHtyLCBjbGFzcy5zb3VyY2U9J2tsaXBweSd9DQoNClRVWEtSSF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlRVWEtSSCIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAgbW9udGggICAgID0gcHhfYWxsKCksDQogICAgcG9ydCAgICAgID0gcHhfYWxsKCksDQogICAgdGltZSAgICAgID0gcHhfdG9wKDMpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQojIFNrYWwgaGF2ZSDDpm5kcmV0IHRpbWUgaSBmZXRjaCBvZyBzeXMudGltZSBmaWx0ZXIgdGlsYmFnZSBuw6VyIGRlciBrb21tZXIgbnllIHRhbCBmb3IgMjAyMiBvZ3PDpSBpIGRlIG7DpnN0ZSAyIHRhYmVsbGVyDQpUVVhLUkggPC0gDQogIFRVWEtSSF9yYXcgJT4lIA0KICBmaWx0ZXIodGltZSA8IFN5cy50aW1lKCkgJT4lIHllYXIoKSAtIDMpICU+JSANCiAgbXV0YXRlKA0KICAgIG1vbnRoID0gbW9udGggJT4lIGZjdF9pbm9yZGVyKCksDQogICAgcG9ydCA9IHBvcnQgJT4lIGZjdF9yZW9yZGVyKHZhbHVlLCAuZnVuID0gc3VtLCBuYS5ybSA9IFRSVUUsIC5kZXNjID0gVFJVRSkNCiAgKSAlPiUgDQogIGRyb3BfbmEoKSAlPiUNCiAgc3ByZWFkKG1vbnRoLCB2YWx1ZSkgJT4lIA0KICBtdXRhdGVfaWYoaXMuaW50ZWdlciwgfiByZXBsYWNlKC4sIGlzLm5hKC4pLCAwKSkNCg0KVFVYS1JIICU+JSANCiAgc2VsZWN0KC10aW1lKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZShyZXBsYWNlXzBzID0gVFJVRSkgJT4lIA0KICBwYWNrX3Jvd3MoaW5kZXggPSBUVVhLUkhbWyJ0aW1lIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUUlVFKSB8PiANCiAgY29sdW1uX3NwZWMoMiwgYm9sZCA9IFQpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYS1JIIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS9iNGU3ZDRmYi1kOTI3LTQxYTEtYTIzNy0wNWVmOTg1OGEwYzkiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KDQoNCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDI6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVFVYS1JQIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3J9DQoNClRVWEtSTF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlRVWEtSUCIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAgbW9udGggICAgID0gcHhfYWxsKCksDQogICAgdGltZSAgICAgID0gcHhfdG9wKDUpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNClRVWEtSTF9yYXcgJT4lIA0KICBtdXRhdGUoDQogICAgbW9udGggPSBtb250aCAlPiUgZmN0X2lub3JkZXIoKSwNCiAgICB0aW1lID0gdGltZSAlPiUgZmN0X2lub3JkZXIoKSAlPiUgZmN0X3JldigpDQogICkgJT4lIA0KICBkcm9wX25hKCkgJT4lIA0KICBhcnJhbmdlKHRpbWUsIG1vbnRoKSAlPiUgDQogIHNwcmVhZCh0aW1lLCB2YWx1ZSkgJT4lIA0KICBtdXRhdGVfaWYoaXMuaW50ZWdlciwgfiByZXBsYWNlKC4sIGlzLm5hKC4pLCAwKSkgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUocmVwbGFjZV8wcyA9IFRSVUUpICU+JSANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFRSVUUpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYS1JQIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS8wN2NiMTE0NS0zZDA0LTRjMDAtYjU5ZS1jMDQ4NTg1OWE4NTkiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KPC9kZXRhaWxzPg0KDQo8ZGV0YWlscz4gPHN1bW1hcnk+IGByIHR4dCRUVSRzdWIyW2xhbmd1YWdlXWAgPC9zdW1tYXJ5Pg0KPGJyPg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDM6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiVFVYVVBBWCIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIFRVWFVQQVh9DQoNClRVWFVQQVhfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJUVVhVUEFYIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUgDQogIHN0YXRnbF9mZXRjaCgNCiAgICB0aW1lICAgICAgPSBweF90b3AoMiksDQogICAgbW9udGggICAgID0gcHhfYWxsKCksDQogICAgYWlycG9ydCAgID0gcHhfYWxsKCksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KVFVYVVBBWCA8LSANCiAgVFVYVVBBWF9yYXcgJT4lIA0KICBmaWx0ZXIodGltZSA8IFN5cy50aW1lKCkgJT4lIHllYXIoKSkgJT4lIA0KICBtdXRhdGUoDQogICAgbW9udGggPSBtb250aCAlPiUgZmN0X2lub3JkZXIoKSwNCiAgICBhaXJwb3J0ID0gYWlycG9ydCAlPiUgZmN0X3Jlb3JkZXIodmFsdWUsIC5mdW4gPSBzdW0sIG5hLnJtID0gVFJVRSwgLmRlc2MgPSBUUlVFKQ0KICAgICkgJT4lIA0KICBzcHJlYWQobW9udGgsIHZhbHVlKSAlPiUgDQogIG11dGF0ZV9pZihpcy5pbnRlZ2VyLCB+IHJlcGxhY2UoLiwgaXMubmEoLiksIDApKQ0KDQoNClRVWFVQQVggJT4lIA0KICBzZWxlY3QoLXRpbWUpICU+JSANCiAgcmVuYW1lKCIgIiA9IDEpICU+JSANCiAgc3RhdGdsX3RhYmxlKHJlcGxhY2VfMHMgPSBUUlVFKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IFRVWFVQQVhbWyJ0aW1lIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUKSB8PiANCiAgY29sdW1uX3NwZWMoMiwgYm9sZCA9IFQpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYVVBBWCIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvMGFiMTRkN2QtM2NkMS00NmJkLWE2ZmItZWM4Y2NhYjhkNjdiIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVFUkc3ViM1tsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgNDogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJUVVhLQVAiLCBsYW5nID0gbGFuZ3VhZ2UpKVsxXSR0aXRsZSkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBUVVhLQVB9DQoNClRVWEtBUF9yYXcgPC0gDQogIHN0YXRnbF91cmwoIlRVWEtBUCIsIGxhbmcgPSBsYW5ndWFnZSkgJT4lIA0KICBzdGF0Z2xfZmV0Y2goDQogICAgdW5pdCAgICAgID0gYygyKSwNCiAgICBtb250aCAgICAgPSBweF9hbGwoKSwNCiAgICByZWdpb24gICAgPSBweF9hbGwoKSwNCiAgICB0aW1lICAgICAgPSBweF90b3AoKSwNCiAgICAuY29sX2NvZGUgPSBUUlVFDQogICkgJT4lIA0KICBhc190aWJibGUoKQ0KDQoNClRVWEtBUCA8LSANCiAgVFVYS0FQX3JhdyAlPiUgDQogIGZpbHRlcih0aW1lIDwgU3lzLnRpbWUoKSAlPiUgeWVhcigpKSAlPiUgDQogIG11dGF0ZSgNCiAgICBtb250aCA9IG1vbnRoICU+JSBmY3RfaW5vcmRlcigpLA0KICAgIHJlZ2lvbiA9IHJlZ2lvbiAlPiUgZmN0X2lub3JkZXIoKQ0KICApICU+JSANCiAgc3ByZWFkKG1vbnRoLCB2YWx1ZSkgJT4lIA0KICB1bml0ZShjb21iaSwgdW5pdCwgdGltZSwgc2VwID0gIiwgIikNCg0KVFVYS0FQICU+JSANCiAgc2VsZWN0KC1jb21iaSkgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUoKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IFRVWEtBUFtbImNvbWJpIl1dICU+JSB0YWJsZSgpKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUKSB8PiANCiAgY29sdW1uX3NwZWMoMiwgYm9sZCA9IFQpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYS0FQIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS80ODhhYWNmYi03OWU5LTQ1NmQtODg4OS1kODIwNmE0ODRjYmQiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KPC9kZXRhaWxzPiANCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkVFUkc3ViNFtsYW5ndWFnZV1gIDwvc3VtbWFyeT4NCjxicj4NCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCA1OiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIlRVWDAxIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgVFVYMDF9DQoNClRVWDAxX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiVFVYMDEiLCBsYW5nID0gbGFuZ3VhZ2UpICU+JQ0KICBzdGF0Z2xfZmV0Y2goDQogICAgZGlzdHJpY3QgID0gcHhfYWxsKCksDQogICAgdGltZSAgICAgID0gcHhfdG9wKDUpLA0KICAgIC5jb2xfY29kZSA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNClRVWDAxX3JhdyAlPiUgDQogIGFycmFuZ2UoZGVzYyh0aW1lKSkgJT4lIA0KICBtdXRhdGUodGltZSA9IHRpbWUgJT4lIGZjdF9pbm9yZGVyKCkpICU+JSANCiAgc3ByZWFkKHRpbWUsIHZhbHVlKSAlPiUgDQogIGFycmFuZ2UoZGVzYyhgMjAxOWApKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFRSVUUpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiVFVYMDEiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxL2JmZThmOWRlLWFlMTgtNGY1Mi1iYzdiLWQ0ODA5MTMwMTk0MSIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQo8L2RldGFpbHM+DQoNCjxociBzdHlsZT0iYm9yZGVyOjFweCByaWRnZSBsaWdodGdyYXkiPiA8L2hyPg0KPGNlbnRlcj4gDQo8c3BhbiBzdHlsZT0nY29sb3I6I0QzRDNEMzsgZm9udC1zaXplOjkwJTsnPiBgciBwYXN0ZSh0eHQkdXBkYXRlW2xhbmd1YWdlXSwgZm9ybWF0KFN5cy5EYXRlKCksICIlZC4gJUIgJVkiKSlgIDwvc3Bhbj4gDQo8L2NlbnRlcj4NCg0KDQo8c2NyaXB0Pg0KdmFyIGFjYyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImFjY29yZGlvbiIpOw0KdmFyIGk7DQoNCmZvciAoaSA9IDA7IGkgPCBhY2MubGVuZ3RoOyBpKyspIHsNCiAgYWNjW2ldLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7DQogICAgdGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsNCiAgICB2YXIgcGFuZWwgPSB0aGlzLm5leHRFbGVtZW50U2libGluZzsNCiAgICBpZiAocGFuZWwuc3R5bGUubWF4SGVpZ2h0KSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOw0KICAgIH0gZWxzZSB7DQogICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSBwYW5lbC5zY3JvbGxIZWlnaHQgKyAicHgiOw0KICAgIH0gDQogIH0pOw0KfQ0KPC9zY3JpcHQ+DQoNCg0K