1 Dados de dia 2021-08-22

1.1 Internados vs Casos Novos

1.2 Internados em UCI vs Internados

1.3 Óbitos vs Internados em UCI

1.4 Óbitos vs Casos Novos

2 Por ARS

2.1 ARS Norte

2.2 ARS Lisboa e Vale do Tejo

2.3 ARS Centro

2.4 ARS Alentejo

2.5 ARS Algarve

2.6 ARS Açores

2.7 ARS Madeira

2.8 Médias móveis por Data

3 Vacinas

3.1 Data - 2021-08-22

vc <- ggplot(vacinas, aes(doses1, doses2))
vc <- vc + geom_path()+theme_minimal()
vc +geom_point()+labs(title="N. Doses Administradas Totais")

vc +geom_point(aes(x=10000000,y=10000000), color=2, size=10, shape='cross')+labs(title="N. Doses Administradas vs TARGET")

dados$confirmados_80_plus_all_novos <- dados$confirmados_80_plus_m + dados$confirmados_80_plus_f
dados$confirmados_80_plus_all_novos <- c(0, diff(dados$confirmados_80_plus_all_novos))
old <- ggplot(dados, aes(data,confirmados_80_plus_all_novos))
old+geom_path()+theme_minimal()+labs(title = 'Novos casos +80 anos')


dados$obitos_80_plus <- c(0, diff(dados$obitos_80_plus_f + dados$obitos_80_plus_m))
dados$racio_80_plus <-  (dados$obitos_80_plus / dados$confirmados_80_plus_all_novos)

np <- ggplot(tail(dados, 120), aes(data, racio_80_plus))+geom_path()
np+theme_minimal()

coef <- 50
df2 <- subset(dados,dados$data>=vacinas$data[1])
pl <- ggplot(df2, aes(data, confirmados_80_plus_all_novos))+labs(title='Novos Casos +80')
pl+theme_minimal()+geom_point()+geom_path()+scale_y_continuous(name='80+', sec.axis = sec_axis(trans=~.*coef,name='Vacinação Dose 1 (totais)'))


ccf(dados$confirmados_80_plus_all_novos, dados$obitos_80_plus, na.action=na.pass)

dados$confirmados_70_79_all_novos <- dados$confirmados_70_79_m + dados$confirmados_70_79_f
dados$confirmados_70_79_all_novos <- c(0, diff(dados$confirmados_70_79_all_novos))
old <- ggplot(dados, aes(data,confirmados_70_79_all_novos))
old+geom_path()+theme_minimal()+labs(title = 'Novos casos 70-79 anos')


dados$obitos_70_79_novos <- c(0, diff(dados$obitos_70_79_f + dados$obitos_70_79_m))
dados$racio_70_79 <- dados$obitos_70_79_novos / dados$confirmados_70_79_all_novos

np <- ggplot(tail(dados, 120), aes(data, racio_70_79))+geom_path()
np+theme_minimal()




<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxucGxvdChkYWRvcyRkYXRhLGRhZG9zJGNvbmZpcm1hZG9zX25vdm9zL2RhZG9zJGF0aXZvcywgbG9nPVwieVwiLCB0eXBlPSdsJylcblxuYGBgIn0= -->

