Introdução
A vacinação contra o vírus SARS-CoV-2, causadora do covid-19, está avançando em todo o mundo. Embora esse avanço não esteja acontecendo de forma igualitária para todos os lugares, como podemos ver abaixo:


Olhando para cada continente vemos na maioria uma queda nas mortes diárias em relação ao aumento da vacinação, porém isso não ocorre no continente africano. Também vemos que em média o continente africano foi o que menos vacinou a população, tendo em vista que a vacinação contra o SARS-CoV-2 é a única forma de acabar com a pandemia, ter um continente com uma baixa porcentagem de vacinados é um cenário preocupante para todo o planeta.
Sabendo disso, podemos ver que nos países onde a maioria da população está vacinada ocorreu uma diminuição nas mortes por covid-19. Com isso utilizando dados disponibilizados pelo Our World in Data aqui vamos tentar entender a influência da porcentagem da população vacinada com pelo menos 1 dose no número de mortes diárias por milhão de habitantes, comparando o Brasil com Portugal que é atualmente (9 de outubro de 2021) o país com a maior porcentagem da população vacinada no mundo.
Dados
Os dados utilizados são coletas diárias das informações de diversos países sobre o covid. Filtramos os dados para analisar somente Portugal e Brasil, as variáveis utilizadas nas análises são as seguintes:
- date - data de quando os dados foram coletados
- location - o país de onde os dados são
- people_vaccinated_per_hundred - porcentagem da população vacinada de um país até aquela data com pelo menos 1 dose
- new_deaths_per_million - número de mortes diárias por milhão de habitantes
Explorando os dados
Em ambos os países existe uma concentração de dias com a porcentagem da vacinação próxima do 0, isso mostra o quanto a vacinação demorou a ter um ritmo mais acelerado, considerando esses muitos dias com uma porcentagem baixa.
Em relação a distribuição do número de mortes diárias por milhão, vemos que Portugal tem uma concentração maior em valores próximos de 0 e o Brasil em valores próximo de 5. Considerando as estimativas do tamanho da população brasileira de 212 milhões de habitantes, essa concentração nos valores próximos a 5 significa uma concentração por volta de 1060 mortes diárias. Portugal por sua vez tem valores extremos bem maiores de mortes por milhão de habitantes do que o Brasil.



Esses últimos 3 gráficos mostram os valores da vacinação e das mortes diárias em relação à data e também relaciona a vacinação com o número de mortes.
Influência da vacinação no número de mortes diárias
Como foi dito anteriormente a vacinação contra o covid-19 é a única forma de acabar com a pandemia e consequentemente acabar com as mortes por covid-19. Tendo em vista essa relação da vacinação com o número de mortes, criamos um modelo estatístico de regressão para calcular o número de morte diária por milhão de habitantes, baseado na porcentagem da população vacinada com pelo menos 1 dose.
Brasil
Utilizando os dados do Brasil chegamos nos coeficientes acima que conseguem explicar 20% da variável mortes diárias por milhão de habitantes. A seguinte fórmula pode ser construída a partir dos coeficientes:
\(mortes\_por\_milhão = 9.24 - (0.08 * porcentagem\_vacinada)\)
Essa fórmula nos mostra que a cada 1% a mais da população vacinada conseguimos diminuir as mortes por milhão no Brasil em 0.08. Como a população brasileira é de aproximadamente 212 mihões de habitantes, temos um decréscimo de 17 mortes em valores absolutos.
Abaixo, podemos ver os dados reais das mortes em relação a vacinação e os dados preditos pelo modelo representados pela linha vermelha.

Portugal
Agora utilizando os dados de Portugal, chegamos nos coeficientes acima que conseguem explicar 25% da variável mortes diárias por milhão de habitantes. A seguinte fórmula pode ser construída a partir dos coeficientes:
\(mortes\_por\_milhão = 7.71 - (0.11 * porcentagem\_vacinada)\)
Essa fórmula nos mostra que a cada 1% a mais da população vacinada conseguimos diminuir as mortes por milhão em Portugal em 0.11. Como a população portuguesa é de aproximadamente 10 mihões de habitantes, temos um decréscimo de 1 morte em valores absolutos. Comparado com o Brasil que consegue diminuir 17 mortes, parece que a vacinação em Portugal não está sendo efetiva, mas vamos analisar quais são os dados preditos por esse modelo para ter uma ideia mais ampla dessa comparação.
Com 1% da população vacinada Portugal teria 76 mortes diárias e baseado nesse modelo a cada 1% a mais da população vacinada diminuiria 1 morte, ou seja, com 76% da população vacinada Portugal zeraria o número de mortes.
Agora olhando para o modelo criado para o Brasil, temos que com 1% da população vacinada o Brasil teria 1941 mortes diárias, ou seja, baseado nesse modelo que afirma que a cada 1% a mais da população vacinada diminuiria 17 mortes, com 100% da população vacinada com 1 dose o Brasil ainda teria 262 mortes diárias.
Abaixo podemos ver os dados reais das mortes em relação a vacinação e os dados preditos pelo modelo, representados pela linha vermelha.

