library(tidyverse)
library(here)
library(skimr)
library(hrbrthemes)
options(knitr.table.format = "html")
library(ggpubr)

Vamos começar lendo novamente nossos dados dos climas das cidades da Paraiba, iremos continuar analisando as cidades de:

dados_raw = read_csv(
    here("data/tempo-jp-cg-pt.csv"),
    col_types = cols(
        .default = col_double(),
        cidade = col_character(),
        semana = col_date(format = ""),
        ano = col_integer(),
        mes = col_integer()
    )
)

Buscando correlação entre temperaturas na mesma cidade.

Que tal buscarmos observar se é possivel encontrar alguma correlação entre a temperatura de uma semana e a temperatura da semana passada nas 3 cidades, quem sabe possamos descobrir qual delas possui o clima mais crazy !?

Podemos tentar visualizar essa informação através de um gráfico temporal

campina = dados_raw %>% 
    filter(cidade == 'Campina Grande', ano == 2019) %>% 
    mutate(temp_anterior = lag(temp_media, n = 1)) %>% 
    filter(!is.na(temp_anterior), !is.na(temp_media))

patos = dados_raw %>% 
    filter(cidade == 'Patos', ano == 2019) %>% 
    mutate(temp_anterior = lag(temp_media, n = 1)) %>% 
    filter(!is.na(temp_anterior), !is.na(temp_media))

jpessoa = dados_raw %>% 
    filter(cidade == 'João Pessoa', ano == 2019) %>% 
    mutate(temp_anterior = lag(temp_media, n = 1)) %>% 
    filter(!is.na(temp_anterior), !is.na(temp_media))

Campina Grande

Encontrei essa visualização esses dias e juro que quebrei a cabeça pra tentar entender, mas achei legal usar para mostrar a autocorrelação da temperatura de Campina Grande no ano de 2019, oque mais precisamos atentar nesse gráfico é em relação a reta diagonal. É possível observar que as temperaturas atuais e com atraso de 1 dia possuem correlações altas, é interessante ver também que essa correlação se apresenta nos dias em que a temperatura é alta, já nos dias mais frios é mais facil voltarmos para um dia quente, devido a baixa correlação. Que pena =/ i love frio.

lag.plot(campina$temp_media,
         lag=1, 
         main = "Média das temperaturas em Campina Grande", 
         diag.col = "red",
         labels=FALSE)

Bom, pra não dizer que só porque sou Campina-grandense. Que tal visualizarmos o mesmo para Patos e João Pessoa ?

Patos

lag.plot(patos$temp_media,
         lag=1, 
         main = "Média das temperaturas em Patos", 
         diag.col = "red",
         labels=FALSE)

Para Patos é interessante também! podemos ver que os dias com temperaturas mais altas possuem mais correlação que dias mais amenos kkk.

João Pessoa

lag.plot(jpessoa$temp_media,
         lag=1, 
         main = "Média das temperaturas em João Pessoa", 
         diag.col = "red",
         labels=FALSE)

Aqui a tendencia continua, a variabilidade entre dias quentes parece ser baixa em todas as cidades, mas especialmente em João Pessoa, podemos ver mais claramente os dias frios com baixa correlação.

Para finalizar vamos tentar quantificar essa correlação entre a temperatura da semana passada e a atual.

dados_raw %>% 
    mutate(temp_anterior = lag(temp_media, n = 1)) %>% 
    filter(!is.na(temp_anterior), !is.na(temp_media)) %>% 
    group_by(cidade) %>% 
    summarise(correlacoes = cor(temp_media, temp_anterior))

São valores muitos altos de correlação positiva! creio que isso seria meio lógico devido a serem dados referentes a mesma cidade em uma lag muito baixo, de apenas 1 dia, ou até mesmo por serem dados sazonais.

Que tal agora tentarmos ver relação entre variáveis diferentes ?

Podemos tentar descrever a relação entre a temperatura e chuvas nas semanas em que choveu nas 3 cidades :)

Campina Grande

Bem, como de costume vamos começar com Campina Grande.

campina %>% 
    ggscatter(x = "temp_media", y = "chuva", 
              add = "reg.line", conf.int = TRUE, 
              cor.coef = TRUE, cor.method = "pearson",
              xlab = "Temperatura Média (C°)", ylab = "Chuvas (mm)")
