Detalhes sobre os grupos
Ao bucar a média de retorno dos últimos 6 meses de alguns parceiros,
é possível perceber há grande variância.
Como exemplo, se no mês de maio a produção foi de R$50mil, e, no mês
de junho R$100mil, a série de retornos trará um aumento de 100%.
Este é fato que impossibilita traçar uma única política como campanha
(e.g. acrescimo de 10% no valor produzido).
A tabela abaixo apresenta os retornos de 5 parceiros, e a média no
período de fevereiro a junho.
Amostra - tendência de retornos por mês (2025)
| -11.21 |
151.30 |
-83.34 |
270.31 |
-85.74 |
48.264 |
| -30.40 |
275.10 |
-33.91 |
-44.54 |
73.22 |
47.894 |
| -79.49 |
457.05 |
-24.64 |
-19.24 |
5.28 |
67.792 |
| 95.34 |
-4.08 |
-35.74 |
-60.68 |
104.79 |
19.926 |
| -51.15 |
308.33 |
-77.22 |
-2.08 |
73.04 |
50.184 |
À esquerda, a linha representa o comportamento dos retornos de
produção dos parceiros v8; à direta, como deveriam ser para que fosse
possível capturar um padrão traçar uma campanha no formato de meta
percentual fixa.

Retornos reais
Os retornos reais, contudo, demonstram grande variância (de -90% à
3000%), e forma não lineare (sem padrão identificável e contínuo).
Mesmo tratando a não-linearidade, a grande variância dos retornos é
um impedimento ainda presente para se fixar apenas um limiar para todos
os parceiros.

[1] "Em escala real, a média é de 26.5 % e o desvio é de 149.73 %"
No caso dos perceiros da v8, considerando-se os retornos positivos,
pode-se afirmar que:
Usando o seguinte procedimento, podemos apurar que:
1 - Em aproximadamente 54% dos cacos, a média de retorno será maios
que 10%
2 - Em aproximadamente 50% dos casos, a média de retorno será maior
que 26,5%
3 - Em aproximadamente 16% dos casos, a média de retorno será maior
176.23%.
4 - Em aproximadamente 2,5% casos, a média de retorno será maior que
325.96%.
5 - Em aproximadamente 0.15% casos, a média de retorno será maior que
475.69%.
Sugestão para novas campanhas
Identificar grupos que tenham características diferentes em relação
ao valor produzido, e basear a campanha para o crescimento dentro do
grupo.

Os grupos são formados levando em consideração regiões de valores em
que há maior concentração de parceiros.
Por exemplo, no grupo 5, há parceiros entre 60mil e 250mil,
entretando, 50% deles estão entre 65mil e 130mil, sendo que, ainda mais
concentrado no valor de 90mil.
Isso significa que podemos atingir um maior número de parceiros,
dentro desta faixa, se mirarmos nos parceiros que produzem perto da
média, e, fazendo-os elevar o valor produzido.
Em resumo, estaremos estimulando a maior fração de parceiros dentro
desta faixa à buscar um valor que, de fato, representa um desafio, mas,
é bastante provável.
Características dos grupos
Estatísticas por grupo
| 6 |
307922.26 - 699728.42 |
393339.73 |
1.67 |
| 2 |
74980.18 - 134760.16 |
95602.43 |
8.03 |
| 4 |
17806.74 - 30982.45 |
22845.07 |
15.55 |
| 5 |
6875.52 - 11817.72 |
9170.87 |
26.59 |
| 3 |
2932.87 - 4698.86 |
3770.57 |
27.76 |
| 1 |
870.1 - 1648.63 |
1340.45 |
20.40 |
Quanto maiores são os valores produzidos, menos parceiros estarão
representados pela campanha. Por isso, é crucial definir o objetivo da
campanha, e depois as políticas.

Com base na amostra colhida, o grupo 5 tem a maior faixa de valor (R$
65.085,28 - R$ 130.626,53), mas, representa apenas 8,86% dos
parceiros.
Definindo faixas
A campanha pode ser modelada de acordo com os objetivos, e,
observando as características dos parceiros.
Abaixo, sugestão de campanha focada nos 90% dos parceiros da amostra
colhida.
Sugere-se com valores para faixas, o correspondente ao terceiro
quartil de cada grupo (.75%).
Assim, promoveremos o aumento da produção dentro de cada grupo.
Faixas:
| Faixa 1 |
R$ 10.596.96 |
72,76% |
Deslocar a média de 6mil para para 10,5mil |
| Faixa 2 |
R$ 27.173.08 |
16,71% |
Deslocar a média de 16,5mil para para 27mil |
| Faixa 3 |
R$ 130.626.53 |
8,86% |
Deslocar a média de 90mil para para 130mil |
| Faixa 4 |
R$ 700.000,00 |
1,67% |
Deslocar a média de 400mil para para 700mil |
As faixas podem ser alteráveis de acordo com o objetivo da
campanha.
Premiação sugerida:
Suposições
Com base em estudos
anteriores, é possível afirmar (com 95% de certeza) que o valor de
emissão das propostas estará entre R$ 110,00 e 156,00. Sendo 110,00 a
moda (valor que mais se digita na tabela, e, como média 153,21 - OBS: os
dados são assimétricos)
Nesta faixa de valor
| Faixa 1 |
R$ 250,00 |
R$ 10.596.96 |
295 |
| Faixa 2 |
R$ 500,00 |
R$ 27.173.08 |
139 |
| Faixa 3 |
R$ 1.000,00 |
R$ 130.626.53 |
30 |
| Faixa 4 |
R$ 1.500,00 |
R$ 700.000,00 |
5 |
Custo mínimo previsto: R$ 180.000,00
Avaliação da campanha do iphone
Objetivos declarados
Esta CAMPANHA tem por objetivo, mediante distribuição de prêmios
(“PREMIAÇÃO”), fomentar a produção de FGTS nas tabelas TURBO e ACELERA,
produto disponível pelo ORGANIZADOR, segundo os critérios definidos
neste regulamento.(SIC)
Vigência 22/10/2024 até o dia 30/11/2024
Período comparado 16/09/2024 até o dia
21/10/2024