VACINA SIM
LS0tCnRpdGxlOiAiSW5mbHXDqm5jaWEgZGEgdmFjaW5hw6fDo28gY29udHJhIG8gY292aWQgbm8gbsO6bWVybyBkZSBtb3J0ZXMgZGnDoXJpYXM6IEJyYXNpbCB4IFBvcnR1Z2FsIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgdG9jX2Zsb2F0OiB5ZXMKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkoaGVyZSkKbGlicmFyeShjbHVzdGVyKQpsaWJyYXJ5KHBsb3RseSkKbGlicmFyeSh2aXJpZGlzKQpsaWJyYXJ5KG9wZW5pbnRybykKbGlicmFyeShtb2RlbHIpCmxpYnJhcnkodGlkeW1vZGVscykKbGlicmFyeSh0aWR5cikKbGlicmFyeShwbG90bHkpCmBgYAoKYGBge3IgcmVhZCwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KZGFkb3NfYnJ1dG9zID0gcmVhZF9jc3YoCiAgICBoZXJlOjpoZXJlKCJkYXRhL293aWQtY292aWQtZGF0YS5jc3YiKQopCmBgYAoKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KZGFkb3MgPSBkYWRvc19icnV0b3MgJT4lIAogIGZpbHRlcihsb2NhdGlvbiA9PSAiQnJhemlsIiB8IGxvY2F0aW9uID09ICJQb3J0dWdhbCIpICU+JSAKICBzZWxlY3QoLWV4Y2Vzc19tb3J0YWxpdHksIC1leGNlc3NfbW9ydGFsaXR5X2N1bXVsYXRpdmUsIC1leGNlc3NfbW9ydGFsaXR5X2N1bXVsYXRpdmVfYWJzb2x1dGUsIC1leGNlc3NfbW9ydGFsaXR5X2N1bXVsYXRpdmVfcGVyX21pbGxpb24sIC1pY3VfcGF0aWVudHMsIC1pY3VfcGF0aWVudHNfcGVyX21pbGxpb24sIC1ob3NwX3BhdGllbnRzLCAtaG9zcF9wYXRpZW50c19wZXJfbWlsbGlvbiwgLXdlZWtseV9pY3VfYWRtaXNzaW9ucywgLXdlZWtseV9pY3VfYWRtaXNzaW9uc19wZXJfbWlsbGlvbiwgLXdlZWtseV9ob3NwX2FkbWlzc2lvbnMsIC13ZWVrbHlfaG9zcF9hZG1pc3Npb25zX3Blcl9taWxsaW9uLCAtcmVwcm9kdWN0aW9uX3JhdGUsIC10b3RhbF90ZXN0cywgLW5ld190ZXN0cywgLXRvdGFsX3Rlc3RzX3Blcl90aG91c2FuZCwgLW5ld190ZXN0c19wZXJfdGhvdXNhbmQsIC1uZXdfdGVzdHNfc21vb3RoZWQsIC1uZXdfdGVzdHNfc21vb3RoZWRfcGVyX3Rob3VzYW5kLCAtcG9zaXRpdmVfcmF0ZSwgLXRlc3RzX3Blcl9jYXNlLCAtdGVzdHNfdW5pdHMpCmBgYAoKIyMgSW50cm9kdcOnw6NvCgpBIHZhY2luYcOnw6NvIGNvbnRyYSBvIHbDrXJ1cyBTQVJTLUNvVi0yLCBjYXVzYWRvcmEgZG8gY292aWQtMTksIGVzdMOhIGF2YW7Dp2FuZG8gZW0gdG9kbyBvIG11bmRvLiBFbWJvcmEgZXNzZSBhdmFuw6dvIG7Do28gZXN0ZWphIGFjb250ZWNlbmRvIGRlIGZvcm1hIGlndWFsaXTDoXJpYSBwYXJhIHRvZG9zIG9zIGx1Z2FyZXMsIGNvbW8gcG9kZW1vcyB2ZXIgYWJhaXhvOgoKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KbWVkaWEgPSBkYWRvc19icnV0b3MgJT4lIAogIGZpbHRlcighaXMubmEocGVvcGxlX2Z1bGx5X3ZhY2NpbmF0ZWRfcGVyX2h1bmRyZWQpICYgIWlzLm5hKGNvbnRpbmVudCkpICU+JSAKICBncm91cF9ieShjb250aW5lbnQsIGRhdGUpICU+JSAKICBzdW1tYXJpc2UodmFjaW5hZG9zID0gbWVhbihwZW9wbGVfZnVsbHlfdmFjY2luYXRlZF9wZXJfaHVuZHJlZCksCiAgICAgICAgICAgIG1vcnRlcyA9IG1lYW4obmV3X2RlYXRoc19wZXJfbWlsbGlvbikpCmBgYAoKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgcmVzdWx0cz0naGlkZScsZmlnLmtlZXA9J2FsbCd9Cm1lZGlhICU+JSAKICBnZ3Bsb3QoYWVzKHggPSBkYXRlLCB5ID0gdmFjaW5hZG9zLCBjb2xvciA9IGNvbnRpbmVudCkpICsKICBnZW9tX3Ntb290aChuYS5ybSA9IFRSVUUpICArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpICsKICBsYWJzKAogICAgeSA9ICJNw6lkaWEgZGnDoXJpYXMgZGUgcGVzc29hcyB0b3RhbG1lbnRlIHZhY2luYWRhcyIsCiAgICB4ID0gIlF1YW5kbyIsCiAgICBjb2xvciA9ICJDb250aW5lbnRlIiwKICAgIHRpdGxlID0gIk3DqWRpYSBkacOhcmlhIGRhIHBvcmNlbnRhZ2VtIGRhIHBvcHVsYcOnw6NvIHZhY2luYWRhIGRlIGNhZGEgY29udGluZW50ZSIKICApCmBgYAoKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgcmVzdWx0cz0naGlkZScsZmlnLmtlZXA9J2FsbCd9Cm1lZGlhICU+JSAKICBnZ3Bsb3QoYWVzKHggPSB2YWNpbmFkb3MsIHkgPSBtb3J0ZXMpKSArCiAgZ2VvbV9zbW9vdGgobmEucm0gPSBUUlVFKSAgKwogIGZhY2V0X3dyYXAofmNvbnRpbmVudCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSArCiAgbGFicygKICAgIHggPSAiTcOpZGlhIGRpw6FyaWFzIGRlIHBlc3NvYXMgdG90YWxtZW50ZSB2YWNpbmFkYXMiLAogICAgeSA9ICJNw6lkaWEgZGnDoXJpYXMgZGUgbW9ydGUgcG9yIG1pbGjDo28gZGUgcGVzc29hcyIsCiAgICBjb2xvciA9ICJDb250aW5lbnRlIiwKICAgIHRpdGxlID0gIk1vcnRlcyBkacOhcmlhcyBwb3IgbWlsaMOjbyBkZSBoYWJpdGFudGVzIGVtIHJlbGHDp8OjbyBhIHBvcmNlbnRhZ2VtIGRhIHBvcHVsYcOnw6NvIHZhY2luYWRhIgogICkKYGBgCgpPbGhhbmRvIHBhcmEgY2FkYSBjb250aW5lbnRlIHZlbW9zIG5hIG1haW9yaWEgdW1hIHF1ZWRhIG5hcyBtb3J0ZXMgZGnDoXJpYXMgZW0gcmVsYcOnw6NvIGFvIGF1bWVudG8gZGEgdmFjaW5hw6fDo28sIHBvcsOpbSBpc3NvIG7Do28gb2NvcnJlIG5vIGNvbnRpbmVudGUgYWZyaWNhbm8uIFRhbWLDqW0gdmVtb3MgcXVlIGVtIG3DqWRpYSBvIGNvbnRpbmVudGUgYWZyaWNhbm8gZm9pIG8gcXVlIG1lbm9zIHZhY2lub3UgYSBwb3B1bGHDp8OjbywgdGVuZG8gZW0gdmlzdGEgcXVlIGEgdmFjaW5hw6fDo28gY29udHJhIG8gU0FSUy1Db1YtMiDDqSBhIMO6bmljYSBmb3JtYSBkZSBhY2FiYXIgY29tIGEgcGFuZGVtaWEsIHRlciB1bSBjb250aW5lbnRlIGNvbSB1bWEgYmFpeGEgcG9yY2VudGFnZW0gZGUgdmFjaW5hZG9zIMOpIHVtIGNlbsOhcmlvIHByZW9jdXBhbnRlIHBhcmEgdG9kbyBvIHBsYW5ldGEuCgpTYWJlbmRvIGRpc3NvLCBwb2RlbW9zIHZlciBxdWUgbm9zIHBhw61zZXMgb25kZSBhIG1haW9yaWEgZGEgcG9wdWxhw6fDo28gZXN0w6EgdmFjaW5hZGEgb2NvcnJldSB1bWEgZGltaW51acOnw6NvIG5hcyBtb3J0ZXMgcG9yIGNvdmlkLTE5LiBDb20gaXNzbyB1dGlsaXphbmRvIGRhZG9zIGRpc3BvbmliaWxpemFkb3MgcGVsbyBPdXIgV29ybGQgaW4gRGF0YSBbYXF1aV0oaHR0cHM6Ly9naXRodWIuY29tL293aWQvY292aWQtMTktZGF0YS90cmVlL21hc3Rlci9wdWJsaWMvZGF0YSkgdmFtb3MgdGVudGFyIGVudGVuZGVyIGEgaW5mbHXDqm5jaWEgZGEgcG9yY2VudGFnZW0gZGEgcG9wdWxhw6fDo28gdmFjaW5hZGEgY29tIHBlbG8gbWVub3MgMSBkb3NlIG5vIG7Dum1lcm8gZGUgbW9ydGVzIGRpw6FyaWFzIHBvciBtaWxow6NvIGRlIGhhYml0YW50ZXMsIGNvbXBhcmFuZG8gbyBCcmFzaWwgY29tIFBvcnR1Z2FsIHF1ZSDDqSBhdHVhbG1lbnRlICg5IGRlIG91dHVicm8gZGUgMjAyMSkgbyBwYcOtcyBjb20gYSBtYWlvciBwb3JjZW50YWdlbSBkYSBwb3B1bGHDp8OjbyB2YWNpbmFkYSBubyBtdW5kby4KCiMjIERhZG9zCgpPcyBkYWRvcyB1dGlsaXphZG9zIHPDo28gY29sZXRhcyBkacOhcmlhcyBkYXMgaW5mb3JtYcOnw7VlcyBkZSBkaXZlcnNvcyBwYcOtc2VzIHNvYnJlIG8gY292aWQuIEZpbHRyYW1vcyBvcyBkYWRvcyBwYXJhIGFuYWxpc2FyIHNvbWVudGUgUG9ydHVnYWwgZSBCcmFzaWwsIGFzIHZhcmnDoXZlaXMgdXRpbGl6YWRhcyBuYXMgYW7DoWxpc2VzIHPDo28gYXMgc2VndWludGVzOgoKIC0gKioqZGF0ZSoqKiAtIGRhdGEgZGUgcXVhbmRvIG9zIGRhZG9zIGZvcmFtIGNvbGV0YWRvcwogLSAqKipsb2NhdGlvbioqKiAtIG8gcGHDrXMgZGUgb25kZSBvcyBkYWRvcyBzw6NvCiAtICoqKnBlb3BsZV92YWNjaW5hdGVkX3Blcl9odW5kcmVkKioqIC0gcG9yY2VudGFnZW0gZGEgcG9wdWxhw6fDo28gdmFjaW5hZGEgZGUgdW0gcGHDrXMgYXTDqSBhcXVlbGEgZGF0YSBjb20gcGVsbyBtZW5vcyAxIGRvc2UKIC0gKioqbmV3X2RlYXRoc19wZXJfbWlsbGlvbioqKiAtIG7Dum1lcm8gZGUgbW9ydGVzIGRpw6FyaWFzIHBvciBtaWxow6NvIGRlIGhhYml0YW50ZXMKIAojIyBFeHBsb3JhbmRvIG9zIGRhZG9zIAoKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KZ2dwbG90bHkoZGFkb3MgJT4lIAogIGdncGxvdChhZXMoeCA9IHBlb3BsZV92YWNjaW5hdGVkX3Blcl9odW5kcmVkLCB5ID0gbG9jYXRpb24sIHRleHQgPSBwYXN0ZSgKICAgICAgICAiPGI+UG9yY2VudGFnZW06PC9iPiIsIHBlb3BsZV92YWNjaW5hdGVkX3Blcl9odW5kcmVkLAogICAgICAgICJcbjxiPkRhdGE6PC9iPiIsIGRhdGUpKSkgKwogIGdlb21faml0dGVyKGFscGhhID0gMC40LCBzaXplID0gMiwgaGVpZ2h0ID0gLjEsIGNvbG91ciA9ICJkYXJrYmx1ZSIpICsKICBsYWJzKAogICAgeCA9ICJQb3JjZW50YWdlbSBkYSBwb3B1bGHDp8OjbyB2YWNpbmFkYSIsCiAgICB5ID0gIiIsCiAgICB0aXRsZSA9ICJEaXN0cmlidWnDp8OjbyBkYSBwb3JjZW50YWdlbSBkYSBwb3B1bGHDp8OjbyB2YWNpbmFkYSBjb20gcGVsbyBtZW5vcyAxIGRvc2UiCiAgKSwgdG9vbHRpcCA9ICJ0ZXh0Iiwgd2lkdGggPSA4MDApCmBgYAoKRW0gYW1ib3Mgb3MgcGHDrXNlcyBleGlzdGUgdW1hIGNvbmNlbnRyYcOnw6NvIGRlIGRpYXMgY29tIGEgcG9yY2VudGFnZW0gZGEgdmFjaW5hw6fDo28gcHLDs3hpbWEgZG8gMCwgaXNzbyBtb3N0cmEgbyBxdWFudG8gYSB2YWNpbmHDp8OjbyBkZW1vcm91IGEgdGVyIHVtIHJpdG1vIG1haXMgYWNlbGVyYWRvLCBjb25zaWRlcmFuZG8gZXNzZXMgbXVpdG9zIGRpYXMgY29tIHVtYSBwb3JjZW50YWdlbSBiYWl4YS4KCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmdncGxvdGx5KGRhZG9zICU+JSAKICBmaWx0ZXIoIWlzLm5hKG5ld19kZWF0aHNfcGVyX21pbGxpb24pKSAlPiUgCiAgZ2dwbG90KGFlcyh4ID0gbmV3X2RlYXRoc19wZXJfbWlsbGlvbiwgeSA9IGxvY2F0aW9uLCB0ZXh0ID0gcGFzdGUoCiAgICAgICAgbmV3X2RlYXRoc19wZXJfbWlsbGlvbiwgIm1vcnRlcyBkacOhcmlhcyBwb3IgbWlsaMOjbyBkZSBoYWJpdGFudGVzIiwKICAgICAgICAiXG48Yj5EYXRhOjwvYj4iLCBkYXRlKSkpICsKICBnZW9tX2ppdHRlcihhbHBoYSA9IDAuNCwgc2l6ZSA9IDIsIGhlaWdodCA9IC40KSArCiAgbGFicygKICAgIHggPSAiTW9ydGVzIiwKICAgIHkgPSAiIiwKICAgIHRpdGxlID0gIk1vcnRlcyBkacOhcmlhcyBwb3IgbWlsaMOjbyBkZSBoYWJpdGFudGVzIgogICksIHRvb2x0aXAgPSAidGV4dCIsIHdpZHRoID0gODAwKQpgYGAKCkVtIHJlbGHDp8OjbyBhIGRpc3RyaWJ1acOnw6NvIGRvIG7Dum1lcm8gZGUgbW9ydGVzIGRpw6FyaWFzIHBvciBtaWxow6NvLCB2ZW1vcyBxdWUgUG9ydHVnYWwgdGVtIHVtYSBjb25jZW50cmHDp8OjbyBtYWlvciBlbSB2YWxvcmVzIHByw7N4aW1vcyBkZSAwIGUgbyBCcmFzaWwgZW0gdmFsb3JlcyBwcsOzeGltbyBkZSA1LiBDb25zaWRlcmFuZG8gYXMgZXN0aW1hdGl2YXMgZG8gdGFtYW5obyBkYSBwb3B1bGHDp8OjbyBicmFzaWxlaXJhIGRlIDIxMiBtaWxow7VlcyBkZSBoYWJpdGFudGVzLCBlc3NhIGNvbmNlbnRyYcOnw6NvIG5vcyB2YWxvcmVzIHByw7N4aW1vcyBhIDUgc2lnbmlmaWNhIHVtYSBjb25jZW50cmHDp8OjbyBwb3Igdm9sdGEgZGUgMTA2MCBtb3J0ZXMgZGnDoXJpYXMuIFBvcnR1Z2FsIHBvciBzdWEgdmV6IHRlbSB2YWxvcmVzIGV4dHJlbW9zIGJlbSBtYWlvcmVzIGRlIG1vcnRlcyBwb3IgbWlsaMOjbyBkZSBoYWJpdGFudGVzIGRvIHF1ZSBvIEJyYXNpbC4gCgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCByZXN1bHRzPSdoaWRlJyxmaWcua2VlcD0nYWxsJ30KZGFkb3MgJT4lIAogIGZpbHRlcihkYXRlID4gIjIwMjEtMDEtMDEiKSAlPiUgCiAgZ2dwbG90KGFlcyh4PWRhdGUsIHkgPSBwZW9wbGVfdmFjY2luYXRlZF9wZXJfaHVuZHJlZCwgY29sb3IgPSBsb2NhdGlvbikpICsKICBnZW9tX3Ntb290aCgpICsKICBsYWJzKAogICAgeCA9ICJEYXRhIiwKICAgIHkgPSAiUG9yY2VudGFnZW0gZGEgcG9wdWxhw6fDo28gdmFjaW5hZGEiLAogICAgdGl0bGUgPSAiUG9yY2VudGFnZW0gZGEgcG9wdWxhw6fDo28gdmFjaW5hZGEgZHVyYW50ZSBvIGFubyBjb20gcGVsbyBtZW5vcyAxIGRvc2UiLAogICAgY29sb3IgPSAiUGHDrXMiCiAgKQpgYGAKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIHJlc3VsdHM9J2hpZGUnLGZpZy5rZWVwPSdhbGwnfQpkYWRvcyAlPiUgCiAgZ2dwbG90KGFlcyh4ID0gZGF0ZSAseSA9IG5ld19kZWF0aHNfcGVyX21pbGxpb24sIGNvbG9yID0gbG9jYXRpb24pKSArCiAgZ2VvbV9zbW9vdGgoKSArCiAgbGFicygKICAgIHggPSAiRGF0YSIsCiAgICB5ID0gIk1vcnRlcyBkacOhcmlhcyIsCiAgICB0aXRsZSA9ICJNb3J0ZXMgZGnDoXJpYXMgcG9yIG1pbGjDo28gZGUgaGFiaXRhbnRlcyBkdXJhbnRlIGEgcGFuZGVtaWEiLAogICAgY29sb3IgPSAiUGHDrXMiCiAgKQpgYGAKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIHJlc3VsdHM9J2hpZGUnLGZpZy5rZWVwPSdhbGwnfQpkYWRvcyAlPiUgCiAgZ2dwbG90KGFlcyh4ID0gcGVvcGxlX3ZhY2NpbmF0ZWRfcGVyX2h1bmRyZWQsIHkgPSBuZXdfZGVhdGhzX3Blcl9taWxsaW9uLCBjb2xvciA9IGxvY2F0aW9uKSkgKwogIGdlb21fc21vb3RoKCkgKwogIGxhYnMoCiAgICB4ID0gIlBvcmNlbnRhZ2VtIGRhIHBvcHVsYcOnw6NvIHZhY2luYWRhIiwKICAgIHkgPSAiTW9ydGVzIGRpw6FyaWFzIiwKICAgIHRpdGxlID0gIk1vcnRlcyBkacOhcmlhcyBwb3IgbWlsaMOjbyBlbSByZWxhw6fDo28gYSBwb3JjZW50YWdlbSBkYSBwb3B1bGHDp8OjbyB2YWNpbmFkYSIsCiAgICBjb2xvciA9ICJQYcOtcyIKICApCmBgYAoKRXNzZXMgw7psdGltb3MgMyBncsOhZmljb3MgbW9zdHJhbSBvcyB2YWxvcmVzIGRhIHZhY2luYcOnw6NvIGUgZGFzIG1vcnRlcyBkacOhcmlhcyBlbSByZWxhw6fDo28gw6AgZGF0YSBlIHRhbWLDqW0gcmVsYWNpb25hIGEgdmFjaW5hw6fDo28gY29tIG8gbsO6bWVybyBkZSBtb3J0ZXMuIAoKIyMgSW5mbHXDqm5jaWEgZGEgdmFjaW5hw6fDo28gbm8gbsO6bWVybyBkZSBtb3J0ZXMgZGnDoXJpYXMKCkNvbW8gZm9pIGRpdG8gYW50ZXJpb3JtZW50ZSBhIHZhY2luYcOnw6NvIGNvbnRyYSBvIGNvdmlkLTE5IMOpIGEgw7puaWNhIGZvcm1hIGRlIGFjYWJhciBjb20gYSBwYW5kZW1pYSBlIGNvbnNlcXVlbnRlbWVudGUgYWNhYmFyIGNvbSBhcyBtb3J0ZXMgcG9yIGNvdmlkLTE5LiBUZW5kbyBlbSB2aXN0YSBlc3NhIHJlbGHDp8OjbyBkYSB2YWNpbmHDp8OjbyBjb20gbyBuw7ptZXJvIGRlIG1vcnRlcywgY3JpYW1vcyB1bSBtb2RlbG8gZXN0YXTDrXN0aWNvIGRlIHJlZ3Jlc3PDo28gcGFyYSBjYWxjdWxhciBvIG7Dum1lcm8gZGUgbW9ydGUgZGnDoXJpYSBwb3IgbWlsaMOjbyBkZSBoYWJpdGFudGVzLCBiYXNlYWRvIG5hIHBvcmNlbnRhZ2VtIGRhIHBvcHVsYcOnw6NvIHZhY2luYWRhIGNvbSBwZWxvIG1lbm9zIDEgZG9zZS4KCiMjIyBCcmFzaWwKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmRhZG9zX2JyYXppbCA9ICBkYWRvcyAlPiUgCiAgZmlsdGVyKGxvY2F0aW9uID09ICJCcmF6aWwiICYgcGVvcGxlX3ZhY2NpbmF0ZWQgPiAwICYgIWlzLm5hKG5ld19kZWF0aHNfcGVyX21pbGxpb24gJiAhaXMubmEocGVvcGxlX3ZhY2NpbmF0ZWRfcGVyX2h1bmRyZWQpICYgIWlzLm5hKG5ld19jYXNlc19wZXJfbWlsbGlvbikpKQpgYGAKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9Cm1vZDEgPC0gbG0obmV3X2RlYXRoc19wZXJfbWlsbGlvbiB+ICBwZW9wbGVfdmFjY2luYXRlZF9wZXJfaHVuZHJlZCwgCiAgICAgICAgICAgZGF0YSA9IGRhZG9zX2JyYXppbCkKYGBgCgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQp0aWR5KG1vZDEsIGNvbmYuaW50ID0gVCkKZ2xhbmNlKG1vZDEpIApgYGAKClV0aWxpemFuZG8gb3MgZGFkb3MgZG8gQnJhc2lsIGNoZWdhbW9zIG5vcyBjb2VmaWNpZW50ZXMgYWNpbWEgcXVlIGNvbnNlZ3VlbSBleHBsaWNhciAyMCUgZGEgdmFyacOhdmVsIG1vcnRlcyBkacOhcmlhcyBwb3IgbWlsaMOjbyBkZSBoYWJpdGFudGVzLiBBIHNlZ3VpbnRlIGbDs3JtdWxhIHBvZGUgc2VyIGNvbnN0cnXDrWRhIGEgcGFydGlyIGRvcyBjb2VmaWNpZW50ZXM6CgokbW9ydGVzXF9wb3JcX21pbGjDo28gPSA5LjI0IC0gKDAuMDggKiBwb3JjZW50YWdlbVxfdmFjaW5hZGEpJAoKRXNzYSBmw7NybXVsYSBub3MgbW9zdHJhIHF1ZSBhIGNhZGEgMSUgYSBtYWlzIGRhIHBvcHVsYcOnw6NvIHZhY2luYWRhIGNvbnNlZ3VpbW9zIGRpbWludWlyIGFzIG1vcnRlcyBwb3IgbWlsaMOjbyBubyBCcmFzaWwgZW0gMC4wOC4gQ29tbyBhIHBvcHVsYcOnw6NvIGJyYXNpbGVpcmEgw6kgZGUgYXByb3hpbWFkYW1lbnRlIDIxMiBtaWjDtWVzIGRlIGhhYml0YW50ZXMsIHRlbW9zIHVtIGRlY3LDqXNjaW1vIGRlIDE3IG1vcnRlcyBlbSB2YWxvcmVzIGFic29sdXRvcy4gCgpBYmFpeG8sIHBvZGVtb3MgdmVyIG9zIGRhZG9zIHJlYWlzIGRhcyBtb3J0ZXMgZW0gcmVsYcOnw6NvIGEgdmFjaW5hw6fDo28gZSBvcyBkYWRvcyBwcmVkaXRvcyBwZWxvIG1vZGVsbyByZXByZXNlbnRhZG9zIHBlbGEgbGluaGEgdmVybWVsaGEuCgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCByZXN1bHRzPSdoaWRlJyxmaWcua2VlcD0nYWxsJ30KbW9kMSAlPiUgCiAgYXVnbWVudChkYWRvc19icmF6aWwpICU+JSAKICBnZ3Bsb3QobWFwcGluZyA9IGFlcyh4ID0gcGVvcGxlX3ZhY2NpbmF0ZWRfcGVyX2h1bmRyZWQpKSArIAogIGdlb21fc21vb3RoKGFlcyh5ID0gbmV3X2RlYXRoc19wZXJfbWlsbGlvbikpICsgCiAgZ2VvbV9saW5lKGFlcyh5ID0gLmZpdHRlZCksIGNvbG91ciA9ICJyZWQiKSAgKwogIGxhYnMoCiAgICB4ID0gIlBvcmNlbnRhZ2VtIGRhIHBvcHVsYcOnw6NvIHZhY2luYWRhIiwKICAgIHkgPSAiTW9ydGVzIGRpw6FyaWFzIiwKICAgIHRpdGxlID0gIkJyYXNpbCAtIERhZG9zIHJlYWlzIChhenVsKSBYIERhZG9zIHByZWRpdG9zICh2ZXJtZWxoYSkiCiAgKQpgYGAKCiMjIyBQb3J0dWdhbAoKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KZGFkb3NfcG9ydHVnYWwgPSAgZGFkb3MgJT4lIAogIGZpbHRlcihsb2NhdGlvbiA9PSAiUG9ydHVnYWwiICYgcGVvcGxlX3ZhY2NpbmF0ZWQgPiAwICYgIWlzLm5hKG5ld19kZWF0aHNfcGVyX21pbGxpb24gJiAhaXMubmEocGVvcGxlX3ZhY2NpbmF0ZWRfcGVyX2h1bmRyZWQpICYgIWlzLm5hKG5ld19jYXNlc19wZXJfbWlsbGlvbikpKQpgYGAKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9Cm1vZDIgPC0gbG0obmV3X2RlYXRoc19wZXJfbWlsbGlvbiB+ICBwZW9wbGVfdmFjY2luYXRlZF9wZXJfaHVuZHJlZCwgCiAgICAgICAgICAgZGF0YSA9IGRhZG9zX3BvcnR1Z2FsKQpgYGAKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CnRpZHkobW9kMiwgY29uZi5pbnQgPSBUKQpnbGFuY2UobW9kMikgCmBgYAoKQWdvcmEgdXRpbGl6YW5kbyBvcyBkYWRvcyBkZSBQb3J0dWdhbCwgY2hlZ2Ftb3Mgbm9zIGNvZWZpY2llbnRlcyBhY2ltYSBxdWUgY29uc2VndWVtIGV4cGxpY2FyIDI1JSBkYSB2YXJpw6F2ZWwgbW9ydGVzIGRpw6FyaWFzIHBvciBtaWxow6NvIGRlIGhhYml0YW50ZXMuIEEgc2VndWludGUgZsOzcm11bGEgcG9kZSBzZXIgY29uc3RydcOtZGEgYSBwYXJ0aXIgZG9zIGNvZWZpY2llbnRlczoKCiRtb3J0ZXNcX3BvclxfbWlsaMOjbyA9IDcuNzEgLSAoMC4xMSAqIHBvcmNlbnRhZ2VtXF92YWNpbmFkYSkkCgpFc3NhIGbDs3JtdWxhIG5vcyBtb3N0cmEgcXVlIGEgY2FkYSAxJSBhIG1haXMgZGEgcG9wdWxhw6fDo28gdmFjaW5hZGEgY29uc2VndWltb3MgZGltaW51aXIgYXMgbW9ydGVzIHBvciBtaWxow6NvIGVtIFBvcnR1Z2FsIGVtIDAuMTEuIENvbW8gYSBwb3B1bGHDp8OjbyBwb3J0dWd1ZXNhIMOpIGRlIGFwcm94aW1hZGFtZW50ZSAxMCBtaWjDtWVzIGRlIGhhYml0YW50ZXMsIHRlbW9zIHVtIGRlY3LDqXNjaW1vIGRlIDEgbW9ydGUgZW0gdmFsb3JlcyBhYnNvbHV0b3MuIENvbXBhcmFkbyBjb20gbyBCcmFzaWwgcXVlIGNvbnNlZ3VlIGRpbWludWlyIDE3IG1vcnRlcywgcGFyZWNlIHF1ZSBhIHZhY2luYcOnw6NvIGVtIFBvcnR1Z2FsIG7Do28gZXN0w6Egc2VuZG8gZWZldGl2YSwgbWFzIHZhbW9zIGFuYWxpc2FyIHF1YWlzIHPDo28gb3MgZGFkb3MgcHJlZGl0b3MgcG9yIGVzc2UgbW9kZWxvIHBhcmEgdGVyIHVtYSBpZGVpYSBtYWlzIGFtcGxhIGRlc3NhIGNvbXBhcmHDp8Ojby4KCkNvbSAxJSBkYSBwb3B1bGHDp8OjbyB2YWNpbmFkYSBQb3J0dWdhbCB0ZXJpYSA3NiBtb3J0ZXMgZGnDoXJpYXMgZSBiYXNlYWRvIG5lc3NlIG1vZGVsbyBhIGNhZGEgMSUgYSBtYWlzIGRhIHBvcHVsYcOnw6NvIHZhY2luYWRhIGRpbWludWlyaWEgMSBtb3J0ZSwgb3Ugc2VqYSwgY29tIDc2JSBkYSBwb3B1bGHDp8OjbyB2YWNpbmFkYSBQb3J0dWdhbCB6ZXJhcmlhIG8gbsO6bWVybyBkZSBtb3J0ZXMuCgpBZ29yYSBvbGhhbmRvIHBhcmEgbyBtb2RlbG8gY3JpYWRvIHBhcmEgbyBCcmFzaWwsIHRlbW9zIHF1ZSBjb20gMSUgZGEgcG9wdWxhw6fDo28gdmFjaW5hZGEgbyBCcmFzaWwgdGVyaWEgMTk0MSBtb3J0ZXMgZGnDoXJpYXMsIG91IHNlamEsIGJhc2VhZG8gbmVzc2UgbW9kZWxvIHF1ZSBhZmlybWEgcXVlIGEgY2FkYSAxJSBhIG1haXMgZGEgcG9wdWxhw6fDo28gdmFjaW5hZGEgZGltaW51aXJpYSAxNyBtb3J0ZXMsIGNvbSAxMDAlIGRhIHBvcHVsYcOnw6NvIHZhY2luYWRhIGNvbSAxIGRvc2UgbyBCcmFzaWwgYWluZGEgdGVyaWEgMjYyIG1vcnRlcyBkacOhcmlhcy4KCkFiYWl4byBwb2RlbW9zIHZlciBvcyBkYWRvcyByZWFpcyBkYXMgbW9ydGVzIGVtIHJlbGHDp8OjbyBhIHZhY2luYcOnw6NvIGUgb3MgZGFkb3MgcHJlZGl0b3MgcGVsbyBtb2RlbG8sIHJlcHJlc2VudGFkb3MgcGVsYSBsaW5oYSB2ZXJtZWxoYS4KCgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCByZXN1bHRzPSdoaWRlJyxmaWcua2VlcD0nYWxsJ30KbW9kMiAlPiUgCiAgYXVnbWVudChkYWRvc19wb3J0dWdhbCkgJT4lIAogIGdncGxvdChtYXBwaW5nID0gYWVzKHggPSBwZW9wbGVfdmFjY2luYXRlZF9wZXJfaHVuZHJlZCkpICsgCiAgZ2VvbV9zbW9vdGgoYWVzKHkgPSBuZXdfZGVhdGhzX3Blcl9taWxsaW9uKSkgKyAKICBnZW9tX2xpbmUoYWVzKHkgPSAuZml0dGVkKSwgY29sb3VyID0gInJlZCIpICAgKwogIGxhYnMoCiAgICB4ID0gIlBvcmNlbnRhZ2VtIGRhIHBvcHVsYcOnw6NvIHZhY2luYWRhIiwKICAgIHkgPSAiTW9ydGVzIGRpw6FyaWFzIiwKICAgIHRpdGxlID0gIlBvcnR1Z2FsIC0gRGFkb3MgcmVhaXMgKGF6dWwpIFggRGFkb3MgcHJlZGl0b3MgKHZlcm1lbGhhKSIKICApCmBgYAoKIyBWQUNJTkEgU0lN