```r
plot(dados$data,dados$confirmados_novos/dados$ativos, log="y", type='l')

3.2 Vamos tentar fazer um PCA

summary(dados)
dados.pca <- prcomp(na.omit(dados[,c(12,15,16,17,19)]), center=TRUE, scale.=TRUE)
summary(dados.pca)
biplot(dados.pca)
LS0tCnRpdGxlOiAiQ292aWQgMTkgUG9ydHVnYWwiCm91dHB1dDogCiAgaHRtbF9ub3RlYm9vazogCiAgICBmaWdfaGVpZ2h0OiA4CiAgICBmaWdfd2lkdGg6IDEwCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcwogICAgdG9jOiB5ZXMKLS0tCgpgYGB7ciBpbmNsdWRlPUZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShrbml0cikKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KFRUUikKI29wdHNfY2h1bmskc2V0KCJlY2hvIj1GQUxTRSkKb3B0c19jaHVuayRzZXQoIndhcm5pbmdzIj1GQUxTRSkKYGBgCgpgYGB7ciBpbmNsdWRlPUZBTFNFfQpkYWRvc191cmwgPC0gImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9kc3NnLXB0L2NvdmlkMTlwdC1kYXRhL21hc3Rlci9kYXRhLmNzdiIKZGFkb3MgPC0gcmVhZF9jc3YoZGFkb3NfdXJsKQojIGRhZG9zIDwtIGRhZG9zWyhucm93KGRhZG9zKS0xODApOm5yb3coZGFkb3MpLF0KZGFkb3MkZGF0YSA8LSBhcy5EYXRlKGRhZG9zJGRhdGEsJyVkLSVtLSVZJyApCmRhZG9zJGNvbmZpcm1hZG9zX2Fyc2x2dF9ub3ZvcyA8LSBjKDAsZGlmZihkYWRvcyRjb25maXJtYWRvc19hcnNsdnQpKQpgYGAKCiMgRGFkb3MgZGUgZGlhIGByIGRhZG9zW1snZGF0YSddXVtucm93KGRhZG9zKV1gCgoKCiMjIEludGVybmFkb3MgdnMgQ2Fzb3MgTm92b3MKYGBge3IgZWNobz1GQUxTRX0KZGFkb3NbWydjb25maXJtYWRvc19ub3Zvc19tYTcnXV0gPC0gIFNNQShkYWRvc1tbJ2NvbmZpcm1hZG9zX25vdm9zJ11dLCA3KQpkYWRvc1tbJ2NvbmZpcm1hZG9zX25vdm9zX21hMTQnXV0gPC0gIFNNQShkYWRvc1tbJ2NvbmZpcm1hZG9zX25vdm9zJ11dLCAxNCkKZGFkb3NbWydpbnRlcm5hZG9zX21hNyddXSA8LSAgU01BKGRhZG9zW1snaW50ZXJuYWRvcyddXSwgNykKCnN1bmRheXMgPC0gd2Vla2RheXMoZGFkb3NbWydkYXRhJ11dKQpzdW5kYXlzW3N1bmRheXMhPSJTdW5kYXkiXSA8LSAxCnN1bmRheXNbc3VuZGF5cz09IlN1bmRheSJdIDwtIDIKc3VuZGF5c1tsZW5ndGgoc3VuZGF5cyldIDwtIDMKCmNpIDwtIGdncGxvdChkYWRvcyxhZXMoY29uZmlybWFkb3Nfbm92b3MsaW50ZXJuYWRvcykpCmNpIDwtIGNpK2dlb21fcGF0aChzaXplPTAuMSkrZ2VvbV9wb2ludChzaXplPWFzLm51bWVyaWMoc3VuZGF5cykvMiwgY29sb3I9c3VuZGF5cykKIysgZ2VvbV90ZXh0KGxhYmVsPWRhZG9zW1snZGF0YSddXSwgc2l6ZT0oYXMubnVtZXJpYyhzdW5kYXlzKS0xKSoyLCBoanVzdD0wLCBhbmdsZT05MCkKIytnZW9tX3RleHQobGFiZWw9c3VuZGF5cywgc2l6ZT0zLCBhbmdsZT00NSkKY2kgPC0gY2kgKyBnZW9tX3BhdGgoYWVzKGNvbmZpcm1hZG9zX25vdm9zX21hNywgaW50ZXJuYWRvc19tYTcpLCBjb2xvdXI9JyMwMDAwRkYnKStnZW9tX3BvaW50KGFlcyhjb25maXJtYWRvc19ub3Zvc19tYTcsIGludGVybmFkb3NfbWE3KSwgY29sb3VyPXN1bmRheXMsIHNpemU9MC41KQpjaSt0aGVtZV9saW5lZHJhdygpK2xhYnMoeD0nQ2Fzb3MgTm92b3MgRGnDoXJpb3MnLCB5PSdJbnRlcm5hZG9zJykKY2krdGhlbWVfbGluZWRyYXcoKStsYWJzKHg9J0Nhc29zIE5vdm9zIERpw6FyaW9zJywgeT0nSW50ZXJuYWRvcycpK2Nvb3JkX2NhcnRlc2lhbih4bGltPWMoMCxkYWRvcyRjb25maXJtYWRvc19ub3Zvc1tucm93KGRhZG9zKV0qMS41KSwgeWxpbT1jKDAsZGFkb3MkaW50ZXJuYWRvc1tucm93KGRhZG9zKV0qMi44KSkKCmdlIDwtIGdncGxvdChkYWRvcyxhZXMoZGF0YSxjb25maXJtYWRvc19ub3ZvcykpCmdlIDwtIGdlICsgZ2VvbV9wb2ludChzaXplPTEpK2dlb21fcGF0aChhZXMoZGF0YSxjb25maXJtYWRvc19ub3Zvc19tYTcpLCBjb2xvcj0iYmx1ZSIpK2dlb21fcGF0aChhZXMoZGF0YSxjb25maXJtYWRvc19ub3Zvc19tYTE0KSwgY29sb3I9InJlZCIpCmdlK3RoZW1lX21pbmltYWwoKQpnZSt0aGVtZV9taW5pbWFsKCkrY29vcmRfY2FydGVzaWFuKHhsaW0gPSBkYWRvcyRkYXRhW2MobnJvdyhkYWRvcyktMzAsIG5yb3coZGFkb3MpKV0sIHlsaW09YygwLG1heChkYWRvcyRjb25maXJtYWRvc19ub3Zvc1tjKG5yb3coZGFkb3MpLTMwLCBucm93KGRhZG9zKSldKSkpCgpgYGAKCgoKIyMgSW50ZXJuYWRvcyBlbSBVQ0kgdnMgSW50ZXJuYWRvcwoKYGBge3IgZWNobz1GQUxTRX0KZGFkb3NbWydpbnRlcm5hZG9zX3VjaV9tYTcnXV0gPC0gU01BKGRhZG9zW1snaW50ZXJuYWRvc191Y2knXV0pCgppdSA8LSBnZ3Bsb3QoZGFkb3MsIGFlcyhpbnRlcm5hZG9zLCBpbnRlcm5hZG9zX3VjaSkpCml1IDwtIGl1K2dlb21fcGF0aChzaXplPTAuMSkrZ2VvbV9wb2ludChzaXplPWFzLm51bWVyaWMoc3VuZGF5cyksIGNvbG9yPXN1bmRheXMpCml1IDwtIGl1ICsgZ2VvbV9wYXRoKGFlcyhpbnRlcm5hZG9zX21hNywgaW50ZXJuYWRvc191Y2lfbWE3KSwgY29sb3VyPScjMDAwMEZGJykrZ2VvbV9wb2ludChhZXMoaW50ZXJuYWRvc19tYTcsIGludGVybmFkb3NfdWNpX21hNyksIHNpemUgPSAwLjUsIGNvbG9yPXN1bmRheXMpCml1K3RoZW1lX2xpbmVkcmF3KCkrbGFicyh4PSdJbnRlcm5hZG9zJywgeT0nSW50ZXJuYWRvcyBlbSBVQ0knKQppdSt0aGVtZV9saW5lZHJhdygpK2xhYnMoeD0nSW50ZXJuYWRvcycsIHk9J0ludGVybmFkb3MgZW0gVUNJJywgdGl0bGU9J1pvb20gSW4nKStjb29yZF9jYXJ0ZXNpYW4oeGxpbT1jKDAsdGFpbChkYWRvcyRpbnRlcm5hZG9zLDEpKjEuMyksIHlsaW09YygwLHRhaWwoZGFkb3MkaW50ZXJuYWRvc191Y2ksMSkqMS4zKSkKYGBgCgojIyDDk2JpdG9zIHZzIEludGVybmFkb3MgZW0gVUNJCgpgYGB7ciBlY2hvPUZBTFNFfQpkYWRvc1tbJ29iaXRvc19ub3ZvcyddXSA8LSBkaWZmKGMoMCxkYWRvc1tbJ29iaXRvcyddXSkpCmRhZG9zW1snb2JpdG9zX25vdm9zX21hNyddXSA8LSBTTUEoZGFkb3NbWydvYml0b3Nfbm92b3MnXV0sIDcpCnVvIDwtIGdncGxvdChkYWRvcywgYWVzKGludGVybmFkb3NfdWNpLCBvYml0b3Nfbm92b3MpKQp1byA8LSB1byArIGdlb21fcGF0aChzaXplPTAuMSkrZ2VvbV9wb2ludChzaXplPWFzLm51bWVyaWMoc3VuZGF5cyksIGNvbG9yPXN1bmRheXMpICsgZ2VvbV90ZXh0KGxhYmVsPWRhZG9zW1snZGF0YSddXSwgc2l6ZT0oYXMubnVtZXJpYyhzdW5kYXlzKS0xKSoyLCBoanVzdD0wLCBhbmdsZT0zMCkKdW8gPC0gdW8gKyBnZW9tX3BhdGgoYWVzKGludGVybmFkb3NfdWNpX21hNywgb2JpdG9zX25vdm9zX21hNyksIGNvbG91cj0nIzAwMDBGRicpCnVvICsgdGhlbWVfbGluZWRyYXcoKStsYWJzKHg9J0ludGVybmFkb3MgZW0gVUNJJywgeSA9ICfDk2JpdG9zJykKdW8gKyB0aGVtZV9saW5lZHJhdygpK2xhYnMoeD0nSW50ZXJuYWRvcyBlbSBVQ0knLCB5ID0gJ8OTYml0b3MnLCB0aXRsZT0nWm9vbSBJbicpK2Nvb3JkX2NhcnRlc2lhbih4bGltPWModGFpbChkYWRvcyRpbnRlcm5hZG9zX3VjaSwxKSowLjUsIHRhaWwoZGFkb3MkaW50ZXJuYWRvc191Y2ksMSkqMS41KSwgeWxpbT1jKHRhaWwoZGFkb3Mkb2JpdG9zX25vdm9zLDEpKjAuNSx0YWlsKGRhZG9zJG9iaXRvc19ub3ZvcywxKSoxLjUpKQpgYGAKCiMjIMOTYml0b3MgdnMgQ2Fzb3MgTm92b3MKCmBgYHtyIGVjaG89RkFMU0V9CnVvIDwtIGdncGxvdChkYWRvcywgYWVzKGNvbmZpcm1hZG9zX25vdm9zLCBvYml0b3Nfbm92b3MpKQp1byA8LSB1byArIGdlb21fcGF0aChzaXplPTAuMSkrZ2VvbV9wb2ludChzaXplPWFzLm51bWVyaWMoc3VuZGF5cyksIGNvbG9yPXN1bmRheXMpCnVvIDwtIHVvICsgZ2VvbV9wYXRoKGFlcyhjb25maXJtYWRvc19ub3Zvc19tYTcsIG9iaXRvc19ub3Zvc19tYTcpLCBjb2xvdXI9JyMwMDAwRkYnKQp1byArIHRoZW1lX2xpbmVkcmF3KCkrbGFicyh4PSdOb3ZvcyBDYXNvcyBEacOhcmlvcycsIHkgPSAnw5NiaXRvcycpCnVvICsgdGhlbWVfbGluZWRyYXcoKStsYWJzKHg9J05vdm9zIENhc29zIERpw6FyaW9zJywgeSA9ICfDk2JpdG9zJykrIGNvb3JkX2NhcnRlc2lhbih4bGltID0gYygwLCBkYWRvcyRjb25maXJtYWRvc19ub3Zvc1tucm93KGRhZG9zKV0qMS4zKSwgeWxpbT1jKDAsZGFkb3Mkb2JpdG9zX25vdm9zW25yb3coZGFkb3MpXSoxLjMpKQoKY2NmKGRhZG9zJG9iaXRvc19ub3ZvcywgZGFkb3MkY29uZmlybWFkb3Nfbm92b3MsIG5hLmFjdGlvbj1uYS5wYXNzLCB0eXBlPSdjb3ZhcmlhbmNlJywgbGFnLm1heD01MCwgY2V4Lm1haW49MSkKCmBgYAoKIyBQb3IgQVJTCgojIyBBUlMgTm9ydGUKCmBgYHtyIGVjaG89RkFMU0V9CmRhZG9zW1snY29uZmlybWFkb3Nfbm92b3NfYXJzbm9ydGUnXV0gPC0gIGMoMCwgZGlmZihkYWRvc1tbImNvbmZpcm1hZG9zX2Fyc25vcnRlIl1dKSkKZGFkb3NbWydjb25maXJtYWRvc19ub3Zvc19hcnNub3J0ZV9tYTcnXV0gPC0gIFNNQShkYWRvc1tbJ2NvbmZpcm1hZG9zX25vdm9zX2Fyc25vcnRlJ11dLCA3KQoKZGFkb3NbWydvYml0b3Nfbm92b3NfYXJzbm9ydGUnXV0gPC0gYygwLCBkaWZmKGRhZG9zW1snb2JpdG9zX2Fyc25vcnRlJ11dKSkKZGFkb3NbWydvYml0b3Nfbm92b3NfYXJzbm9ydGVfbWE3J11dIDwtICBTTUEoZGFkb3NbWydvYml0b3Nfbm92b3NfYXJzbm9ydGUnXV0sIDcpCgpjaSA8LSBnZ3Bsb3QoZGFkb3MsYWVzKGNvbmZpcm1hZG9zX25vdm9zX2Fyc25vcnRlLG9iaXRvc19ub3Zvc19hcnNub3J0ZSkpCmNpIDwtIGNpK2dlb21fcGF0aChzaXplPTAuMSkrZ2VvbV9wb2ludChzaXplPTAuMikKY2kgPC0gY2kgKyBnZW9tX3BhdGgoYWVzKGNvbmZpcm1hZG9zX25vdm9zX2Fyc25vcnRlX21hNywgb2JpdG9zX25vdm9zX2Fyc25vcnRlX21hNyksIGNvbG91cj0nIzAwMDBGRicpK2dlb21fcG9pbnQoYWVzKGNvbmZpcm1hZG9zX25vdm9zX2Fyc25vcnRlX21hNywgb2JpdG9zX25vdm9zX2Fyc25vcnRlX21hNyksc2l6ZT1hcy5udW1lcmljKHN1bmRheXMpLCBjb2xvcj1zdW5kYXlzKSsgZ2VvbV90ZXh0KGxhYmVsPWRhZG9zW1snZGF0YSddXSwgc2l6ZT0oYXMubnVtZXJpYyhzdW5kYXlzKS0xKSoyLCBoanVzdD0wLCBhbmdsZT0zMCkKY2krdGhlbWVfbGluZWRyYXcoKStsYWJzKHg9J0Nhc29zIE5vdm9zIERpw6FyaW9zIEFSUyBOb3J0ZScsIHk9J8OTYml0b3MnKQpjaSt0aGVtZV9saW5lZHJhdygpK2xhYnMoeD0nQ2Fzb3MgTm92b3MgRGnDoXJpb3MgQVJTIE5vcnRlJywgeT0nw5NiaXRvcycpK2Nvb3JkX2NhcnRlc2lhbih4bGltPWMoMCxkYWRvcyRjb25maXJtYWRvc19ub3Zvc19hcnNub3J0ZV9tYTdbbnJvdyhkYWRvcyldKjEuOCksIHlsaW09YygwLGRhZG9zJG9iaXRvc19ub3Zvc19hcnNub3J0ZV9tYTdbbnJvdyhkYWRvcyldKjMuOCkpCmBgYAoKCgoKIyMgQVJTIExpc2JvYSBlIFZhbGUgZG8gVGVqbwoKYGBge3IgZWNobz1GQUxTRX0KZGFkb3NbWydjb25maXJtYWRvc19ub3Zvc19hcnNsdnQnXV0gPC0gIGMoMCwgZGlmZihkYWRvc1tbImNvbmZpcm1hZG9zX2Fyc2x2dCJdXSkpCmRhZG9zW1snY29uZmlybWFkb3Nfbm92b3NfYXJzbHZ0X21hNyddXSA8LSAgU01BKGRhZG9zW1snY29uZmlybWFkb3Nfbm92b3NfYXJzbHZ0J11dLCA3KQpkYWRvc1tbJ2NvbmZpcm1hZG9zX25vdm9zX2Fyc2x2dF9tYTE0J11dIDwtICBTTUEoZGFkb3NbWydjb25maXJtYWRvc19ub3Zvc19hcnNsdnQnXV0sIDE0KQoKZGFkb3NbWydvYml0b3Nfbm92b3NfYXJzbHZ0J11dIDwtIGMoMCwgZGlmZihkYWRvc1tbJ29iaXRvc19hcnNsdnQnXV0pKQpkYWRvc1tbJ29iaXRvc19ub3Zvc19hcnNsdnRfbWE3J11dIDwtICBTTUEoZGFkb3NbWydvYml0b3Nfbm92b3NfYXJzbHZ0J11dLCA3KQoKY2kgPC0gZ2dwbG90KGRhZG9zLGFlcyhjb25maXJtYWRvc19ub3Zvc19hcnNsdnQsb2JpdG9zX25vdm9zX2Fyc2x2dCkpCmNpIDwtIGNpK2dlb21fcGF0aChzaXplPTAuMSkrZ2VvbV9wb2ludChzaXplPWFzLm51bWVyaWMoc3VuZGF5cyksIGNvbG9yPXN1bmRheXMpCmNpIDwtIGNpICsgZ2VvbV9wYXRoKGFlcyhjb25maXJtYWRvc19ub3Zvc19hcnNsdnRfbWE3LCBvYml0b3Nfbm92b3NfYXJzbHZ0X21hNyksIGNvbG91cj0nIzAwMDBGRicpCmNpK3RoZW1lX2xpbmVkcmF3KCkrbGFicyh4PSdDYXNvcyBOb3ZvcyBEacOhcmlvcyBBUlMgTGlzYm9hIGUgVmFsZSBkbyBUZWpvJywgeT0nw5NiaXRvcycpCmNpK3RoZW1lX2xpbmVkcmF3KCkrbGFicyh4PSdDYXNvcyBOb3ZvcyBEacOhcmlvcyBBUlMgTGlzYm9hIGUgVmFsZSBkbyBUZWpvJywgeT0nw5NiaXRvcycpK2Nvb3JkX2NhcnRlc2lhbih4bGltPWMoMCxkYWRvcyRjb25maXJtYWRvc19ub3Zvc19hcnNsdnRbbnJvdyhkYWRvcyldKjEuMiksIHlsaW09YygwLGRhZG9zJG9iaXRvc19ub3Zvc19hcnNsdnRbbnJvdyhkYWRvcyldKjEuMikpCmBgYAoKIyMgQVJTIENlbnRybwoKYGBge3IgZWNobz1GQUxTRX0KZGFkb3NbWydjb25maXJtYWRvc19ub3Zvc19hcnNjZW50cm8nXV0gPC0gIGMoMCwgZGlmZihkYWRvc1tbJ2NvbmZpcm1hZG9zX2Fyc2NlbnRybyddXSkpCmRhZG9zW1snY29uZmlybWFkb3Nfbm92b3NfYXJzY2VudHJvX21hNyddXSA8LSAgU01BKGRhZG9zW1snY29uZmlybWFkb3Nfbm92b3NfYXJzY2VudHJvJ11dLCA3KQoKZGFkb3NbWydvYml0b3Nfbm92b3NfYXJzY2VudHJvJ11dIDwtIGMoMCwgZGlmZihkYWRvc1tbJ29iaXRvc19hcnNjZW50cm8nXV0pKQpkYWRvc1tbJ29iaXRvc19ub3Zvc19hcnNjZW50cm9fbWE3J11dIDwtICBTTUEoZGFkb3NbWydvYml0b3Nfbm92b3NfYXJzY2VudHJvJ11dLCA3KQoKY2kgPC0gZ2dwbG90KGRhZG9zLGFlcyhjb25maXJtYWRvc19ub3Zvc19hcnNjZW50cm8sb2JpdG9zX25vdm9zX2Fyc2NlbnRybykpCmNpIDwtIGNpK2dlb21fcGF0aChzaXplPTAuMSkrZ2VvbV9wb2ludChzaXplPWFzLm51bWVyaWMoc3VuZGF5cyksIGNvbG9yPXN1bmRheXMpCmNpIDwtIGNpICsgZ2VvbV9wYXRoKGFlcyhjb25maXJtYWRvc19ub3Zvc19hcnNjZW50cm9fbWE3LCBvYml0b3Nfbm92b3NfYXJzY2VudHJvX21hNyksIGNvbG91cj0nIzAwMDBGRicpCmNpK3RoZW1lX2xpbmVkcmF3KCkrbGFicyh4PSdDYXNvcyBOb3ZvcyBEacOhcmlvcyBBUlMgQ2VudHJvJywgeT0nw5NiaXRvcycpCmNpK3RoZW1lX2xpbmVkcmF3KCkrbGFicyh4PSdDYXNvcyBOb3ZvcyBEacOhcmlvcyBBUlMgQ2VudHJvJywgeT0nw5NiaXRvcycpK2Nvb3JkX2NhcnRlc2lhbigKICB4bGltPWMoMCwgdGFpbChkYWRvcyRjb25maXJtYWRvc19ub3Zvc19hcnNjZW50cm8sMSkqMS41KSwKICB5bGltPWMoMCwgdGFpbChkYWRvcyRvYml0b3Nfbm92b3NfYXJzY2VudHJvLDEpKjEuNSkKKQpgYGAKCiMjIEFSUyBBbGVudGVqbwoKYGBge3IgZWNobz1GQUxTRX0KZGFkb3NbWydjb25maXJtYWRvc19ub3Zvc19hcnNhbGVudGVqbyddXSA8LSAgYygwLCBkaWZmKGRhZG9zW1snY29uZmlybWFkb3NfYXJzYWxlbnRlam8nXV0pKQpkYWRvc1tbJ2NvbmZpcm1hZG9zX25vdm9zX2Fyc2FsZW50ZWpvX21hNyddXSA8LSAgU01BKGRhZG9zW1snY29uZmlybWFkb3Nfbm92b3NfYXJzYWxlbnRlam8nXV0sIDcpCgpkYWRvc1tbJ29iaXRvc19ub3Zvc19hcnNhbGVudGVqbyddXSA8LSBjKDAsIGRpZmYoZGFkb3NbWydvYml0b3NfYXJzYWxlbnRlam8nXV0pKQpkYWRvc1tbJ29iaXRvc19ub3Zvc19hcnNhbGVudGVqb19tYTcnXV0gPC0gIFNNQShkYWRvc1tbJ29iaXRvc19ub3Zvc19hcnNhbGVudGVqbyddXSwgNykKCmNpIDwtIGdncGxvdChkYWRvcyxhZXMoY29uZmlybWFkb3Nfbm92b3NfYXJzYWxlbnRlam8sb2JpdG9zX25vdm9zX2Fyc2FsZW50ZWpvKSkKY2kgPC0gY2krZ2VvbV9wYXRoKHNpemU9MC4xKStnZW9tX3BvaW50KHNpemU9YXMubnVtZXJpYyhzdW5kYXlzKSwgY29sb3I9c3VuZGF5cykKY2kgPC0gY2kgKyBnZW9tX3BhdGgoYWVzKGNvbmZpcm1hZG9zX25vdm9zX2Fyc2FsZW50ZWpvX21hNywgb2JpdG9zX25vdm9zX2Fyc2FsZW50ZWpvX21hNyksIGNvbG91cj0nIzAwMDBGRicpCmNpK3RoZW1lX2xpbmVkcmF3KCkrbGFicyh4PSdDYXNvcyBOb3ZvcyBEacOhcmlvcyBBUlMgQWxlbnRlam8nLCB5PSfDk2JpdG9zJykKYGBgCgojIyBBUlMgQWxnYXJ2ZQoKYGBge3IgZWNobz1GQUxTRX0KZGFkb3NbWydjb25maXJtYWRvc19ub3Zvc19hcnNhbGdhcnZlJ11dIDwtICBjKDAsIGRpZmYoZGFkb3NbWydjb25maXJtYWRvc19hcnNhbGdhcnZlJ11dKSkKZGFkb3NbWydjb25maXJtYWRvc19ub3Zvc19hcnNhbGdhcnZlX21hNyddXSA8LSAgU01BKGRhZG9zW1snY29uZmlybWFkb3Nfbm92b3NfYXJzYWxnYXJ2ZSddXSwgNykKCmRhZG9zW1snb2JpdG9zX25vdm9zX2Fyc2FsZ2FydmUnXV0gPC0gYygwLCBkaWZmKGRhZG9zW1snb2JpdG9zX2Fyc2FsZ2FydmUnXV0pKQpkYWRvc1tbJ29iaXRvc19ub3Zvc19hcnNhbGdhcnZlX21hNyddXSA8LSAgU01BKGRhZG9zW1snb2JpdG9zX25vdm9zX2Fyc2FsZ2FydmUnXV0sIDcpCgpjaSA8LSBnZ3Bsb3QoZGFkb3MsYWVzKGNvbmZpcm1hZG9zX25vdm9zX2Fyc2FsZ2FydmUsb2JpdG9zX25vdm9zX2Fyc2FsZ2FydmUpKQpjaSA8LSBjaStnZW9tX3BhdGgoc2l6ZT0wLjEpK2dlb21fcG9pbnQoc2l6ZT1hcy5udW1lcmljKHN1bmRheXMpLCBjb2xvcj1zdW5kYXlzKQpjaSA8LSBjaSArIGdlb21fcGF0aChhZXMoY29uZmlybWFkb3Nfbm92b3NfYXJzYWxnYXJ2ZV9tYTcsIG9iaXRvc19ub3Zvc19hcnNhbGdhcnZlX21hNyksIGNvbG91cj0nIzAwMDBGRicpK2dlb21fcG9pbnQoYWVzKGNvbmZpcm1hZG9zX25vdm9zX2Fyc2FsZ2FydmVfbWE3LCBvYml0b3Nfbm92b3NfYXJzYWxnYXJ2ZV9tYTcpLCBjb2xvdXI9c3VuZGF5cywgc2l6ZT0xKQpjaSt0aGVtZV9saW5lZHJhdygpK2xhYnMoeD0nQ2Fzb3MgTm92b3MgRGnDoXJpb3MgQVJTIEFsZ2FydmUnLCB5PSfDk2JpdG9zJykKYGBgCiMjIEFSUyBBw6dvcmVzCgpgYGB7ciBlY2hvPUZBTFNFfQpkYWRvc1tbJ2NvbmZpcm1hZG9zX25vdm9zX2Fjb3JlcyddXSA8LSAgYygwLCBkaWZmKGRhZG9zW1snY29uZmlybWFkb3NfYWNvcmVzJ11dKSkKZGFkb3NbWydjb25maXJtYWRvc19ub3Zvc19hY29yZXNfbWE3J11dIDwtICBTTUEoZGFkb3NbWydjb25maXJtYWRvc19ub3Zvc19hY29yZXMnXV0sIDcpCgpkYWRvc1tbJ29iaXRvc19ub3Zvc19hY29yZXMnXV0gPC0gYygwLCBkaWZmKGRhZG9zW1snb2JpdG9zX2Fjb3JlcyddXSkpCmRhZG9zW1snb2JpdG9zX25vdm9zX2Fjb3Jlc19tYTcnXV0gPC0gIFNNQShkYWRvc1tbJ29iaXRvc19ub3Zvc19hY29yZXMnXV0sIDcpCgpjaSA8LSBnZ3Bsb3QoZGFkb3MsYWVzKGRhdGEsY29uZmlybWFkb3Nfbm92b3NfYWNvcmVzKSkKY2kgPC0gY2krZ2VvbV9wYXRoKHNpemU9MC4xKStnZW9tX3BvaW50KHNpemU9YXMubnVtZXJpYyhzdW5kYXlzKSwgY29sb3I9c3VuZGF5cykKY2kgPC0gY2kgKyBnZW9tX3BhdGgoYWVzKGRhdGEsY29uZmlybWFkb3Nfbm92b3NfYWNvcmVzX21hNyksIGNvbG91cj0nIzAwMDBGRicpCmNpK3RoZW1lX2xpbmVkcmF3KCkrbGFicyh5PSdDYXNvcyBOb3ZvcyBEacOhcmlvcyBBw6dvcmVzJywgeD0nRGlhJykKYGBgCiMjIEFSUyBNYWRlaXJhCgpgYGB7ciBlY2hvPUZBTFNFfQpkYWRvc1tbJ2NvbmZpcm1hZG9zX25vdm9zX21hZGVpcmEnXV0gPC0gIGMoMCwgZGlmZihkYWRvc1tbJ2NvbmZpcm1hZG9zX21hZGVpcmEnXV0pKQpkYWRvc1tbJ2NvbmZpcm1hZG9zX25vdm9zX21hZGVpcmFfbWE3J11dIDwtICBTTUEoZGFkb3NbWydjb25maXJtYWRvc19ub3Zvc19tYWRlaXJhJ11dLCA3KQoKZGFkb3NbWydvYml0b3Nfbm92b3NfbWFkZWlyYSddXSA8LSBjKDAsIGRpZmYoZGFkb3NbWydvYml0b3NfbWFkZWlyYSddXSkpCmRhZG9zW1snb2JpdG9zX25vdm9zX21hZGVpcmFfbWE3J11dIDwtICBTTUEoZGFkb3NbWydvYml0b3Nfbm92b3NfbWFkZWlyYSddXSwgNykKCmNpIDwtIGdncGxvdChkYWRvcyxhZXMoZGF0YSxjb25maXJtYWRvc19ub3Zvc19tYWRlaXJhKSkKY2kgPC0gY2krZ2VvbV9wYXRoKHNpemU9MC4xKStnZW9tX3BvaW50KHNpemU9YXMubnVtZXJpYyhzdW5kYXlzKSwgY29sb3I9c3VuZGF5cykKY2kgPC0gY2kgKyBnZW9tX3BhdGgoYWVzKGRhdGEsY29uZmlybWFkb3Nfbm92b3NfbWFkZWlyYV9tYTcpLCBjb2xvdXI9JyMwMDAwRkYnKQpjaSt0aGVtZV9saW5lZHJhdygpK2xhYnMoeT0nQ2Fzb3MgTm92b3MgRGnDoXJpb3MgTWFkZWlyYScsIHg9J0RpYScpK3NjYWxlX3lfY29udGludW91cyh0cmFucz0naWRlbnRpdHknKQpgYGAKCgojIyBNw6lkaWFzIG3Ds3ZlaXMgcG9yIERhdGEKYGBge3IgZWNobz1GQUxTRX0KY2kgPC0gZ2dwbG90KGRhZG9zLCBhZXMoZGF0YSwgY29uZmlybWFkb3Nfbm92b3NfbWE3KSkrZ2VvbV9wYXRoKCkrdGhlbWVfbGluZWRyYXcoKQpjaQoKY2kgPC0gZ2dwbG90KGRhZG9zLCBhZXMoZGF0YSwgY29uZmlybWFkb3Nfbm92b3NfYXJzbm9ydGVfbWE3KSkrZ2VvbV9wYXRoKCkrdGhlbWVfbGluZWRyYXcoKQpjaQoKY2kgPC0gZ2dwbG90KGRhZG9zKStnZW9tX3BhdGgoYWVzKGRhdGEsIGNvbmZpcm1hZG9zX25vdm9zX2Fyc2x2dF9tYTcpLCBjb2xvcj00KStnZW9tX3BhdGgoYWVzKGRhdGEsIGNvbmZpcm1hZG9zX25vdm9zX2Fyc2x2dF9tYTE0KSwgY29sb3I9MikrdGhlbWVfbGluZWRyYXcoKQpjaStjb29yZF9jYXJ0ZXNpYW4oKQoKCmNpIDwtIGdncGxvdCh0YWlsKGRhZG9zLCAzMCkpK2dlb21fcGF0aChhZXMoZGF0YSwgY29uZmlybWFkb3Nfbm92b3NfYXJzbHZ0X21hNyksIGNvbG9yPTQpK2dlb21fcGF0aChhZXMoZGF0YSwgY29uZmlybWFkb3Nfbm92b3NfYXJzbHZ0X21hMTQpLCBjb2xvcj0yKStnZW9tX3BvaW50KGFlcyhkYXRhLCBjb25maXJtYWRvc19hcnNsdnRfbm92b3MpKSt0aGVtZV9saW5lZHJhdygpCmNpK2Nvb3JkX2NhcnRlc2lhbigpCgpjaSA8LSBnZ3Bsb3QoZGFkb3MsIGFlcyhkYXRhLCBjb25maXJtYWRvc19ub3Zvc19hcnNjZW50cm9fbWE3KSkrZ2VvbV9wYXRoKCkrdGhlbWVfbGluZWRyYXcoKQpjaQpjaSA8LSBnZ3Bsb3QoZGFkb3MsIGFlcyhkYXRhLCBjb25maXJtYWRvc19ub3Zvc19hcnNhbGVudGVqb19tYTcpKStnZW9tX3BhdGgoKSt0aGVtZV9saW5lZHJhdygpCmNpCmNpIDwtIGdncGxvdChkYWRvcywgYWVzKGRhdGEsIGNvbmZpcm1hZG9zX25vdm9zX2Fyc2FsZ2FydmVfbWE3KSkrZ2VvbV9wYXRoKCkrdGhlbWVfbGluZWRyYXcoKQpjaQpgYGAKCiMgVmFjaW5hcyAKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CnZhY2luYXNfdXJsID0gJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9kc3NnLXB0L2NvdmlkMTlwdC1kYXRhL21hc3Rlci92YWNpbmFzLmNzdicKdmFjaW5hcyA8LSByZWFkX2Nzdih2YWNpbmFzX3VybCkKdmFjaW5hc1tbJ2RhdGEnXV0gPC0gYXMuRGF0ZSh2YWNpbmFzW1snZGF0YSddXSwnJWQtJW0tJVknICkKYGBgCgojIyBEYXRhIC0gYHIgdmFjaW5hc1tbJ2RhdGEnXV1bbnJvdyh2YWNpbmFzKV1gCgpgYGB7ciBlY2hvPUZBTFNFfQp2YyA8LSBnZ3Bsb3QodmFjaW5hcywgYWVzKGRhdGEpKQp2YyArIGdlb21fbGluZShhZXMoeT1kb3NlczFfbm92YXMpLCBjb2xvcj0yKSArIGdlb21fbGluZShhZXMoeT1kb3NlczJfbm92YXMpLCBjb2xvcj00KSt0aGVtZV9saW5lZHJhdygpCmBgYAoKCgpgYGB7ciBlY2hvPUZBTFNFfQp2YyA8LSBnZ3Bsb3QodmFjaW5hcywgYWVzKGRvc2VzMV9ub3Zhcyxkb3NlczJfbm92YXMpKQpzcyA8LSByZXAoMSxucm93KHZhY2luYXMpKQpzc1tucm93KHZhY2luYXMpXSA8LSAyCnZjICsgZ2VvbV9wYXRoKCkrZ2VvbV9wb2ludChzaXplPXNzLCBjb2xvcj1zcykrdGhlbWVfbGluZWRyYXcoKStjb29yZF9lcXVhbCgpCmBgYApgYGB7cn0KdmMgPC0gZ2dwbG90KHZhY2luYXMsIGFlcyhkb3NlczEsIGRvc2VzMikpCnZjIDwtIHZjICsgZ2VvbV9wYXRoKCkrdGhlbWVfbWluaW1hbCgpCnZjICtnZW9tX3BvaW50KCkrbGFicyh0aXRsZT0iTi4gRG9zZXMgQWRtaW5pc3RyYWRhcyBUb3RhaXMiKQp2YyArZ2VvbV9wb2ludChhZXMoeD0xMDAwMDAwMCx5PTEwMDAwMDAwKSwgY29sb3I9Miwgc2l6ZT0xMCwgc2hhcGU9J2Nyb3NzJykrbGFicyh0aXRsZT0iTi4gRG9zZXMgQWRtaW5pc3RyYWRhcyB2cyBUQVJHRVQiKQpgYGAKYGBge3J9CmRhZG9zJGNvbmZpcm1hZG9zXzgwX3BsdXNfYWxsX25vdm9zIDwtIGRhZG9zJGNvbmZpcm1hZG9zXzgwX3BsdXNfbSArIGRhZG9zJGNvbmZpcm1hZG9zXzgwX3BsdXNfZgpkYWRvcyRjb25maXJtYWRvc184MF9wbHVzX2FsbF9ub3ZvcyA8LSBjKDAsIGRpZmYoZGFkb3MkY29uZmlybWFkb3NfODBfcGx1c19hbGxfbm92b3MpKQpvbGQgPC0gZ2dwbG90KGRhZG9zLCBhZXMoZGF0YSxjb25maXJtYWRvc184MF9wbHVzX2FsbF9ub3ZvcykpCm9sZCtnZW9tX3BhdGgoKSt0aGVtZV9taW5pbWFsKCkrbGFicyh0aXRsZSA9ICdOb3ZvcyBjYXNvcyArODAgYW5vcycpCgpkYWRvcyRvYml0b3NfODBfcGx1cyA8LSBjKDAsIGRpZmYoZGFkb3Mkb2JpdG9zXzgwX3BsdXNfZiArIGRhZG9zJG9iaXRvc184MF9wbHVzX20pKQpkYWRvcyRyYWNpb184MF9wbHVzIDwtICAoZGFkb3Mkb2JpdG9zXzgwX3BsdXMgLyBkYWRvcyRjb25maXJtYWRvc184MF9wbHVzX2FsbF9ub3ZvcykKCm5wIDwtIGdncGxvdCh0YWlsKGRhZG9zLCAxMjApLCBhZXMoZGF0YSwgcmFjaW9fODBfcGx1cykpK2dlb21fcGF0aCgpCm5wK3RoZW1lX21pbmltYWwoKQpjb2VmIDwtIDUwCmRmMiA8LSBzdWJzZXQoZGFkb3MsZGFkb3MkZGF0YT49dmFjaW5hcyRkYXRhWzFdKQpwbCA8LSBnZ3Bsb3QoZGYyLCBhZXMoZGF0YSwgY29uZmlybWFkb3NfODBfcGx1c19hbGxfbm92b3MpKStsYWJzKHRpdGxlPSdOb3ZvcyBDYXNvcyArODAnKQpwbCt0aGVtZV9taW5pbWFsKCkrZ2VvbV9wb2ludCgpK2dlb21fcGF0aCgpK3NjYWxlX3lfY29udGludW91cyhuYW1lPSc4MCsnLCBzZWMuYXhpcyA9IHNlY19heGlzKHRyYW5zPX4uKmNvZWYsbmFtZT0nVmFjaW5hw6fDo28gRG9zZSAxICh0b3RhaXMpJykpCgpjY2YoZGFkb3MkY29uZmlybWFkb3NfODBfcGx1c19hbGxfbm92b3MsIGRhZG9zJG9iaXRvc184MF9wbHVzLCBuYS5hY3Rpb249bmEucGFzcykKYGBgCgoKYGBge3J9CmRhZG9zJGNvbmZpcm1hZG9zXzcwXzc5X2FsbF9ub3ZvcyA8LSBkYWRvcyRjb25maXJtYWRvc183MF83OV9tICsgZGFkb3MkY29uZmlybWFkb3NfNzBfNzlfZgpkYWRvcyRjb25maXJtYWRvc183MF83OV9hbGxfbm92b3MgPC0gYygwLCBkaWZmKGRhZG9zJGNvbmZpcm1hZG9zXzcwXzc5X2FsbF9ub3ZvcykpCm9sZCA8LSBnZ3Bsb3QoZGFkb3MsIGFlcyhkYXRhLGNvbmZpcm1hZG9zXzcwXzc5X2FsbF9ub3ZvcykpCm9sZCtnZW9tX3BhdGgoKSt0aGVtZV9taW5pbWFsKCkrbGFicyh0aXRsZSA9ICdOb3ZvcyBjYXNvcyA3MC03OSBhbm9zJykKCmRhZG9zJG9iaXRvc183MF83OV9ub3ZvcyA8LSBjKDAsIGRpZmYoZGFkb3Mkb2JpdG9zXzcwXzc5X2YgKyBkYWRvcyRvYml0b3NfNzBfNzlfbSkpCmRhZG9zJHJhY2lvXzcwXzc5IDwtIGRhZG9zJG9iaXRvc183MF83OV9ub3ZvcyAvIGRhZG9zJGNvbmZpcm1hZG9zXzcwXzc5X2FsbF9ub3ZvcwoKbnAgPC0gZ2dwbG90KHRhaWwoZGFkb3MsIDEyMCksIGFlcyhkYXRhLCByYWNpb183MF83OSkpK2dlb21fcGF0aCgpCm5wK3RoZW1lX21pbmltYWwoKQpgYGAKYGBgCgoKYGBge3J9CnBsb3QoZGFkb3MkZGF0YSxkYWRvcyRjb25maXJtYWRvc19ub3Zvcy9kYWRvcyRhdGl2b3MsIGxvZz0ieSIsIHR5cGU9J2wnKQoKYGBgCgojIyBWYW1vcyB0ZW50YXIgZmF6ZXIgdW0gUENBCmBgYHtyfQpzdW1tYXJ5KGRhZG9zKQpkYWRvcy5wY2EgPC0gcHJjb21wKG5hLm9taXQoZGFkb3NbLGMoMTIsMTUsMTYsMTcsMTkpXSksIGNlbnRlcj1UUlVFLCBzY2FsZS49VFJVRSkKc3VtbWFyeShkYWRvcy5wY2EpCmJpcGxvdChkYWRvcy5wY2EpCmBgYAoK