Resultado teste de hipótese (test-t)
Conforme teste de hipótese (p-valor = 0.5267), é possível afirmar
(com nível de confiança de 95%) que não houve diferença estatisticamente
significante no volume médio de contratos digitados por parceiros.
O gráfico acima e o teste de hipótese se complementam para demonstrar
que:
A média de contratos digitados por parceiros no mesmo período
anterior à campanha está entre 75/95 contratos.
A média de contratos digitados por parceiros durante a campanha
está entre 85/105 contratos.
Significa dizer que, mesmo ocorrendo um aumento, este aumento pode
ser atribuído à variância média (natural) do número de contratos
digitados por parceiros. Sendo assim, nas amostras comparadas, a
campanha do iphone não gerou efeito relavante.
Conclusão
Campanhas com metas de produção acima dos R$ 130.000,00 são muito
improváveis para quase 98% dos parceiros. Portanto, se a campanha visa
incentivar a produção na grande massa de parceiros, as metas devem ser
menores.
Os grupos acima são sugestões (estudos mais aprofundados podem ser
realizados, visando destacar cada vez mais as diferenças entre eles),
mas, são suficientes para demonstrar que existem concentrações de
parceiros em algumas faixas de valores.
As metas são desenhadas como um valor ‘provável’ para a os parceiros
dentro das respectivas faixas, o que torna o incentivo à produção um
objetivo palpável.
Abaixo, a premiação sugerida por faixa de valor, e, previsão de
investimento mínimo calculado com base no mês de julho/2025.
| Faixa 1 |
R$ 250,00 |
R$ 10.596.96 |
295 |
| Faixa 2 |
R$ 500,00 |
R$ 27.173.08 |
139 |
| Faixa 3 |
R$ 1.000,00 |
R$ 130.626.53 |
30 |
| Faixa 4 |
R$ 1.500,00 |
R$ 700.000,00 |
5 |
Custo mínimo previsto: R$ 180.000,00
LS0tDQp0aXRsZTogIkFuw6FsaXNlIGV4cGxvcmF0w7NyaWEgcGFyYSBmdXR1cmFzIGNhbXBhbmhhcyBWOCINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0b2M6IHRydWUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgZWNobz1GQUxTRSwgaW5jbHVkZT1GQUxTRSwgbWVzc2FnZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgd2FybmluZyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UpDQoNCiMgZGVmaW5pbmRvIGxvZyBkZSBhdmlzb2ENCm9wdGlvbnMod2FybiA9IC0xKQ0KDQojbGlicmFyaWVzDQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkodGlkeXIpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGxhdHRpY2UpDQpsaWJyYXJ5KHBhdGNod29yaykNCg0KDQoNCiMgQ2FycmVnYW5kbyBkYWRvcw0KIyMgQW1vc3RyYSBjb250ZW5kbyBkYWRvcyBkb3Mgw7psdGltb3MgMzAgZGlhcw0KDQphbW9zdHJhIDwtIHJlYWRfY3N2KCJ5Oi9GSU5BTkNFSVJPL0ZhZ25lci9UaGFpcy9HZXJhZG9yIGRlIGNhbXBhbmhhcy9pbnB1dF9kYXRhL3RlbmRlbmNpYS5jc3YiKQ0KDQphbW9zdHJhX2xpbXBhIDwtIGFtb3N0cmFbY29tcGxldGUuY2FzZXMoYW1vc3RyYSksIF0NCmRhZG9zX3Byb2QgPC0gYW1vc3RyYV9saW1wYVssIGMoJ2phbl9wcm9kJywgJ2Zldl9wcm9kJywgJ21hcl9wcm9kJywgJ2Ficl9wcm9kJywgJ21haV9wcm9kJywgJ2p1bl9wcm9kJywgJ2p1bF9wcm9kJyldDQpkYWRvc19wcm9kIDwtIGRhZG9zX3Byb2QgJT4lDQogIG11dGF0ZSgNCiAgICByZXRfZmV2ID0gcm91bmQoKChmZXZfcHJvZCAvIGphbl9wcm9kKSAtIDEpICogMTAwLCAyKSwNCiAgICByZXRfbWFyID0gcm91bmQoKChtYXJfcHJvZCAvIGZldl9wcm9kKSAtIDEpICogMTAwLCAyKSwNCiAgICByZXRfYWJyID0gcm91bmQoKChhYnJfcHJvZCAvIG1hcl9wcm9kKSAtIDEpICogMTAwLCAyKSwNCiAgICByZXRfbWFpID0gcm91bmQoKChtYWlfcHJvZCAvIGFicl9wcm9kKSAtIDEpICogMTAwLCAyKSwNCiAgICByZXRfanVuID0gcm91bmQoKChqdW5fcHJvZCAvIG1haV9wcm9kKSAtIDEpICogMTAwLCAyKSwNCiAgICByZXRfanVsID0gcm91bmQoKChqdWxfcHJvZCAvIGp1bl9wcm9kKSAtIDEpICogMTAwLCAyKSwNCiAgKQ0KDQpkZl9yZXRvcm5vIDwtIGRhZG9zX3Byb2RbLCBjKCJyZXRfZmV2IiwgInJldF9tYXIiLCAicmV0X2FiciIsICJyZXRfbWFpIiwgInJldF9qdW4iKV0NCmRmX3JldG9ybm8kbWVhbl92YXIgPC0gcm93TWVhbnMoZGZfcmV0b3JubykNCmluZGV4X291dGxpZXJzIDwtIHNjYWxlKGRmX3JldG9ybm8kbWVhbl92YXIpID4gMg0KZGZfcmV0b3JubyA8LSBkZl9yZXRvcm5vWyFpbmRleF9vdXRsaWVycywgXQ0KDQojIGRhdGFzZXQgY29tIHZhbG9yZXMNCmRmX3ZhbG9yZXMgPC0gZGFkb3NfcHJvZFssIGMoJ2phbl9wcm9kJywgJ2Zldl9wcm9kJywgJ21hcl9wcm9kJywgJ2Ficl9wcm9kJywgJ21haV9wcm9kJywgJ2p1bl9wcm9kJywgJ2p1bF9wcm9kJyldDQpkZl92YWxvcmVzJG1lYW5fdmFyIDwtIHJvd01lYW5zKGRmX3ZhbG9yZXMpDQppbmRleF9vdXRsaWVycyA8LSBzY2FsZShkZl92YWxvcmVzJG1lYW5fdmFyKSA+IDINCg0KZGZfdmFsb3Jlc19pbiA8LSBkZl92YWxvcmVzWyFpbmRleF9vdXRsaWVycywgXQ0KZGZfdmFsb3Jlc19vdXQgPC0gZGZfdmFsb3Jlc1tpbmRleF9vdXRsaWVycywgXQ0KDQoNCiMjIGZ1bsOnw6NvIHBhcmEgcmV0b3JuYXIgbyBkZXN2aW8gcGFkcsOjbyBkZSBkYWRvcyBsb2ctdHJhbnNmb3JtYWRvcw0KcmV0b3Jub19zZF9kZXNfbG9ndHJhbnNmb3JtdGF0aW9uIDwtIGZ1bmN0aW9uKGxvZ19tZWFuLCBsb2dfZGV2aWF0aW9uKXsNCiAgICAgIA0KICBzdGFuZGFydF9kZXZpYXRpb24gPSBzcXJ0KChleHAobG9nX2RldmlhdGlvbiAqKjIpIC0gMSkgKiANCiAgICAgICAgICAgICBleHAoMiAqIGxvZ19tZWFuICsgbG9nX2RldmlhdGlvbiAqKiAyKSkNCg0KICByZXR1cm4oc3RhbmRhcnRfZGV2aWF0aW9uKQ0KICANCn0NCg0KIyBDb25nZWxhbmRvIGFsZWF0b3JpZWRhZGUNCnNldC5zZWVkKDQwKQ0KDQoNCmBgYA0KDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KDQoNCg0KIyBmdW7Dp8OjbyBwYXJhIGdlcmFyIGdyw6FmaWNvDQpjb21wYXJhbmRvX21lZGlhcyA8LSBmdW5jdGlvbihkYWRvcyl7DQoNCiAgb3JkZXJlZF9tb250aHMgPC0gYygnc2VtX2lwaG9uZScsICdpcGhvbmUnKQ0KICBjb2xuYW1lcyhkYWRvcykgPC0gYygic2FtcGxlX2lkIiwgJ2RhZG9zJykNCiAgdG9QbG90IDwtIGRhdGEuZnJhbWUoDQogICAgDQogICAgc2FtcGxlX2lkID0gYXMuY2hhcmFjdGVyKCksDQogICAgbWVhbiA9IGFzLm51bWVyaWMoKSwNCiAgICBsb3dlciA9IGFzLm51bWVyaWMoKSwNCiAgICB1cHBlciA9IGFzLm51bWVyaWMoKSwNCiAgICBzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UNCiAgKQ0KDQogIGZvciAoY29tZXJjaWFsIGluIHVuaXF1ZShkYWRvcyRzYW1wbGVfaWQpKSB7DQogICAgDQogICAgICAgICAgYW1vc3RyYSA8LSBkYWRvc1tkYWRvcyRzYW1wbGVfaWQgPT0gY29tZXJjaWFsLCBdDQogICAgICAgICAgDQogICAgICAgICAgIyBlc2NyZXZlciBmdW5DJ0MjbyBwYXJhIGNvbmNhdGVuYXIgdG9kYXMgYXMgYW1vc3RyYXINCiAgICAgICAgICBtZWRpYSA9IG1lYW4oYW1vc3RyYSRkYWRvcykNCiAgICAgICAgICBkZXN2aW8gPSBzZChhbW9zdHJhJGRhZG9zKQ0KICAgICAgICAgIGVycm9fcGFkcmFvX2Ftb3N0cmEgPSBkZXN2aW8gLyBzcXJ0KG5yb3coYW1vc3RyYSkpDQogICAgICAgICAgI2NhbGN1bGFuZG8gbGltaXRlcyBpbmZlcmlvciBlIHN1cGVyaW9zDQogICAgICAgICAgbG93ZXIgPC0gcm91bmQobWVkaWEgLSAxLjk2ICogZXJyb19wYWRyYW9fYW1vc3RyYSwgMikNCiAgICAgICAgICB1cHBlciA8LSByb3VuZChtZWRpYSArIDEuOTYgKiBlcnJvX3BhZHJhb19hbW9zdHJhLCAyKQ0KICAgICAgICAgIHRvUGxvdCA8LSByYmluZCgNCiAgICAgICAgICAgIHRvUGxvdCwgZGF0YS5mcmFtZSgNCiAgICAgICAgICAgICAgc2FtcGxlX2lkID0gY29tZXJjaWFsLA0KICAgICAgICAgICAgICBtZWFuID0gbWVkaWEsDQogICAgICAgICAgICAgIGxvd2VyID0gbG93ZXIsDQogICAgICAgICAgICAgIHVwcGVyID0gdXBwZXINCiAgICAgICAgICAgICkNCiAgICAgICAgICApDQogICAgICAgICAgDQogICAgICB9ICANCiAgZ2dwbG90KHRvUGxvdCwgbWFwcGluZyA9IGFlcyh4ID0gYXMuZmFjdG9yKHNhbXBsZV9pZCkgJT4lIG9yZGVyZWQob3JkZXJlZF9tb250aHMpLCB5ID0gbWVhbiwgY29sb3VyID0gbWVhbikpICsNCiAgICBnZW9tX3BvaW50KHNpemUgPSAyKSArDQogICAgZ2VvbV9lcnJvcmJhcihhZXMoeW1pbiA9IGxvd2VyLCB5bWF4ID0gdXBwZXIpLCB3aWR0aCA9IC4xLCBsaW5ld2lkdGggPSAxLjEpICsNCiAgICB0aGVtZV9idygpICsNCiAgICBsYWJzKHggPSAiICIsDQogICAgICAgICB5ID0gIk3DqWRpYSBkZSBjb250cmF0b3MgcG9yIHBhcmNlaXJvcyIsDQogICAgICAgICB0aXRsZSA9ICdDb21wYXJhw6fDo28gZW50cmUgbcOpZGlhcyBlIHZhcmnDom5jaWFzJywNCiAgICAgICAgIHN1YnRpdGxlID0gJ2NhbXBhbmhhIGRvIGlwaG9uZScsDQogICAgICAgICBjYXB0aW9uID0gIkZvbnRlOiBCRkYgZSBjYW1wYW5oYSBkbyBpcGhvbmUiKSArDQogICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSwNCiAgICAgICAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGNvbG91ciA9ICIjMDA5OUY4Iiwgc2l6ZSA9IDEyLCBmYWNlID0gJ2JvbGQnKSwNCiAgICAgICAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCwgZmFjZSA9ICdib2xkJyksDQogICAgICAgICAgcGxvdC5jYXB0aW9uID0gIGVsZW1lbnRfdGV4dChmYWNlID0gJ2l0YWxpYycpLA0KICAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICdub25lJykgKw0KICAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygnaXBob25lJz0iQ29tIGNhbXBhbmhhIiwgJ3NlbV9pcGhvbmUnPSJTZW0gY2FtcGFuaGEiKSkNCiAgDQp9DQpgYGANCg0KDQojIyMgRGV0YWxoZXMgc29icmUgb3MgZ3J1cG9zDQoNCkFvIGJ1Y2FyIGEgbcOpZGlhIGRlIHJldG9ybm8gZG9zIMO6bHRpbW9zIDYgbWVzZXMgZGUgYWxndW5zIHBhcmNlaXJvcywgw6kgcG9zc8OtdmVsIHBlcmNlYmVyIGjDoSBncmFuZGUgdmFyacOibmNpYS4NCg0KQ29tbyBleGVtcGxvLCBzZSBubyBtw6pzIGRlIG1haW8gYSBwcm9kdcOnw6NvIGZvaSBkZSBSJDUwbWlsLCBlLCBubyBtw6pzIGRlIGp1bmhvIFIkMTAwbWlsLCBhIHPDqXJpZSBkZSByZXRvcm5vcyB0cmFyw6EgdW0gYXVtZW50byBkZSAxMDAlLg0KDQpFc3RlIMOpIGZhdG8gcXVlIGltcG9zc2liaWxpdGEgdHJhw6dhciB1bWEgw7puaWNhIHBvbMOtdGljYSBjb21vIGNhbXBhbmhhIChlLmcuIGFjcmVzY2ltbyBkZSAxMCUgbm8gdmFsb3IgcHJvZHV6aWRvKS4NCg0KQSB0YWJlbGEgYWJhaXhvIGFwcmVzZW50YSBvcyByZXRvcm5vcyBkZSA1IHBhcmNlaXJvcywgZSBhIG3DqWRpYSBubyBwZXLDrW9kbyBkZSBmZXZlcmVpcm8gYSBqdW5oby4NCg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpvcHRpb25zKHdhcm4gPSAtMSkNCmRmXzEgPC0gZGZfcmV0b3Jub1sxOjUsIF0NCg0KY29sbmFtZXMoZGZfMSkgPC0gYygiRmV2ZXJlaXJvIiwgIk1hcsOnbyIsICJBYnJpbCIsICJNYWlvIiwgIkp1bmhvIiwgIk3DqWRpYSIpDQoNCmRmXzEgJT4lIA0KICBrbml0cjo6a2FibGUoY2FwdGlvbiA9ICdBbW9zdHJhIC0gdGVuZMOqbmNpYSBkZSByZXRvcm5vcyBwb3IgbcOqcyAoMjAyNSknKQ0KDQpgYGANCg0KDQoNCsOAIGVzcXVlcmRhLCBhIGxpbmhhIHJlcHJlc2VudGEgbyBjb21wb3J0YW1lbnRvIGRvcyByZXRvcm5vcyBkZSBwcm9kdcOnw6NvIGRvcyBwYXJjZWlyb3Mgdjg7IMOgIGRpcmV0YSwgY29tbyBkZXZlcmlhbSBzZXIgcGFyYSBxdWUgZm9zc2UgcG9zc8OtdmVsIGNhcHR1cmFyIHVtIHBhZHLDo28gdHJhw6dhciB1bWEgY2FtcGFuaGEgbm8gZm9ybWF0byBkZSBtZXRhIHBlcmNlbnR1YWwgZml4YS4gDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KDQpvcmRlcl9tb250aHMgPC0gYygncmV0X2ZldicsICdyZXRfbWFyJywgJ3JldF9hYnInLCAncmV0X21haScsICdyZXRfanVuJykNCg0KbGluZV8xIDwtIGRmX3JldG9ybm9bMTAwLCAtNl0NCnBpdm90X2xpbmUgPC0gbGluZV8xICU+JSBwaXZvdF9sb25nZXIoY29scyA9IGV2ZXJ5dGhpbmcoKSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzX3RvID0gIm1lcyIsDQogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfdG8gPSAncmV0b3JubycpDQpwaXZvdF9saW5lJG1lcyA8LSBhcy5mYWN0b3IocGl2b3RfbGluZSRtZXMpICU+JSBvcmRlcmVkKG9yZGVyX21vbnRocykNCg0KcDEgPC0gcGl2b3RfbGluZSAlPiUgZ2dwbG90KG1hcHBpbmcgPSBhZXMoeCA9IG1lcywgeSA9IHJldG9ybm8sIGdyb3VwID0gMSkpICsNCiAgZ2VvbV9saW5lKCkgKw0KICB0aGVtZV9saWdodCgpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMTAsIGxpbmV0eXBlID0gJ2Rhc2hlZCcsIGNvbCA9ICdibHVlJykgKw0KICBsYWJzKHkgPSAiUmV0b3JubyAoJSkiLCANCiAgICAgICB4ID0gIk3DqnMiLCANCiAgICAgICB0aXRsZSA9ICJSZXRvcm5vIGNvbSAoYWx0YSkgdmFyacOibmNpYSBuw6NvIGxpbmVhciIsDQogICAgICAgc3VidGl0bGUgPSAiZGFkb3MgcmVhaXMiKSArIA0KICAgIHRoZW1lKA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiIzAwOTlGOCIsIHNpemUgPSAxMiwgZmFjZSA9ICdib2xkJyksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gOSwgZmFjZSA9ICdib2xkJyksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KGZhY2UgPSAnaXRhbGljJykNCiAgKQ0KDQpgYGANCg0KDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KDQpyZXRvcm5vX2xpbmVhcmVzIDwtIGRhdGEuZnJhbWUoDQogIG1lcyA9IG9yZGVyX21vbnRocywNCiAgcmV0b3JubyA9IGMoLTI1LCAyNSwgLTI1LCAyNSwgLTI1KQ0KKQ0KDQpyZXRvcm5vX2xpbmVhcmVzJG1lcyA8LSBhcy5mYWN0b3IocmV0b3Jub19saW5lYXJlcyRtZXMpICU+JSANCiAgb3JkZXJlZChvcmRlcl9tb250aHMpDQoNCnAyIDwtIHJldG9ybm9fbGluZWFyZXMgJT4lIGdncGxvdChtYXBwaW5nID0gYWVzKHggPSBtZXMsIHkgPSByZXRvcm5vLCBncm91cCA9IDEpKSArIA0KICBnZW9tX2xpbmUoKSArDQogIHRoZW1lX2xpZ2h0KCkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBsaW5ldHlwZSA9ICdkYXNoZWQnLCBjb2wgPSAnYmx1ZScpICsNCiAgbGFicyh5ID0gIlJldG9ybm8gKCUpIiwgDQogICAgICAgeCA9ICJNw6pzIiwgDQogICAgICAgdGl0bGUgPSAiUmV0b3JubyBjb20gdmFyaWHDp8OjbyBsaW5lYXIiLA0KICAgICAgIHN1YnRpdGxlID0gJ2RhZG9zIHNpbXVsYWRvcycpICsgDQogICAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICIjMDA5OUY4Iiwgc2l6ZSA9IDEyLCBmYWNlID0gJ2JvbGQnKSwNCiAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSA5LCBmYWNlID0gJ2JvbGQnKSwNCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoZmFjZSA9ICdpdGFsaWMnKQ0KICApDQoNCmBgYA0KDQpgYGB7ciwgZWNobz1GQUxTRSwgZmlnLmFsaWduPSdjZW50ZXInLCBmaWcuZGltPWMoMTAsNSl9DQoNCnBhcihtZnJvdz1jKDIsIDEpKQ0KcDEgKyBwMg0KcGFyKG1mcm93PWMoMSwgMSkpDQpgYGANCg0KDQoNCg0KDQpgYGB7ciwgaW5jbHVkZT1GQUxTRSwgZmlnLmFsaWduPSdjZW50ZXInLCBmaWcuYWxpZ249J2NlbnRlcicsIGZpZy5kaW09YygxMCw1KX0NCg0KDQoNCiMjIyMgRXhwbGljYW5kbyBhIGRpZmVyZW7Dp2EuDQoNCiMjIyMjIFJldG9ybm8gaWRlYWwgKHNpbXVsYWRvKQ0KDQojIFNlIG9zIHJldG9ybm9zIGZvc3NlbSBsaW5lYXJtZW50ZSBkaXN0cmlidcOtZG9zIGhhdmVyaWEgdW0gcGFkcsOjbyBpZGVudGlmaWPDoXZlbCwgcGVybWl0aW5kby1zZSB0cmHDp2FyIHBhcsOibWV0cm9zIHBhcmEgYSBjYW1wYW5oYSBkZSBmb3JtYSBnZW7DqXJpY2EsIGUsIGFvIG1lc21vIHRlbXBvLCBnYXJhbnRpciBhIG1lc21hIHByb2JhYmlsaWRhZGUgw6AgZ3JhbmRlIG1haW9yaWEgZG9zIHBhcmNlaXJvcy4NCiMgDQojIE5lc3RlcyBjYXNvcywgc3Vwb25kbyB1bSByZXRvcm5vIG3DqWRpbyBkZSAyMCUsIHBvZGVyaWEtc2UgYWZpcm1hciwgcG9yIGV4ZW1wbG8sIHF1ZToNCiMgDQojIDEgLSBFbSBhcHJveGltYWRhbWVudGUgNjgsMjYlIGRvcyBjYXNvcywgYSBtw6lkaWEgZGUgcmV0b3JubyBlc3RhcmlhIGVudHJlIDE0JSBlIDI2JS4NCiMgDQojIDIgLSBFbSBhcHJveGltYWRhbWVudGUgOTUuNDQlIGNhc29zLCBhIG3DqWRpYSBkZSByZXRvcm5vIGVzdGFyaWEgZW50cmUgMjYlIGUgMzIlLg0KIyANCiMgMyAtIEVtIGFwcm94aW1hZGFtZW50ZSA5OS43NCUgY2Fzb3MsIGEgbcOpZGlhIGRlIHJldG9ybm8gZXN0YXJpYSBlbnRyZSAzOCUgZSA0NCUuDQoNCmdncGxvdCgpICsgDQogIGdlb21faGlzdG9ncmFtKGFlcyhybm9ybSg1MDApKSwgY29sb3IgPSAnIzAwMDAwMCcsIGZpbGwgPSAnIzAwOTlGOCcsIGFscGhhID0gLjQpICsNCiAgdGhlbWVfYncoKSArIA0KICBsYWJzKHRpdGxlID0gIkRpc3RyaWJ1acOnw6NvIGlkZWFsIiwgDQogICAgICAgc3VidGl0bGUgPSAncXVhbnRpZGFkZSBwb3IgZmFpeGEgZGUgdmFsb3JlcycsDQogICAgICAgY2FwdGlvbiA9ICdGb250ZTogQkZGIChkaWFzIDE5IGFvIDI1IGRvcyDDumx0aW1vcyA2IG1lc2VzKScsDQogICAgICAgeCA9ICJWYWxvcmVzICh0cmFuc2Zvcm1hZG9zKSIsIA0KICAgICAgIHkgPSAiRnJlcXVlbmNpYSIpICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICIjMDA5OUY4Iiwgc2l6ZSA9IDE2LCBmYWNlID0gJ2JvbGQnKSwNCiAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCwgZmFjZSA9ICdib2xkJyksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KGZhY2UgPSAnaXRhbGljJykNCiAgKQ0KDQpgYGANCg0KIyMjIyMgUmV0b3Jub3MgcmVhaXMNCk9zIHJldG9ybm9zIHJlYWlzLCBjb250dWRvLCBkZW1vbnN0cmFtIGdyYW5kZSB2YXJpw6JuY2lhIChkZSAtOTAlIMOgIDMwMDAlKSwgZSBmb3JtYSBuw6NvIGxpbmVhcmUgKHNlbSBwYWRyw6NvIGlkZW50aWZpY8OhdmVsIGUgY29udMOtbnVvKS4NCg0KTWVzbW8gdHJhdGFuZG8gYSBuw6NvLWxpbmVhcmlkYWRlLCBhIGdyYW5kZSB2YXJpw6JuY2lhIGRvcyByZXRvcm5vcyDDqSB1bSBpbXBlZGltZW50byBhaW5kYSBwcmVzZW50ZSBwYXJhIHNlIGZpeGFyIGFwZW5hcyB1bSBsaW1pYXIgcGFyYSB0b2RvcyBvcyBwYXJjZWlyb3MuDQoNCg0KYGBge3IsIGVjaG89RkFMU0UsIGZpZy5hbGlnbj0nY2VudGVyJywgZmlnLmRpbT1jKDEwLDUpfQ0KDQptZWRpYSA8LSBtZWFuKGxvZyhkZl9yZXRvcm5vJG1lYW5fdmFyKSwgbmEucm0gPSBUUlVFKQ0KZGVzdmlvIDwtIHNkKGxvZyhkZl9yZXRvcm5vJG1lYW5fdmFyKSwgbmEucm0gPSBUUlVFKQ0KDQoNCnAyIDwtIGdncGxvdCgpICsgDQogIGdlb21faGlzdG9ncmFtKGFlcyhkZl9yZXRvcm5vJG1lYW5fdmFyKSwgY29sb3IgPSAnIzAwMDAwMCcsIGZpbGwgPSAnIzZDM0JBQScsIGFscGhhID0gLjQpICsNCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gcm91bmQoKGV4cChtZWRpYSkgKyByZXRvcm5vX3NkX2Rlc19sb2d0cmFuc2Zvcm10YXRpb24obWVkaWEsZGVzdmlvKSksIDIpLCBjb2xvciA9ICcjNkMzQkFBJywgbGluZXR5cGUgPSAyKSArDQogIHRoZW1lX2J3KCkgKyANCiAgbGFicyh0aXRsZSA9ICJEaXN0cmlidWnDp8OjbyByZWFsIiwgDQogICAgICAgc3VidGl0bGUgPSAncXVhbnRpZGFkZSBwb3IgZmFpeGFzIGRlIHZhbG9yZXMnLA0KICAgICAgIGNhcHRpb24gPSAnRm9udGU6IEJGRiAoZGlhcyAxOSBhbyAyNSBkb3Mgw7psdGltb3MgNiBtZXNlcyknLA0KICAgICAgIHggPSAiVmFsb3JlcyAodHJhbnNmb3JtYWRvcykiLCANCiAgICAgICB5ID0gIkZyZXF1ZW5jaWEiKSArDQogIHRoZW1lKA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiIzAwOTlGOCIsIHNpemUgPSAxNiwgZmFjZSA9ICdib2xkJyksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTAsIGZhY2UgPSAnYm9sZCcpLA0KICAgIHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChmYWNlID0gJ2l0YWxpYycpDQogICkNCg0KDQoNCiMjIGNhbGN1bGFuZG8gcG9zdcOnw6NvIGRvcyAxMCUgcHJldmlzdG9zDQoNCg0KcDMgPC0gZ2dwbG90KCkgKyANCiAgZ2VvbV9oaXN0b2dyYW0oYWVzKGxvZyhkZl9yZXRvcm5vJG1lYW5fdmFyKSksIGNvbG9yID0gJyMwMDAwMDAnLCBmaWxsID0gJyM2QzNCQUEnLCBhbHBoYSA9IC40KSArDQogIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IChtZWRpYSArIGRlc3ZpbyksIGNvbG9yID0gJyM2QzNCQUEnLCBsaW5ldHlwZSA9IDIpICsNCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gKG1lZGlhIC0gZGVzdmlvKSwgY29sb3IgPSAnIzZDM0JBQScsIGxpbmV0eXBlID0gMikgKw0KICB0aGVtZV9idygpICsgDQogIGxhYnModGl0bGUgPSAiRnJlcXXDqm5jaWEgcmVhbCIsIA0KICAgICAgIHN1YnRpdGxlID0gJ3F1YW50aWRhZGUgcG9yIGZhaXhhcyBkZSB2YWxvcmVzIC0gbG9nLXRyYW5zZm9ybWFkbycsDQogICAgICAgY2FwdGlvbiA9ICdGb250ZTogQkZGIChkaWFzIDE5IGFvIDI1IGRvcyDDumx0aW1vcyA2IG1lc2VzKScsDQogICAgICAgeCA9ICJWYWxvcmVzIHJlYWlzIiwgDQogICAgICAgeSA9ICJGcmVxdWVuY2lhIikgKw0KICB0aGVtZSgNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGNvbG9yID0gIiMwMDk5RjgiLCBzaXplID0gMTYsIGZhY2UgPSAnYm9sZCcpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwLCBmYWNlID0gJ2JvbGQnKSwNCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoZmFjZSA9ICdpdGFsaWMnKQ0KICApDQoNCnAyICsgcDMNCg0KYGBgDQoNCg0KDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KDQpvcHRpb25zKHdhcm4gPSAtMSkNCg0KbWVkaWEgPC0gbWVhbihsb2coZGZfcmV0b3JubyRtZWFuX3ZhciksIG5hLnJtID0gVFJVRSkNCmRlc3ZpbyA8LSBzZChsb2coZGZfcmV0b3JubyRtZWFuX3ZhciksIG5hLnJtID0gVFJVRSkNCnBhc3RlKCJFbSBlc2NhbGEgcmVhbCwgYSBtw6lkaWEgw6kgZGUgIiwgcm91bmQoZXhwKG1lZGlhKSwgMiksICIlIGUgbyBkZXN2aW8gw6kgZGUgIiwgcm91bmQocmV0b3Jub19zZF9kZXNfbG9ndHJhbnNmb3JtdGF0aW9uKG1lZGlhLGRlc3ZpbyksIDIpLCAiJSIpDQoNCmBgYA0KDQoNCk5vIGNhc28gZG9zIHBlcmNlaXJvcyBkYSB2OCwgY29uc2lkZXJhbmRvLXNlIG9zIHJldG9ybm9zIHBvc2l0aXZvcywgcG9kZS1zZSBhZmlybWFyIHF1ZToNCg0KVXNhbmRvIG8gc2VndWludGUgcHJvY2VkaW1lbnRvLCBwb2RlbW9zIGFwdXJhciBxdWU6DQoNCg0KMSAtIEVtIGFwcm94aW1hZGFtZW50ZSA1NCUgZG9zIGNhY29zLCBhIG3DqWRpYSBkZSByZXRvcm5vIHNlcsOhIG1haW9zIHF1ZSAxMCUNCg0KMiAtIEVtIGFwcm94aW1hZGFtZW50ZSA1MCUgZG9zIGNhc29zLCBhIG3DqWRpYSBkZSByZXRvcm5vIHNlcsOhIG1haW9yIHF1ZSAyNiw1JQ0KDQozIC0gRW0gYXByb3hpbWFkYW1lbnRlIDE2JSBkb3MgY2Fzb3MsIGEgbcOpZGlhIGRlIHJldG9ybm8gc2Vyw6EgbWFpb3IgMTc2LjIzJS4NCg0KNCAtIEVtIGFwcm94aW1hZGFtZW50ZSAyLDUlIGNhc29zLCBhIG3DqWRpYSBkZSByZXRvcm5vIHNlcsOhIG1haW9yIHF1ZSAzMjUuOTYlLg0KDQo1IC0gRW0gYXByb3hpbWFkYW1lbnRlIDAuMTUlIGNhc29zLCBhIG3DqWRpYSBkZSByZXRvcm5vIHNlcsOhIG1haW9yIHF1ZSA0NzUuNjklLg0KDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQ0KDQojQSBwcm9iYWJpbGlkYWRlIGFzc29jaWFkYSBhbyByZXRvcm5vIGRlIDEwJSAob3UgbWVub3IpLCDDqSBtdWl0byBiYWl4YSAoY2VyY2EgZGUgMi40MSUpIHwgOTcuNTklIGRvcyByZXRvcm5vcyBzZXLDo28gbWFpb3Jlcy4NCiNBIHByb2JhYmlsaWRhZGUgYXNzb2NpYWRhIGFvIHJldG9ybm8gbcOpZGlvICgyNiUgb3UgbWVub3IpLCDDqSBkZSA1MCUgfCA1MCUgZG9zIHJldG9ybm9zIHNlcsOjbyBtYWlvcmVzLg0KI0EgcHJvYmFiaWxpZGFkZSBhc3NvY2lhZGEgYW8gcmV0b3JubyBkZSAxIGRlc3ZpbyAoMTc2JSBvdSBtZW5vcikgw6kgZGUgODEuNzQlIHwgMTguMjYlIGRvcyByZXRvcm5vcyBzZXLDo28gbWFpb3Jlcw0KYGBgDQoNCg0KIyMjIFN1Z2VzdMOjbyBwYXJhIG5vdmFzIGNhbXBhbmhhcw0KDQpJZGVudGlmaWNhciBncnVwb3MgcXVlIHRlbmhhbSBjYXJhY3RlcsOtc3RpY2FzIGRpZmVyZW50ZXMgZW0gcmVsYcOnw6NvIGFvIHZhbG9yIHByb2R1emlkbywgZSBiYXNlYXIgYSBjYW1wYW5oYSBwYXJhIG8gY3Jlc2NpbWVudG8gZGVudHJvIGRvIGdydXBvLg0KDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KDQoNCg0Ka21lYW5zX3RyZWluZWQgPC0ga21lYW5zKGxvZyhkZl92YWxvcmVzX2luJG1lYW5fdmFyKSwgY2VudGVycyA9IDUpDQoNCmRmX3ZhbG9yZXNfaW4kY2x1c3RlciA8LSBrbWVhbnNfdHJlaW5lZCRjbHVzdGVyDQoNCg0KDQpgYGANCg0KDQpgYGB7ciwgaW5jbHVkZT1GQUxTRX0NCg0KZGZfdmFsb3Jlc19pbg0KDQpkZl92YWxvcmVzX291dCRjbHVzdGVyIDwtIDYNCg0KZGZfdmFsb3JlcyA8LSByYmluZChkZl92YWxvcmVzX2luLCBkZl92YWxvcmVzX291dCkNCg0KYGBgDQoNCg0KDQpgYGB7ciwgZWNobz1GQUxTRX0NCg0KcDQgPC0gZ2dwbG90KGRhdGEgPSBkZl92YWxvcmVzW2RmX3ZhbG9yZXMkbWVhbl92YXIgPCAyMDAwMDAwLCBdLCBtYXBwaW5nID0gYWVzKHggPSBtZWFuX3ZhciwgeSA9IGZhY3RvcihjbHVzdGVyKSwgZmlsbCA9IGFzLmZhY3RvcihjbHVzdGVyKSkpICsNCiAgZ2VvbV9ib3hwbG90KCkgKw0KICB0aGVtZV9idygpICsgDQogIGxhYnMoDQogICAgdGl0bGUgPSAnRGlzdHJpYnVpw6fDo28gZGUgdmFsb3JlcyBwb3IgZ3J1cG8nLA0KICAgIHN1YnRpdGxlID0gJ2NsdXN0ZXIgY2FsY3VsYWRvIGNvbSBrbWVhbnMgZSBkYWRvcyBsb2ctdHJhbnNmb3JtYWRvcycsDQogICAgY2FwdGlvbiA9ICdGb250ZTogQkZGIChkaWFzIDE5IGFvIDI1IGRvcyDDumx0aW1vcyA2IG1lc2VzKScsDQogICAgeCA9ICdWYWxvcmVzJywNCiAgICB5ID0gJ0dydXBvcycNCiAgICApICsNCiAgdGhlbWUoDQogICAgbGVnZW5kLnBvc2l0aW9uID0gJ25vbmUnLA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAnIzAwOTlGOCcsIHNpemU9MTYsIGZhY2UgPSAnYm9sZCcpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwLCBmYWNlID0gJ2JvbGQnKSwNCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoZmFjZSA9ICdpdGFsaWMnKQ0KICAgIA0KICApDQoNCg0KcDQNCg0KYGBgDQoNCk9zIGdydXBvcyBzw6NvIGZvcm1hZG9zIGxldmFuZG8gZW0gY29uc2lkZXJhw6fDo28gcmVnacO1ZXMgZGUgdmFsb3JlcyBlbSBxdWUgaMOhIG1haW9yIGNvbmNlbnRyYcOnw6NvIGRlIHBhcmNlaXJvcy4NCg0KUG9yIGV4ZW1wbG8sIG5vIGdydXBvIDUsIGjDoSBwYXJjZWlyb3MgZW50cmUgNjBtaWwgZSAyNTBtaWwsIGVudHJldGFuZG8sIDUwJSBkZWxlcyBlc3TDo28gZW50cmUgNjVtaWwgZSAxMzBtaWwsIHNlbmRvIHF1ZSwgYWluZGEgbWFpcyBjb25jZW50cmFkbyBubyB2YWxvciBkZSA5MG1pbC4NCg0KSXNzbyBzaWduaWZpY2EgcXVlIHBvZGVtb3MgYXRpbmdpciB1bSBtYWlvciBuw7ptZXJvIGRlIHBhcmNlaXJvcywgZGVudHJvIGRlc3RhIGZhaXhhLCBzZSBtaXJhcm1vcyBub3MgcGFyY2Vpcm9zIHF1ZSBwcm9kdXplbSBwZXJ0byBkYSBtw6lkaWEsIGUsIGZhemVuZG8tb3MgZWxldmFyIG8gdmFsb3IgcHJvZHV6aWRvLg0KDQoNCkVtIHJlc3VtbywgZXN0YXJlbW9zIGVzdGltdWxhbmRvIGEgbWFpb3IgZnJhw6fDo28gZGUgcGFyY2Vpcm9zIGRlbnRybyBkZXN0YSBmYWl4YSDDoCBidXNjYXIgdW0gdmFsb3IgcXVlLCBkZSBmYXRvLCByZXByZXNlbnRhIHVtIGRlc2FmaW8sIG1hcywgw6kgYmFzdGFudGUgcHJvdsOhdmVsLg0KDQojIyMjIENhcmFjdGVyw61zdGljYXMgZG9zIGdydXBvcw0KYGBge3IsIGVjaG89RkFMU0V9DQoNCiMgZnVuw6fDo28gcGFyYSByZXRvcm5hciBjYXJhY3RlcsOtc3RpY2FzDQp0b3RhbCA9IG5yb3coZGZfdmFsb3Jlc1tkZl92YWxvcmVzJG1lYW5fdmFyIDwgMjAwMDAwMCwgXSkNCiMgbWVkaWRhcyBkZSB0ZW5kw6puY2lhIGNlbnRyYWwNCnJlc3VtbyA8LSBkZl92YWxvcmVzW2RmX3ZhbG9yZXMkbWVhbl92YXIgPCAyMDAwMDAwLCBdICU+JQ0KICBncm91cF9ieShjbHVzdGVyKSAlPiUNCiAgc3VtbWFyaXNlKA0KICAgIGNvbmNlbnRyYWNhbyA9IHBhc3RlKHJvdW5kKHF1YW50aWxlKG1lYW5fdmFyLCAuMjUpLCAyKSwgIi0iLCByb3VuZChxdWFudGlsZShtZWFuX3ZhciwgLjc1KSwgMikpLA0KICAgIG1lZGlhbmEgPSByb3VuZChxdWFudGlsZShtZWFuX3ZhciwgLjUwKSwgMiksDQogICAgI21pbl9tYXggPSBwYXN0ZShyb3VuZChtaW4obWVhbl92YXIpLCAyKSwiLSIsIHJvdW5kKG1heChtZWFuX3ZhciksIDIpKSwNCiAgICBwcm9wcm9jYW9fZ3J1cG9zID0gcm91bmQobigpIC8gdG90YWwgKiAxMDAsIDIpDQogICkgJT4lIGFycmFuZ2UoZGVzYyhtZWRpYW5hKSkgJT4lIHVuZ3JvdXAoKQ0KDQoNCiMgY29sbmFtZXMocmVzdW1vKSA8LSBjKCJHcnVwbyIsICJDb25jZW50cmHDp8Ojbyg1MCUpIiwgIk1lZGlhIiwgIk3DrW5pbW8gLSBNw6F4aW1vIiwgIlJlcHJlc2VudGF0aXZpZGFkZSIpDQpjb2xuYW1lcyhyZXN1bW8pIDwtIGMoIkdydXBvIiwgIkNvbmNlbnRyYcOnw6NvKDUwJSkiLCAiTWVkaWEiLCAiUmVwcmVzZW50YXRpdmlkYWRlIikNCg0KcmVzdW1vICU+JSBrbml0cjo6a2FibGUoY2FwdGlvbiA9ICJFc3RhdMOtc3RpY2FzIHBvciBncnVwbyIpDQoNCiMgcmVzdW1vDQoNCmBgYA0KDQoNClF1YW50byBtYWlvcmVzIHPDo28gb3MgdmFsb3JlcyBwcm9kdXppZG9zLCBtZW5vcyBwYXJjZWlyb3MgZXN0YXLDo28gcmVwcmVzZW50YWRvcyBwZWxhIGNhbXBhbmhhLiBQb3IgaXNzbywgw6kgY3J1Y2lhbCBkZWZpbmlyIG8gb2JqZXRpdm8gZGEgY2FtcGFuaGEsIGUgZGVwb2lzIGFzIHBvbMOtdGljYXMuDQoNCg0KYGBge3IsIGVjaG89RkFMU0V9DQoNCmdncGxvdChkYXRhID0gcmVzdW1vLCBtYXBwaW5nID0gYWVzKHkgPSBSZXByZXNlbnRhdGl2aWRhZGUsIHggPSBhcy5mYWN0b3IoR3J1cG8pLCBmaWxsID0gYXMuZmFjdG9yKEdydXBvKSkpICsgDQogIGdlb21fY29sKCkgKw0KICB0aGVtZV9idygpICsgDQogIGxhYnMoDQogICAgdGl0bGUgPSAiUXVhbnRpZGFkZSBkZSBwYXJjZWlyb3MiLA0KICAgIHN1YnRpdGxlID0gInF1YW50aWRhZGUgcG9yIGdydXBvIiwNCiAgICBjYXB0aW9uID0gJ0ZvbnRlOiBCRkYgKGRpYXMgMTkgYW8gMjUgZG9zIMO6bHRpbW9zIDYgbWVzZXMpJywNCiAgICB4ID0gJ0dydXBvcycsDQogICAgeSA9ICdSZXByZXNlbnRhdGl2aWRhZGUgKCUpJw0KICAgIA0KICApICsgDQogIHRoZW1lKA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiIzAwOTlGOCIsIHNpemUgPSAxNiwgZmFjZSA9ICdib2xkJyksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTAsIGZhY2UgPSAnYm9sZCcpLA0KICAgIHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChmYWNlID0gJ2l0YWxpYycpLA0KICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICdub25lJw0KKQ0KDQoNCmBgYA0KDQoNCkNvbSBiYXNlIG5hIGFtb3N0cmEgY29saGlkYSwgbyBncnVwbyA1IHRlbSBhIG1haW9yIGZhaXhhIGRlIHZhbG9yIChSJCA2NS4wODUsMjggLSBSJCAxMzAuNjI2LDUzKSwgbWFzLCByZXByZXNlbnRhIGFwZW5hcyA4LDg2JSBkb3MgcGFyY2Vpcm9zLg0KDQoNCiMjIyMgRGVmaW5pbmRvIGZhaXhhcw0KDQpBIGNhbXBhbmhhIHBvZGUgc2VyIG1vZGVsYWRhIGRlIGFjb3JkbyBjb20gb3Mgb2JqZXRpdm9zLCBlLCBvYnNlcnZhbmRvIGFzIGNhcmFjdGVyw61zdGljYXMgZG9zIHBhcmNlaXJvcy4NCg0KQWJhaXhvLCBzdWdlc3TDo28gZGUgY2FtcGFuaGEgZm9jYWRhIG5vcyA5MCUgZG9zIHBhcmNlaXJvcyBkYSBhbW9zdHJhIGNvbGhpZGEuDQoNClN1Z2VyZS1zZSBjb20gdmFsb3JlcyBwYXJhIGZhaXhhcywgbyBjb3JyZXNwb25kZW50ZSBhbyB0ZXJjZWlybyBxdWFydGlsIGRlIGNhZGEgZ3J1cG8gKC43NSUpLiANCg0KQXNzaW0sIHByb21vdmVyZW1vcyBvIGF1bWVudG8gZGEgcHJvZHXDp8OjbyBkZW50cm8gZGUgY2FkYSBncnVwby4NCg0KIyMjIyMgRmFpeGFzOg0KDQp8RmFpeGEgfCBWYWxvciB8IFJlcHJlc2VudGF0aXZpZGFkZXwgT2JqZXRpdm8gfA0KfC0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLXwNCnwgRmFpeGEgMXwgUiQgMTAuNTk2Ljk2fCA3Miw3NiUgfCBEZXNsb2NhciBhIG3DqWRpYSBkZSA2bWlsIHBhcmEgcGFyYSAxMCw1bWlsfCANCnwgRmFpeGEgMiB8ICBSJCAyNy4xNzMuMDggfCAxNiw3MSUgfCBEZXNsb2NhciBhIG3DqWRpYSBkZSAxNiw1bWlsIHBhcmEgcGFyYSAyN21pbHwNCnwgRmFpeGEgMyB8IFIkIDEzMC42MjYuNTMgfCA4LDg2JSB8IERlc2xvY2FyIGEgbcOpZGlhIGRlIDkwbWlsIHBhcmEgcGFyYSAxMzBtaWx8DQp8IEZhaXhhIDQgfCBSJCA3MDAuMDAwLDAwIHwgMSw2NyUgfCBEZXNsb2NhciBhIG3DqWRpYSBkZSA0MDBtaWwgcGFyYSBwYXJhIDcwMG1pbHwNCg0KQXMgZmFpeGFzIHBvZGVtIHNlciBhbHRlcsOhdmVpcyBkZSBhY29yZG8gY29tIG8gb2JqZXRpdm8gZGEgY2FtcGFuaGEuDQoNCiMjIyMjICoqUHJlbWlhw6fDo28gc3VnZXJpZGE6KioNCg0KKlN1cG9zacOnw7VlcyoNCg0KQ29tIGJhc2UgZW0gW2VzdHVkb3MgYW50ZXJpb3Jlc10oaHR0cHM6Ly9ycHVicy5jb20vRmFnbmVyMS8xMjY0NDcyKSwgw6kgcG9zc8OtdmVsIGFmaXJtYXIgKGNvbSA5NSUgZGUgY2VydGV6YSkgcXVlIG8gdmFsb3IgZGUgZW1pc3PDo28gZGFzIHByb3Bvc3RhcyBlc3RhcsOhIGVudHJlIFIkIDExMCwwMCBlIDE1NiwwMC4gU2VuZG8gMTEwLDAwIGEgbW9kYSAodmFsb3IgcXVlIG1haXMgc2UgZGlnaXRhIG5hIHRhYmVsYSwgZSwgY29tbyBtw6lkaWEgMTUzLDIxIC0gT0JTOiBvcyBkYWRvcyBzw6NvIGFzc2ltw6l0cmljb3MpDQoNCg0KTmVzdGEgZmFpeGEgZGUgdmFsb3INCg0KDQoNCnxGYWl4YSB8IFByZW1pYcOnw6NvIHxNZXRhIHwgUGFyY2Vpcm9zIG5hIHByZW1pYcOnw6NvIHwgVmFsb3IgcHJldmlzdG8gfA0KfC0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLXwNCnwgRmFpeGEgMXwgUiQgMjUwLDAwIHwgUiQgMTAuNTk2Ljk2ICB8IDI5NSB8IFIkIDczLjAwMCwwMCB8IA0KfCBGYWl4YSAyIHwgUiQgNTAwLDAwIHwgUiQgMjcuMTczLjA4IHwgMTM5IHwgUiQgNjkuNTAwLDAwIHwNCnwgRmFpeGEgMyB8IFIkIDEuMDAwLDAwICB8IFIkIDEzMC42MjYuNTMgfCAzMCB8IDMwLjAwMCwwMCB8DQp8IEZhaXhhIDQgfCBSJCAxLjUwMCwwMCAgfCBSJCA3MDAuMDAwLDAwIHwgNSB8IDcuNTAwLDAwIHwNCg0KKkN1c3RvIG3DrW5pbW8gcHJldmlzdG8qOiAqKlIkIDE4MC4wMDAsMDAqKg0KDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KIyANCiMgcXVhbnRvIGF1bWVudGFyZW1vcyBkZSBmYXR1cmFtZW50byBhIGNhZGEgcGFyY2Vpcm8gcXVlIGNvbnNpZ2EgYXRpbmdpciBhIG1ldGEgZGVudHJvIGRvIHNldSBncnVwbw0KIyANCiMgLS0gZmF6ZXIgdW1hIHJlZ3Jlc3PDo28gbGluZWFyDQojIC0gbW9kZWxhZ2VtDQojIHByZWNpc28gcHJldmVyICh5KSBxdWFsIMOpIG8gdmFsb3IgZ2VyYWRvIGRhZG8gcXVlIG4gKHgpIHF1YW50aWRhZGUgZGUgY29udHJhdG9zDQojIA0KIyBwcmVjaXNvLCBwYXJhIGNhZGEgY2x1c3RlciwgbyB2YWxvciBnZXJhZG8gcGVsbyBwYXJjZWlybyBlIHF1YW50aWRhZGUgZGUgY29udHJhdG9zDQojIA0KIyByZXN1bHRhZDA6IHBhcmEgY2FkYSBjb250cmF0byDDoCBtYWlzLCBwcmV2ZW1vcyB0ZXJlbW9zIHggZGUgbHVjcm8NCiMgDQojIGVzdGltYXRpdmEgw6kgZGUgcXVlIHBhcmEgY2hlZ2FyIGFvIHZhbG9yLCBvIHBhcmNlaXJhIHRlbmhhIHF1ZSBkaWdpdGFyIHggY29udHJhdG9zDQpgYGANCg0KDQoNCiMjIyBBdmFsaWHDp8OjbyBkYSBjYW1wYW5oYSBkbyBpcGhvbmUNCg0KKipPYmpldGl2b3MgZGVjbGFyYWRvcyoqDQoNCipFc3RhIENBTVBBTkhBIHRlbSBwb3Igb2JqZXRpdm8sIG1lZGlhbnRlIGRpc3RyaWJ1acOnw6NvIGRlIHByw6ptaW9zICjigJxQUkVNSUHDh8ODT+KAnSksIGZvbWVudGFyIGEgcHJvZHXDp8OjbyBkZSBGR1RTIG5hcyB0YWJlbGFzIFRVUkJPIGUgQUNFTEVSQSwgcHJvZHV0byBkaXNwb27DrXZlbCBwZWxvIE9SR0FOSVpBRE9SLCBzZWd1bmRvIG9zIGNyaXTDqXJpb3MgZGVmaW5pZG9zIG5lc3RlIHJlZ3VsYW1lbnRvKi4oU0lDKQ0KDQoNCioqVmlnw6puY2lhKioNCjIyLzEwLzIwMjQgYXTDqSBvIGRpYSAzMC8xMS8yMDI0DQoNCioqUGVyw61vZG8gY29tcGFyYWRvKioNCjE2LzA5LzIwMjQgYXTDqSBvIGRpYSAyMS8xMC8yMDI0DQoNCg0KYGBge3IsIGluY2x1ZGU9RkFMU0V9DQoNCiMgY2FycmVnYW5kbyBkYWRvcw0KY2FtcGFuaGEgPC0gcmVhZF9jc3YoInk6L0ZJTkFOQ0VJUk8vRmFnbmVyL1RoYWlzL0dlcmFkb3IgZGUgY2FtcGFuaGFzL2lucHV0X2RhdGEvY2FtcGFuaGFfaXBob25lLmNzdiIpDQphbnRlcmlvciA8LSByZWFkX2NzdigieTovRklOQU5DRUlSTy9GYWduZXIvVGhhaXMvR2VyYWRvciBkZSBjYW1wYW5oYXMvaW5wdXRfZGF0YS9jYW1wYW5oYV9pcGhvbmVfYW50ZXJpb3IuY3N2IikNCg0KDQoNCiMjIFRhbWFuaG8gZGFzIGFtb3N0cmFzDQoNCmBgYA0KDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KDQojIC0gQXBsaWNhciBvIHRlc3QtdCBkZSAyIGFtb3N0cmFzOiB2YW1vcyBjb21wYXJhciBhIG3DqWRpYSBkZSBjb250cmF0b3MgZGlnaXRhZG9zIG5vIG3DqnMgZGEgY2FtcGFuaGEgY29tIG8gbcOqcyBhbnRlcmlvciwgZSwgcGVuc2FyIGVtIGNvbXBhcmFyIGNvbSBhIG3DqWRpYSBkZSBkaWdpdGHDp8OjbyBkb3Mgw7psdGltb3MgNiBtZXNlcyBhbnRlcmlvcmVzIMOgIGNhbXBhbmhhLg0KIyAtIFZhbGlkYcOnw6NvIGRlIHN1cG9zacOnw7VlcyBlc3RhdMOtc3RpY2FzDQojIC0gT3MgZGFkb3Mgc8OjbyBjb250w61udW9zDQojIC0gQXMgYW1vc3RyYXMgc8OjbyBhbGVhdMOzcmlhcw0KIyAtIEFzIGRlbWFpcyBzdXBvc2nDp8O1ZXMgc2Vyw6NvIHZhbGlkYWRhcyBhYmFpeG8NCiMgTW9kZWxhZ2VtOg0KIyBIMDogTsOjbyBow6EgY29ycmVsYcOnw6NvIGxpbmVhciBlc3RhdGlzdGljYW1lbnRlIHNpZ25pZmljYW50ZSwgYXMgYW1vc3RyYXMgc8OjbyBpbmRlcGVuZGVudGVzLg0KIyBIYTogSMOhIGNvcnJlbGHDp8OjbyBsaW5lYXIgZXN0YXRpc3RpY2FtZW50ZSBzaWduaWZpY2FudGUsIGFzIGFtb3N0cmFzIG7Do28gc8OjbyBpbmRlcGVuZGVudGVzLg0KDQojIHByZXByb2Nlc3NhbWVudG8gY2FtcGFuaGENCmNhbXBhbmhhJGZyZXF1ZW5jaWFfbG9nIDwtIGxvZyhjYW1wYW5oYSRmcmVxdWVuY2lhKQ0KaW5kZXhfc2NhbGVzX2NhbXBhbmhhIDwtIGFicyhzY2FsZShjYW1wYW5oYSRmcmVxdWVuY2lhX2xvZykpID4gMw0KY2FtcGFuaGFfc2VtX291dGxpZXJzIDwtIGNhbXBhbmhhWyFpbmRleF9zY2FsZXNfY2FtcGFuaGEsIF0NCg0KDQoNCmBgYA0KDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KDQojIHByZXByb2Nlc3NhbWVudG8gYW50ZXJpb3INCmFudGVyaW9yJGZyZXF1ZW5jaWFfbG9nIDwtIGxvZyhhbnRlcmlvciRmcmVxdWVuY2lhKQ0KaW5kZXhfc2NhbGVzX2FudGVyaW9yIDwtIGFicyhzY2FsZShhbnRlcmlvciRmcmVxdWVuY2lhX2xvZykpID4gMw0KYW50ZXJpb3Jfc2VtX291dGxpZXJzIDwtIGFudGVyaW9yWyFpbmRleF9zY2FsZXNfYW50ZXJpb3IsIF0NCg0KDQpgYGANCg0KDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KIyBOb3JtYWxpZGFkZSAgZSBob21vZ2VpbmVpZGFkZSBkYXMgZGlzdHJpYnVpw6fDtWVzDQoNCg0KDQpjYW1wYW5oYV9zZW1fb3V0bGllcnMkZnJlcXVlbmNpYV9sb2dfc2NhbGVkIDwtIHNjYWxlKGNhbXBhbmhhX3NlbV9vdXRsaWVycyRmcmVxdWVuY2lhX2xvZykNCmFudGVyaW9yX3NlbV9vdXRsaWVycyRmcmVxdWVuY2lhX2xvZ19zY2FsZWQgPC0gc2NhbGUoYW50ZXJpb3Jfc2VtX291dGxpZXJzJGZyZXF1ZW5jaWFfbG9nKQ0KDQpwYXIobWZyb3cgPSBjKDIsIDIpKQ0KaGlzdChzY2FsZShjYW1wYW5oYV9zZW1fb3V0bGllcnMkZnJlcXVlbmNpYV9sb2dfc2NhbGVkKSkNCmhpc3Qoc2NhbGUoY2FtcGFuaGFfc2VtX291dGxpZXJzJGZyZXF1ZW5jaWFfbG9nX3NjYWxlZCkpDQpib3hwbG90KHNjYWxlKGNhbXBhbmhhX3NlbV9vdXRsaWVycyRmcmVxdWVuY2lhX2xvZ19zY2FsZWQpKQ0KYm94cGxvdChzY2FsZShjYW1wYW5oYV9zZW1fb3V0bGllcnMkZnJlcXVlbmNpYV9sb2dfc2NhbGVkKSkNCnBhcihtZnJvdyA9IGMoMSwgMSkpDQoNCg0KY2F0KCJIaXN0b2dyYW1hIGRlbW9uc3RyYSBkaXN0cmlidWnDp8OjbyBwcsOzeGltYSDDoCBub3JtYWwsIGUgYm94cGxvdHMgZGVtb25zdGFzIG3DqWRpYSBlIHF1YXJ0aXMgcHLDs3hpbW9zIikNCg0KYGBgDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KIyBhanVzdGFuZG8gZGltZW5zw7Vlcw0KY2FtcGFuaGFfc2VtX291dGxpZXJzIDwtIGNhbXBhbmhhX3NlbV9vdXRsaWVyc1szNzpucm93KGNhbXBhbmhhX3NlbV9vdXRsaWVycyksIF0NCmFudGVyaW9yX3NlbV9vdXRsaWVycw0KDQpgYGANCg0KDQpgYGB7ciwgaW5jbHVkZT1GQUxTRX0NCiMgSW5kZXBlbmTDqm5jaWEgZW50cmUgYXMgYW1vc3RyYXMgLSBjb3JyZWxhw6fDo28gcGVhcnNvbg0KDQpyZXN1bHRfY29yIDwtIGNvci50ZXN0KGNhbXBhbmhhX3NlbV9vdXRsaWVycyRmcmVxdWVuY2lhX2xvZ19zY2FsZWQsIGFudGVyaW9yX3NlbV9vdXRsaWVycyRmcmVxdWVuY2lhX2xvZ19zY2FsZWQsIA0KICAgIG1ldGhvZCA9ICdwZWFyc29uJykNCg0KDQpjYXQoIkNvbSBwLXZhbHVlIGRlICIsIHJlc3VsdF9jb3IkcC52YWx1ZSwgIm7Do28gc2UgcmVqZWl0YSBhIGhpcMOzdGVzZSBudWxhLiBDb25maXJtYW5kbyBxdWUgYXMgYW1vc3RyYXMgc8OjbyBpbmRlcGVuZGVudGVzIikNCg0KYGBgDQoNCg0KYGBge3IsIGluY2x1ZGU9RkFMU0V9DQoNCiMjIyMgQXBsaWNhbmRvIHRlc3RlIGRlIGhpcMOzdGVzZQ0KIyBIMDogTsOjbyBleGlzdGUgZGlmZXRlbsOnYSBlbnRyZSBvcyAyIGdydXBvcy4gT3MgdmFsb3JlcyBzw6NvIHBhcmVjaWRvcy4NCiMgSGE6IEV4aXN0ZSBkaWZldGVuw6dhIGVudHJlIG9zIDIgZ3J1cG9zLiBPcyB2YWxvcmVzIG7Do28gc8OjbyBwYXJlY2lkb3MuDQoNCnJlc3VsdF90ZXN0dCA8LSB0LnRlc3QoY2FtcGFuaGFfc2VtX291dGxpZXJzJGZyZXF1ZW5jaWFfbG9nX3NjYWxlZCwgYW50ZXJpb3Jfc2VtX291dGxpZXJzJGZyZXF1ZW5jaWFfbG9nX3NjYWxlZCwgYWx0ZXJuYXRpdmUgPSAnZycpDQoNCg0KYGBgDQoNCg0KYGBge3IsIGluY2x1ZGU9RkFMU0V9DQoNCmNhbXBhbmhhX3NlbV9vdXRsaWVycyRzYW1wbGVfaWQgPC0gJ2lwaG9uZScNCmFudGVyaW9yX3NlbV9vdXRsaWVycyRzYW1wbGVfaWQgPC0gJ3NlbV9pcGhvbmUnDQoNCg0KZGZfY29uY2F0IDwtIHJiaW5kKGNhbXBhbmhhX3NlbV9vdXRsaWVyc1ssIGMoInNhbXBsZV9pZCIsICJmcmVxdWVuY2lhX2xvZ19zY2FsZWQiLCAiZnJlcXVlbmNpYSIpXSwgYW50ZXJpb3Jfc2VtX291dGxpZXJzWywgYygic2FtcGxlX2lkIiwgImZyZXF1ZW5jaWFfbG9nX3NjYWxlZCIsICJmcmVxdWVuY2lhIildKQ0KDQpgYGANCg0KDQoNCg0KYGBge3IsIGVjaG89RkFMU0V9DQoNCmNvbXBhcmFuZG9fbWVkaWFzKGRhZG9zID0gZGZfY29uY2F0WywgYygic2FtcGxlX2lkIiwgJ2ZyZXF1ZW5jaWEnKV0pDQoNCmBgYA0KIyMjIyBSZXN1bHRhZG8gdGVzdGUgZGUgaGlww7N0ZXNlICh0ZXN0LXQpDQoNCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQ0KDQpyZXN1bHRfdGVzdHQkcC52YWx1ZQ0KYGBgDQoNCkNvbmZvcm1lIHRlc3RlIGRlIGhpcMOzdGVzZSAocC12YWxvciA9IDAuNTI2NyksIMOpIHBvc3PDrXZlbCBhZmlybWFyIChjb20gbsOtdmVsIGRlIGNvbmZpYW7Dp2EgZGUgOTUlKSBxdWUgbsOjbyBob3V2ZSBkaWZlcmVuw6dhIGVzdGF0aXN0aWNhbWVudGUgc2lnbmlmaWNhbnRlIG5vIHZvbHVtZSBtw6lkaW8gZGUgY29udHJhdG9zIGRpZ2l0YWRvcyBwb3IgcGFyY2Vpcm9zLg0KDQpPIGdyw6FmaWNvIGFjaW1hIGUgbyB0ZXN0ZSBkZSBoaXDDs3Rlc2Ugc2UgY29tcGxlbWVudGFtIHBhcmEgZGVtb25zdHJhciBxdWU6DQoNCi0gQSBtw6lkaWEgZGUgY29udHJhdG9zIGRpZ2l0YWRvcyBwb3IgcGFyY2Vpcm9zIG5vIG1lc21vIHBlcsOtb2RvIGFudGVyaW9yIMOgIGNhbXBhbmhhIGVzdMOhIGVudHJlIDc1Lzk1IGNvbnRyYXRvcy4NCg0KLSBBIG3DqWRpYSBkZSBjb250cmF0b3MgZGlnaXRhZG9zIHBvciBwYXJjZWlyb3MgZHVyYW50ZSBhIGNhbXBhbmhhIGVzdMOhIGVudHJlIDg1LzEwNSBjb250cmF0b3MuDQoNClNpZ25pZmljYSBkaXplciBxdWUsIG1lc21vIG9jb3JyZW5kbyB1bSBhdW1lbnRvLCBlc3RlIGF1bWVudG8gcG9kZSBzZXIgYXRyaWJ1w61kbyDDoCB2YXJpw6JuY2lhIG3DqWRpYSAobmF0dXJhbCkgZG8gbsO6bWVybyBkZSBjb250cmF0b3MgZGlnaXRhZG9zIHBvciBwYXJjZWlyb3MuIFNlbmRvIGFzc2ltLCBuYXMgYW1vc3RyYXMgY29tcGFyYWRhcywgYSBjYW1wYW5oYSBkbyBpcGhvbmUgbsOjbyBnZXJvdSBlZmVpdG8gcmVsYXZhbnRlLg0KDQoNCiMjIyBDb25jbHVzw6NvDQoNCkNhbXBhbmhhcyBjb20gbWV0YXMgZGUgcHJvZHXDp8OjbyBhY2ltYSBkb3MgUiQgMTMwLjAwMCwwMCBzw6NvIG11aXRvIGltcHJvdsOhdmVpcyBwYXJhIHF1YXNlIDk4JSBkb3MgcGFyY2Vpcm9zLiBQb3J0YW50bywgc2UgYSBjYW1wYW5oYSB2aXNhIGluY2VudGl2YXIgYSBwcm9kdcOnw6NvIG5hIGdyYW5kZSBtYXNzYSBkZSBwYXJjZWlyb3MsIGFzIG1ldGFzIGRldmVtIHNlciBtZW5vcmVzLg0KDQpPcyBncnVwb3MgYWNpbWEgc8OjbyBzdWdlc3TDtWVzIChlc3R1ZG9zIG1haXMgYXByb2Z1bmRhZG9zIHBvZGVtIHNlciByZWFsaXphZG9zLCB2aXNhbmRvIGRlc3RhY2FyIGNhZGEgdmV6IG1haXMgYXMgZGlmZXJlbsOnYXMgZW50cmUgZWxlcyksIG1hcywgc8OjbyBzdWZpY2llbnRlcyBwYXJhIGRlbW9uc3RyYXIgcXVlIGV4aXN0ZW0gY29uY2VudHJhw6fDtWVzIGRlIHBhcmNlaXJvcyBlbSBhbGd1bWFzIGZhaXhhcyBkZSB2YWxvcmVzLg0KDQpBcyBtZXRhcyBzw6NvIGRlc2VuaGFkYXMgY29tbyB1bSB2YWxvciAncHJvdsOhdmVsJyBwYXJhIGEgb3MgcGFyY2Vpcm9zIGRlbnRybyBkYXMgcmVzcGVjdGl2YXMgZmFpeGFzLCBvIHF1ZSB0b3JuYSBvIGluY2VudGl2byDDoCBwcm9kdcOnw6NvIHVtIG9iamV0aXZvIHBhbHDDoXZlbC4NCg0KQWJhaXhvLCBhIHByZW1pYcOnw6NvIHN1Z2VyaWRhIHBvciBmYWl4YSBkZSB2YWxvciwgZSwgcHJldmlzw6NvIGRlIGludmVzdGltZW50byBtw61uaW1vIGNhbGN1bGFkbyBjb20gYmFzZSBubyBtw6pzIGRlIGp1bGhvLzIwMjUuDQoNCnxGYWl4YSB8IFByZW1pYcOnw6NvIHxNZXRhIHwgUGFyY2Vpcm9zIG5hIHByZW1pYcOnw6NvIHwgVmFsb3IgcHJldmlzdG8gfA0KfC0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLXwNCnwgRmFpeGEgMXwgUiQgMjUwLDAwIHwgUiQgMTAuNTk2Ljk2ICB8IDI5NSB8IFIkIDczLjAwMCwwMCB8IA0KfCBGYWl4YSAyIHwgUiQgNTAwLDAwIHwgUiQgMjcuMTczLjA4IHwgMTM5IHwgUiQgNjkuNTAwLDAwIHwNCnwgRmFpeGEgMyB8IFIkIDEuMDAwLDAwICB8IFIkIDEzMC42MjYuNTMgfCAzMCB8IDMwLjAwMCwwMCB8DQp8IEZhaXhhIDQgfCBSJCAxLjUwMCwwMCAgfCBSJCA3MDAuMDAwLDAwIHwgNSB8IDcuNTAwLDAwIHwNCg0KKkN1c3RvIG3DrW5pbW8gcHJldmlzdG8qOiAqKlIkIDE4MC4wMDAsMDAqKg0KDQo=