`geom_smooth()` using formula 'y ~ x'

O gráfico acima é bastante intuitivo e nos mostra através do valor de R, que nada mais é que o valor da correlação de pearson entre a temperatura e as chuvas na cidade, um valor negativo proximo a -1, ou seja quanto mais a temperatura aumenta é mais provavel que a quantidade de mm de chuva diminua, talvez chuvas finas de verão ? Em resumo temos:

  • Um formato de correlação entre as variáveis.
  • Um sinal negativo portanto uma correlação negativa.
  • Uma intensidade média/forte de correlação.
  • Pouquíssimos pontos extremos

Patos

Vamos analisar agora para a cidade de Patos.

patos %>% 
    ggscatter(x = "temp_media", y = "chuva", 
              add = "reg.line", conf.int = TRUE, 
              cor.coef = TRUE, cor.method = "pearson",
              xlab = "Temperatura Média (C°)", ylab = "Chuvas (mm)")
`geom_smooth()` using formula 'y ~ x'

Em Patos temos uma correlação mais baixa, próxima a zero, indicando que quase não há correlação entre as variáveis. talvez as chuvas em Patos, quando ocorrem, sejam explicadas por outros motivo ao invés da temperatura.

João Pessoa

Por fim, vamos observar agora como andam as coisas em João Pessoa.

jpessoa %>% 
    ggscatter(x = "temp_media", y = "chuva", 
              add = "reg.line", conf.int = TRUE, 
              cor.coef = TRUE, cor.method = "pearson",
              xlab = "Temperatura Média (C°)", ylab = "Chuvas (mm)")
`geom_smooth()` using formula 'y ~ x'

Aqui temos uma cidade intermediaria, mas bem parecida com oque ocorre em Campina Grande. É possível ver que em dias mais quentes ocorrem níveis de chuvas inferiores a dias mais frios. Mas como podemos ver o valor de correlação entre essas variaveis nessa cidade é médio.

LS0tDQp0aXRsZTogIkVEQSAtIEVudGVuZGVuZG8gYXMgY29ycmVsYcOnw7VlcyBlbnRyZSBjaHV2YXMgZSB0ZW1wZXJhdHVyYXMgbmFzIGNpZGFkZXMgZGEgUGFyYWliYSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCmBgYHtyIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoaGVyZSkNCmxpYnJhcnkoc2tpbXIpDQpsaWJyYXJ5KGhyYnJ0aGVtZXMpDQpvcHRpb25zKGtuaXRyLnRhYmxlLmZvcm1hdCA9ICJodG1sIikNCmxpYnJhcnkoZ2dwdWJyKQ0KYGBgDQoNClZhbW9zIGNvbWXDp2FyIGxlbmRvIG5vdmFtZW50ZSBub3Nzb3MgZGFkb3MgZG9zIGNsaW1hcyBkYXMgY2lkYWRlcyBkYSBQYXJhaWJhLCBpcmVtb3MgY29udGludWFyIGFuYWxpc2FuZG8gYXMgY2lkYWRlcyBkZToNCg0KLSBDYW1waW5hIEdyYW5kZQ0KLSBQYXRvcw0KLSBKb8OjbyBQZXNzb2ENCg0KYGBge3J9DQpkYWRvc19yYXcgPSByZWFkX2NzdigNCiAgICBoZXJlKCJkYXRhL3RlbXBvLWpwLWNnLXB0LmNzdiIpLA0KICAgIGNvbF90eXBlcyA9IGNvbHMoDQogICAgICAgIC5kZWZhdWx0ID0gY29sX2RvdWJsZSgpLA0KICAgICAgICBjaWRhZGUgPSBjb2xfY2hhcmFjdGVyKCksDQogICAgICAgIHNlbWFuYSA9IGNvbF9kYXRlKGZvcm1hdCA9ICIiKSwNCiAgICAgICAgYW5vID0gY29sX2ludGVnZXIoKSwNCiAgICAgICAgbWVzID0gY29sX2ludGVnZXIoKQ0KICAgICkNCikNCmBgYA0KDQojIyMgQnVzY2FuZG8gY29ycmVsYcOnw6NvIGVudHJlIHRlbXBlcmF0dXJhcyBuYSBtZXNtYSBjaWRhZGUuDQoNClF1ZSB0YWwgYnVzY2FybW9zIG9ic2VydmFyIHNlIMOpIHBvc3NpdmVsIGVuY29udHJhciBhbGd1bWEgY29ycmVsYcOnw6NvIGVudHJlIGEgdGVtcGVyYXR1cmEgZGUgdW1hIHNlbWFuYSBlIGEgdGVtcGVyYXR1cmEgZGEgc2VtYW5hIHBhc3NhZGEgbmFzIDMgY2lkYWRlcywgcXVlbSBzYWJlIHBvc3NhbW9zIGRlc2NvYnJpciBxdWFsIGRlbGFzIHBvc3N1aSBvIGNsaW1hIG1haXMgKipfX2NyYXp5X18qKiAhPw0KDQpQb2RlbW9zIHRlbnRhciB2aXN1YWxpemFyIGVzc2EgaW5mb3JtYcOnw6NvIGF0cmF2w6lzIGRlIHVtIGdyw6FmaWNvIHRlbXBvcmFsDQoNCmBgYHtyfQ0KY2FtcGluYSA9IGRhZG9zX3JhdyAlPiUgDQogICAgZmlsdGVyKGNpZGFkZSA9PSAnQ2FtcGluYSBHcmFuZGUnLCBhbm8gPT0gMjAxOSkgJT4lIA0KICAgIG11dGF0ZSh0ZW1wX2FudGVyaW9yID0gbGFnKHRlbXBfbWVkaWEsIG4gPSAxKSkgJT4lIA0KICAgIGZpbHRlcighaXMubmEodGVtcF9hbnRlcmlvciksICFpcy5uYSh0ZW1wX21lZGlhKSkNCg0KcGF0b3MgPSBkYWRvc19yYXcgJT4lIA0KICAgIGZpbHRlcihjaWRhZGUgPT0gJ1BhdG9zJywgYW5vID09IDIwMTkpICU+JSANCiAgICBtdXRhdGUodGVtcF9hbnRlcmlvciA9IGxhZyh0ZW1wX21lZGlhLCBuID0gMSkpICU+JSANCiAgICBmaWx0ZXIoIWlzLm5hKHRlbXBfYW50ZXJpb3IpLCAhaXMubmEodGVtcF9tZWRpYSkpDQoNCmpwZXNzb2EgPSBkYWRvc19yYXcgJT4lIA0KICAgIGZpbHRlcihjaWRhZGUgPT0gJ0pvw6NvIFBlc3NvYScsIGFubyA9PSAyMDE5KSAlPiUgDQogICAgbXV0YXRlKHRlbXBfYW50ZXJpb3IgPSBsYWcodGVtcF9tZWRpYSwgbiA9IDEpKSAlPiUgDQogICAgZmlsdGVyKCFpcy5uYSh0ZW1wX2FudGVyaW9yKSwgIWlzLm5hKHRlbXBfbWVkaWEpKQ0KYGBgDQoNCiMjIyMgQ2FtcGluYSBHcmFuZGUNCg0KRW5jb250cmVpIGVzc2EgdmlzdWFsaXphw6fDo28gZXNzZXMgZGlhcyBlIGp1cm8gcXVlIHF1ZWJyZWkgYSBjYWJlw6dhIHByYSB0ZW50YXIgZW50ZW5kZXIsIG1hcyBhY2hlaSBsZWdhbCB1c2FyIHBhcmEgbW9zdHJhciBhIGF1dG9jb3JyZWxhw6fDo28gZGEgdGVtcGVyYXR1cmEgZGUgQ2FtcGluYSBHcmFuZGUgbm8gYW5vIGRlIDIwMTksIG9xdWUgbWFpcyBwcmVjaXNhbW9zIGF0ZW50YXIgbmVzc2UgZ3LDoWZpY28gw6kgZW0gcmVsYcOnw6NvIGEgcmV0YSBkaWFnb25hbC4gw4kgcG9zc8OtdmVsIG9ic2VydmFyIHF1ZSBhcyB0ZW1wZXJhdHVyYXMgYXR1YWlzIGUgY29tIGF0cmFzbyBkZSAxIGRpYSBwb3NzdWVtIGNvcnJlbGHDp8O1ZXMgYWx0YXMsIMOpIGludGVyZXNzYW50ZSB2ZXIgdGFtYsOpbSBxdWUgZXNzYSBjb3JyZWxhw6fDo28gc2UgYXByZXNlbnRhIG5vcyBkaWFzIGVtIHF1ZSBhIHRlbXBlcmF0dXJhIMOpIGFsdGEsIGrDoSBub3MgZGlhcyBtYWlzIGZyaW9zIMOpIG1haXMgZmFjaWwgdm9sdGFybW9zIHBhcmEgdW0gZGlhIHF1ZW50ZSwgZGV2aWRvIGEgYmFpeGEgY29ycmVsYcOnw6NvLiBRdWUgcGVuYSA9LyBpIGxvdmUgZnJpby4NCg0KYGBge3J9DQpsYWcucGxvdChjYW1waW5hJHRlbXBfbWVkaWEsDQogICAgICAgICBsYWc9MSwgDQogICAgICAgICBtYWluID0gIk3DqWRpYSBkYXMgdGVtcGVyYXR1cmFzIGVtIENhbXBpbmEgR3JhbmRlIiwgDQogICAgICAgICBkaWFnLmNvbCA9ICJyZWQiLA0KICAgICAgICAgbGFiZWxzPUZBTFNFKQ0KYGBgDQpCb20sIHByYSBuw6NvIGRpemVyIHF1ZSBzw7MgcG9ycXVlIHNvdSBDYW1waW5hLWdyYW5kZW5zZS4gUXVlIHRhbCB2aXN1YWxpemFybW9zIG8gbWVzbW8gcGFyYSBQYXRvcyBlIEpvw6NvIFBlc3NvYSA/DQoNCiMjIyMgUGF0b3MNCg0KYGBge3J9DQpsYWcucGxvdChwYXRvcyR0ZW1wX21lZGlhLA0KICAgICAgICAgbGFnPTEsIA0KICAgICAgICAgbWFpbiA9ICJNw6lkaWEgZGFzIHRlbXBlcmF0dXJhcyBlbSBQYXRvcyIsIA0KICAgICAgICAgZGlhZy5jb2wgPSAicmVkIiwNCiAgICAgICAgIGxhYmVscz1GQUxTRSkNCmBgYA0KUGFyYSBQYXRvcyDDqSBpbnRlcmVzc2FudGUgdGFtYsOpbSEgcG9kZW1vcyB2ZXIgcXVlIG9zIGRpYXMgY29tIHRlbXBlcmF0dXJhcyBtYWlzIGFsdGFzIHBvc3N1ZW0gbWFpcyBjb3JyZWxhw6fDo28gcXVlIGRpYXMgbWFpcyBhbWVub3Mga2trLiANCg0KIyMjIyBKb8OjbyBQZXNzb2ENCg0KYGBge3J9DQpsYWcucGxvdChqcGVzc29hJHRlbXBfbWVkaWEsDQogICAgICAgICBsYWc9MSwgDQogICAgICAgICBtYWluID0gIk3DqWRpYSBkYXMgdGVtcGVyYXR1cmFzIGVtIEpvw6NvIFBlc3NvYSIsIA0KICAgICAgICAgZGlhZy5jb2wgPSAicmVkIiwNCiAgICAgICAgIGxhYmVscz1GQUxTRSkNCmBgYA0KQXF1aSBhIHRlbmRlbmNpYSBjb250aW51YSwgYSB2YXJpYWJpbGlkYWRlIGVudHJlIGRpYXMgcXVlbnRlcyBwYXJlY2Ugc2VyIGJhaXhhIGVtIHRvZGFzIGFzIGNpZGFkZXMsIG1hcyBlc3BlY2lhbG1lbnRlIGVtIEpvw6NvIFBlc3NvYSwgcG9kZW1vcyB2ZXIgbWFpcyBjbGFyYW1lbnRlIG9zIGRpYXMgZnJpb3MgY29tIGJhaXhhIGNvcnJlbGHDp8Ojby4gDQoNClBhcmEgZmluYWxpemFyIHZhbW9zIHRlbnRhciBxdWFudGlmaWNhciBlc3NhIGNvcnJlbGHDp8OjbyBlbnRyZSBhIHRlbXBlcmF0dXJhIGRhIHNlbWFuYSBwYXNzYWRhIGUgYSBhdHVhbC4NCg0KYGBge3J9DQpkYWRvc19yYXcgJT4lIA0KICAgIG11dGF0ZSh0ZW1wX2FudGVyaW9yID0gbGFnKHRlbXBfbWVkaWEsIG4gPSAxKSkgJT4lIA0KICAgIGZpbHRlcighaXMubmEodGVtcF9hbnRlcmlvciksICFpcy5uYSh0ZW1wX21lZGlhKSkgJT4lIA0KICAgIGdyb3VwX2J5KGNpZGFkZSkgJT4lIA0KICAgIHN1bW1hcmlzZShjb3JyZWxhY29lcyA9IGNvcih0ZW1wX21lZGlhLCB0ZW1wX2FudGVyaW9yKSkNCmBgYA0KDQpTw6NvIHZhbG9yZXMgbXVpdG9zIGFsdG9zIGRlIGNvcnJlbGHDp8OjbyBwb3NpdGl2YSEgY3JlaW8gcXVlIGlzc28gc2VyaWEgbWVpbyBsw7NnaWNvIGRldmlkbyBhIHNlcmVtIGRhZG9zIHJlZmVyZW50ZXMgYSBtZXNtYSBjaWRhZGUgZW0gdW1hIGxhZyBtdWl0byBiYWl4bywgZGUgYXBlbmFzIDEgZGlhLCBvdSBhdMOpIG1lc21vIHBvciBzZXJlbSBkYWRvcyBzYXpvbmFpcy4NCg0KIyMjIFF1ZSB0YWwgYWdvcmEgdGVudGFybW9zIHZlciByZWxhw6fDo28gZW50cmUgdmFyacOhdmVpcyBkaWZlcmVudGVzID8gDQoNClBvZGVtb3MgdGVudGFyIGRlc2NyZXZlciBhIHJlbGHDp8OjbyBlbnRyZSBhIHRlbXBlcmF0dXJhIGUgY2h1dmFzIG5hcyBzZW1hbmFzIGVtIHF1ZSBjaG92ZXUgbmFzIDMgY2lkYWRlcyA6KQ0KDQojIyMjIENhbXBpbmEgR3JhbmRlDQoNCkJlbSwgY29tbyBkZSBjb3N0dW1lIHZhbW9zIGNvbWXDp2FyIGNvbSBDYW1waW5hIEdyYW5kZS4NCg0KYGBge3J9DQpjYW1waW5hICU+JSANCiAgICBnZ3NjYXR0ZXIoeCA9ICJ0ZW1wX21lZGlhIiwgeSA9ICJjaHV2YSIsIA0KICAgICAgICAgICAgICBhZGQgPSAicmVnLmxpbmUiLCBjb25mLmludCA9IFRSVUUsIA0KICAgICAgICAgICAgICBjb3IuY29lZiA9IFRSVUUsIGNvci5tZXRob2QgPSAicGVhcnNvbiIsDQogICAgICAgICAgICAgIHhsYWIgPSAiVGVtcGVyYXR1cmEgTcOpZGlhIChDwrApIiwgeWxhYiA9ICJDaHV2YXMgKG1tKSIpDQpgYGANCg0KTyBncsOhZmljbyBhY2ltYSDDqSBiYXN0YW50ZSBpbnR1aXRpdm8gZSBub3MgbW9zdHJhIGF0cmF2w6lzIGRvIHZhbG9yIGRlIFIsIHF1ZSBuYWRhIG1haXMgw6kgcXVlIG8gdmFsb3IgZGEgY29ycmVsYcOnw6NvIGRlIHBlYXJzb24gZW50cmUgYSB0ZW1wZXJhdHVyYSBlIGFzIGNodXZhcyBuYSBjaWRhZGUsIHVtIHZhbG9yIG5lZ2F0aXZvIHByb3hpbW8gYSAtMSwgb3Ugc2VqYSBxdWFudG8gbWFpcyBhIHRlbXBlcmF0dXJhIGF1bWVudGEgw6kgbWFpcyBwcm92YXZlbCBxdWUgYSBxdWFudGlkYWRlIGRlIG1tIGRlIGNodXZhIGRpbWludWEsIHRhbHZleiBjaHV2YXMgZmluYXMgZGUgdmVyw6NvID8gRW0gcmVzdW1vIHRlbW9zOg0KDQotIFVtIGZvcm1hdG8gZGUgY29ycmVsYcOnw6NvIGVudHJlIGFzIHZhcmnDoXZlaXMuDQotIFVtIHNpbmFsIG5lZ2F0aXZvIHBvcnRhbnRvIHVtYSBjb3JyZWxhw6fDo28gbmVnYXRpdmEuDQotIFVtYSBpbnRlbnNpZGFkZSBtw6lkaWEvZm9ydGUgZGUgY29ycmVsYcOnw6NvLg0KLSBQb3VxdcOtc3NpbW9zIHBvbnRvcyBleHRyZW1vcw0KDQojIyMjIFBhdG9zDQoNClZhbW9zIGFuYWxpc2FyIGFnb3JhIHBhcmEgYSBjaWRhZGUgZGUgUGF0b3MuDQoNCmBgYHtyfQ0KcGF0b3MgJT4lIA0KICAgIGdnc2NhdHRlcih4ID0gInRlbXBfbWVkaWEiLCB5ID0gImNodXZhIiwgDQogICAgICAgICAgICAgIGFkZCA9ICJyZWcubGluZSIsIGNvbmYuaW50ID0gVFJVRSwgDQogICAgICAgICAgICAgIGNvci5jb2VmID0gVFJVRSwgY29yLm1ldGhvZCA9ICJwZWFyc29uIiwNCiAgICAgICAgICAgICAgeGxhYiA9ICJUZW1wZXJhdHVyYSBNw6lkaWEgKEPCsCkiLCB5bGFiID0gIkNodXZhcyAobW0pIikNCmBgYA0KDQpFbSBQYXRvcyB0ZW1vcyB1bWEgY29ycmVsYcOnw6NvIG1haXMgYmFpeGEsIHByw7N4aW1hIGEgemVybywgaW5kaWNhbmRvIHF1ZSBxdWFzZSBuw6NvIGjDoSBjb3JyZWxhw6fDo28gZW50cmUgYXMgdmFyacOhdmVpcy4gdGFsdmV6IGFzIGNodXZhcyBlbSBQYXRvcywgcXVhbmRvIG9jb3JyZW0sIHNlamFtIGV4cGxpY2FkYXMgcG9yIG91dHJvcyBtb3Rpdm8gYW8gaW52w6lzIGRhIHRlbXBlcmF0dXJhLg0KDQojIyMjIEpvw6NvIFBlc3NvYQ0KDQpQb3IgZmltLCB2YW1vcyBvYnNlcnZhciBhZ29yYSBjb21vIGFuZGFtIGFzIGNvaXNhcyBlbSBKb8OjbyBQZXNzb2EuDQoNCmBgYHtyfQ0KanBlc3NvYSAlPiUgDQogICAgZ2dzY2F0dGVyKHggPSAidGVtcF9tZWRpYSIsIHkgPSAiY2h1dmEiLCANCiAgICAgICAgICAgICAgYWRkID0gInJlZy5saW5lIiwgY29uZi5pbnQgPSBUUlVFLCANCiAgICAgICAgICAgICAgY29yLmNvZWYgPSBUUlVFLCBjb3IubWV0aG9kID0gInBlYXJzb24iLA0KICAgICAgICAgICAgICB4bGFiID0gIlRlbXBlcmF0dXJhIE3DqWRpYSAoQ8KwKSIsIHlsYWIgPSAiQ2h1dmFzIChtbSkiKQ0KYGBgDQoNCkFxdWkgdGVtb3MgdW1hIGNpZGFkZSBpbnRlcm1lZGlhcmlhLCBtYXMgYmVtIHBhcmVjaWRhIGNvbSBvcXVlIG9jb3JyZSBlbSBDYW1waW5hIEdyYW5kZS4gw4kgcG9zc8OtdmVsIHZlciBxdWUgZW0gZGlhcyBtYWlzIHF1ZW50ZXMgb2NvcnJlbSBuw612ZWlzIGRlIGNodXZhcyBpbmZlcmlvcmVzIGEgZGlhcyBtYWlzIGZyaW9zLiBNYXMgY29tbyBwb2RlbW9zIHZlciBvIHZhbG9yIGRlIGNvcnJlbGHDp8OjbyBlbnRyZSBlc3NhcyB2YXJpYXZlaXMgbmVzc2EgY2lkYWRlIMOpIG3DqWRpby4=