Análise da Balança Comercial Brasileira e suas Principais
Commodities - Influência da Soja, Ferro e Petróleo e seus preços nas
exportações e no saldo da balança
O relatório abaixo apresenta o comportamento das exportações bem como
seus preços das 3 principais commodities do Brasil, e como a força
desses 3 produtos ditam o comportamento das exportações e do saldo
comercial da balança, podendo explicar em ambos números totais e saldos
maiores.
Balança Comercial Brasileira nos Últimos 20 anos
Em primeiro lugar, no contexto brasileiro, as exportações líquidas
configuram-se como um elemento estratégico de relevância econômica, uma
vez que exercem influência direta sobre o Produto Interno Bruto (PIB) e
assumem, de forma crescente, papel essencial no processo de
desenvolvimento financeiro do país. Nesse sentido, o Ministério do
Desenvolvimento, Indústria, Comércio e Serviços (MDIC) corrobora tal
perspectiva ao evidenciar que, em 2024, o Brasil alcançou um recorde
histórico na balança comercial, com exportações de US$ 337 bilhões,
superávit de US$ 74,6 bilhões e destaque para a indústria de
transformação, consolidando sua posição entre as dez maiores economias
do mundo em termos de comércio exterior.
Entretanto, logo após 2023, as 3 variáveis apresentaram uma queda
significativa e a previsão é para que essa redução se mantenha onde até
o momento as exportações apresentaram um valor US$ 227,6 bilhões e o
saldo um superávit de US$ 42,8 bilhões. Tal comportamento será visível
em inúmeros gráficos deste relatório deixando evidente uma desacelaração
da economia global…
Portanto, em conformidade com Simonsen (1989), há uma razão
específica para que os países se preocupem com não só com o saldo final
da balança de pagamentos, como também das conta-correntes, pois se há
decifit em ambos, eles terão de ser cobertos. E um país só poderá
cobrí-los através de investimentos diretos, aumentando seus
endividamentos externos, ou diminuindo reservas internacionais. Em
especial no país cujo será analisado no presente relatório, Brasil,
deve-se afligir especialmente mais com o tópico, pois, conforme
Cavalcante e De-Losso (2025), a dependência estrutural da exportação de
commodities como soja, minério de ferro e petróleo expõe
vulnerabilidades diante de instabilidades, e, embora alguns avanços
tenham ocorrido na diversificação da pauta exportadora, o país ainda
enfrenta dificuldades em ampliar setores de maior valor agregado. Essa
vulnerabilidade será melhor explorada ao longo deste relatório.
Diante os pontos apresentados, o presente relatório tem como objetivo
analisar empiricamente como as principais commodities que o Brasil
exporta influenciam na balança comercial, através não só do estudo de
gráficos, como também através de embasamento acadêmico e no
desenvolvimento do modelo econométrico elaborado por Nelson H.
Barbosa-Filho(2004).
Funções de Demanda por Importações e Exportações A demanda por
importações (Qm) e exportações (Qx) é representada por funções
multiplicativas de renda e câmbio real:
\[
Q_m = A Z^{-α} Q_h^β
\] \[
Q_x = B Z^{γ} Q_f^δ
\] onde: Z = E Pf/Ph é a taxa de câmbio real;
Qh é a renda real doméstica;
Qf é a renda real do resto do mundo;
α e β são, respectivamente, as elasticidades-preço e
elasticidade-renda das importações;
γ e δ são, respectivamente, as elasticidades-preço e
elasticidade-renda das exportações;
A e B captam efeitos fixos. Razões Comércio e PIB As equações são
normalizadas pelo PIB doméstico (Qh), obtendo-se:
\[
m = \frac{Z Q_m}{Q_h}
\] \[
x = \frac{Q_x}{Q_h}
\]
onde m é a razão importações/PIB e x a razão exportações/PIB.
Dinâmica das razões comerciais Derivando as equações em relação ao
tempo:
\[
\frac{dm}{dt} = m \left[ (1 - \alpha) z + (\beta - 1) q_h \right]
\frac{dx}{dt} = x \left[ \gamma z + \delta q_f - q_h \right]
\]
onde: z = taxa de crescimento da taxa de câmbio real (desvalorização
positiva);
qh = taxa de crescimento do PIB doméstico;
qf = taxa de crescimento do PIB mundial. Se α < 1, haverá uma
desvalorização real, cujo aumenta a razão importações/PIB. Se β>1, o
crescimento doméstico expande fortemente as importações. Ademais, as
exportações aumentam com desvalorização (γ>0) e com crescimento
externo (δ>0), mas são reduzidas pelo crescimento doméstico (qh).
Trade-Off Crescimento-Desvalorização O saldo comercial em relação ao PIB
evolui segundo:
\[
\frac{dx}{dt} - \frac{dm}{dt} = x(\gamma z + \delta q_f - q_h) - m[(1 -
\alpha)z + (\beta - 1)q_h]
\]
Se o objetivo é manter o saldo comercial constante (dx/dt -dm/dt =
0), obtêm-se a equação de Trade-off:
\[
q_h = \frac{x\delta q_f}{x - m(1 - \beta)} + \frac{x\gamma - m(1 -
\alpha)}{x - m(1 - \beta)} z
\]
A inclinação da curva é:
\[
\varphi = \frac{x\gamma - m(1 - \alpha)}{x - m(1 - \beta)}
\]
φ mede o quanto de desvalorização cambial é necessário (z) para
sustentar 1% adicional de crescimento (qh) mantendo o saldo comercial
estável.
Aplicação empírica no Brasil: Com base em Cavalcanti e Frischtak
(2002), os parâmetros estimados para 1980–2000 foram:
\[
\alpha = 0.74, \quad \beta = 3.39, \quad \gamma = 0.61, \quad \delta =
1.01
\]
Em 2002, observavam-se aproximadamente:
\[
x = 0.13, \quad m = 0.10, \quad q_f = 0.04 \]
\]
Substituindo-se na equação (6), Barbosa-Filho obtém:
\[
q_h = 0.356q_f + 0.144z \]
\] Logo:
\[
z \approx \frac{q_h - 0.0142}{0.144} \]
\]
Através deste modelo, é possível concluir que dadas as elasticidades
para o Brasil em 2002, a cada 1% adicional de crescimento no PIB,
exige-se uma desvalorização cambial real de aproximadamente 6,9%. Em
termos práticos, isso significa que o país se encontrava preso a uma
dinâmica em que o crescimento econômico só poderia ser sustentado ao
custo de fortes desvalorizações cambiais, com todos os efeitos
colaterais que estas implicam, notadamente pressões inflacionárias e
impactos redistributivos regressivos.
Ademais, a estrutura comercial brasileira revela-se desfavorável ao
crescimento sustentado. As importações são pouco sensíveis a variações
de preços (α<1) e, ao mesmo tempo, apresentam elevada elasticidade em
relação à renda (β>1), o que implica que qualquer aceleração do
crescimento interno se traduz rapidamente em aumentos expressivos da
demanda por bens importados, configurando assim um trade-off
extremamente custoso. E, ao longo-prazo, a estabilidade simultânea das
razões exportações/PIB e importações/PIB exigiria combinações de
crescimento muito baixo com apreciação cambial contínua. Tal cenário é
evidentemente insustentável, pois nenhuma economia consegue sustentar
uma trajetória de apreciação cambial sem perda de competitividade. Esse
resultado indica que a própria estrutura do comércio externo brasileiro
contém um viés estrutural contra o crescimento robusto.
Portanto, o modelo de Barbosa-Filho (2004) conclui que as
problemáticas brasileiras vão além de choques conjunturais, sendo
causados por restrições estruturais do comércio. A alta
elasticidade-renda das importações é o principal entrave, enquanto a
baixa elasticidade-preço das exportações e importações limitam a
eficácia da desvalorização cambial. Ou seja, mesmo que tal teoria esteja
aplicada em um contexto de 20 anos anteriores, ainda pode ser aplicada à
contemporaneidade, visto que constata-se que a trajetória de baixo
crescimento e crises cambiais do Brasil estão enraizadas na estrutura
comercial, cujo não só é dependente, como sobrevaloriza a exportação de
insumos, como a soja e minérios.
PIB Brasileiro x (%) das Exportações no PIB
O gráfico acima mostra a evolução do PIB em dólares e da participação
das exportações no PIB entre 2005 e 2024. O comportamento entre os dois
se torna bem imprevisível, uma vez que não necessariamente um aumento do
PIB significa também um aumento da porcentagem de exportações dentro
dele. Prova disso é o comportamento da porcentagem que apresentou uma
crescente a partir de 2016 variado entre 11% e 18,7% até 2023, enquanto
o PIB sofreu com aumentos e quedas no mesmo período, com destaque para
2021 com uma redução do PIB de 1,6 trilhão US$ para 1,5 trilhão US$,
porém a porcentagem de exportaççao saltou 12,6% para 18.3%.
O PIB retomou o crescimento em 2022, ultrapassando US$ 2,2 trilhões
em 2024, mas a participação das exportações no PIB manteve-se estável,
em torno de 16% a 17%. Isso indica que, embora o Brasil tenha se
recuperado em termos de produto agregado, o aumento das exportações não
acompanhou proporcionalmente o crescimento do PIB. Em síntese, o gráfico
evidencia a natureza estrutural da economia brasileira destacada por
Barbosa-Filho (2004), visto que o crescimento interno eleva as
importações e reduz a relevância das exportações no PIB, enquanto
choques externos e desvalorizações cambiais ampliam temporariamente sua
participação.
No geral, apesar de algumas quedas no PIB em alguns anos específicos
a porcentagem das exportações dentro do PIB apresentou grande
crescimento apesar da queda no último ano, o que mostra a força da
parcela que as exportações detém no PIB da economia brasileira.
Evolução do Valor Total Exportado por Produto ao Ano
Observa-se que as três commodities apresentam trajetórias semelhantes
tanto de aumento quanto de queda na grande maioria do anos
independentemente do valor do produto, com forte expansão das
exportações a partir de 2016, impulsionadas pelo aumento da demanda
internacional e pela desvalorização cambial do período. A soja se
destaca como principal produto exportado, atingindo o pico em 2022 com
cerca de US$ 53,2 bilhões, seguida por petróleo e derivados (US$ 42,5
bilhões) e minério de ferro (US$ 28,9 bilhões). O crescimento até 2021
reflete o boom das commodities, especialmente pela alta dos preços
internacionais e o fortalecimento da pauta agroexportadora
brasileira.
A partir de 2023, nota-se uma queda generalizada no valor exportado
das três categorias, sugerindo a combinação de retração de preços
internacionais, redução da demanda chinesa e valorização cambial, o que
diminui a competitividade externa. Assim, os dados confirmam novamente a
dependência brasileira de produtos primários, destacando a
vulnerabilidade do país a choques externos de preços e à oscilação do
câmbio.
Evolução dos Preços das Commodities por Ano
O gráfico apresentado evidencia como as flutuações dos preços
internacionais impactam diretamente a pauta exportadora brasileira, dada
sua alta concentração nesses produtos. Entre 2015 e 2020, observa-se
relativa estabilidade nos preços, com variações moderadas e um leve
crescimento a partir de 2018, refletindo a recuperação do comércio
global após a recessão brasileira e a crise das commodities de 2014 à
2015. Contudo, entre 2021 e 2022, ocorreu um forte aumento generalizado
dos preços impulsionados pela retomada pós-pandemia, gargalos logísticos
e tensões geopolíticas, que pressionaram os preços de energia e
alimentos.
A partir de 2023, houve uma tendência de queda nos preços das três
commodities, onde a soja e o petróleo convergiram para US$ 523/t e o
minério de ferro caiu para US$ 81/t. Essa retração reflete a
desaceleração da economia chinesa, principal destino das exportações
brasileiras, e o refluxo dos preços internacionais após o pico de 2022.
Em termos estruturais, o gráfico reforça o argumento apresentado através
do modelo econométrico discorrido, onde a dependência de produtos
primários torna o desempenho externo nacional fortemente condicionado às
flutuações de preços internacionais.
Variação Percentual Anual dos Preços
O gráfico apresentado evidencia a forte volatilidade que caracteriza
o comportamento da soja, do minério de ferro e do petróleo. Esses bens,
centrais na pauta exportadora brasileira, apresentam oscilações
acentuadas em função de choques externos e ciclos globais de demanda.
Observa-se, por exemplo, um ciclo de expansão expressiva entre 2007 e
2011, impulsionado pelo aquecimento da economia mundial, seguido por
retrações bruscas durante crises, como a financeira de 2008–2009.
Entre 2014 e 2016, nota-se um movimento de queda generalizada,
principalmente no preço do petróleo, que chegou a cair quase 50% em um
único ano, refletindo o excesso de oferta global, mas, a partir de 2017,
os preços se recuperam gradualmente, atingindo novo auge em 2021–2022,
impulsionados pela retomada econômica pós-pandemia e pelas tensões
geopolíticas decorrentes da guerra na Ucrânia, que elevaram
significativamente os preços de energia e alimentos. Contudo, a partir
de 2023, há uma tendência de estabilização e queda nos preços, indicando
o arrefecimento da demanda global e a recomposição da oferta
internacional.
Correlação entre as Commodities
O gráfico apresenta os coeficientes de correlação entre os preços da
soja, do minério de ferro e do petróleo e derivados, revelando o grau de
associação entre suas variações ao longo do tempo. Os resultados mostram
relações positivas e relativamente fortes: soja e petróleo (0,78),
minério de ferro e petróleo (0,70), e soja e minério de ferro (0,67).
Esses valores indicam que os preços das principais commodities
exportadas pelo Brasil tendem a se mover na mesma direção, refletindo a
influência de fatores macroeconômicos globais comuns. Ou seja, quando há
valorização em um desses mercados, é provável que as demais commodities
também se apreciem.
Essa forte interdependência reforça a vulnerabilidade da pauta
exportadora brasileira, uma vez que choques negativos nos preços
internacionais afetam simultaneamente diversos setores estratégicos
Apesar de existirem situações fora da curva como já abordadas na
análise do gráfico de Variação Percentual Anual dos Preços, tal
correlação favorável entre todos os produtos possibilitou realizar uma
análise conjunta usando o preço das 3 commodities em um preço ponderado,
sendo calculado a partir da participação de cada produto nas exportações
totais da balança ao longo dos anos, dados esses presentes no primeiro
gráfico apresentado.
TABELA DE REFERÊNCIA - ESCALAS DE CORRELAÇÃO:
0.90 - 1.00 Correlação Perfeita Movem-se praticamente juntas 0.70 -
0.89 Correlação Muito Forte Alta sincronização 0.50 - 0.69 Correlação
Forte Sincronização significativa 0.30 - 0.49 Correlação Moderada
Relação perceptível 0.10 - 0.29 Correlação Fraca Pouca relação 0.00 -
0.09 Sem Correlação Comportamento independente
Comparativo entre Exportações e Preço Ponderado Real
O gráfico evidencia a relação direta entre os preços internacionais
das 3 commodities (agora ponderados em um só) e o desempenho exportador
brasileiro, onde ambos apresentam comportamento semelhante mostrando a
força e a influência desses 3 produtos nas exportações brasileiras. Em
períodos de valorização das commodities, como entre 2005–2008 e
2021–2022, coincidem com aumentos expressivos nas exportações, enquanto
fases de queda dos preços, como 2014–2016, resultam em retração do valor
exportado. Isso demonstra que as receitas externas do país são
fortemente influenciadas pelas variações de preços globais, mais do que
pelos volumes exportados.
Nos anos recentes, após o pico de 2022, há uma estabilização dos
preços e manutenção das exportações em patamar elevado, indicando
relativa resiliência. No entanto, o gráfico reforça a dependência
estrutural brasileira de commodities, o que torna o crescimento
econômico vulnerável a choques externos. Tal dinâmica reflete a
restrição externa ao crescimento, limitando o potencial de expansão
sustentável da economia.
Apesar de ainda não ter terminado a tendência para 2025 é continuar a
redução tanto do preço quanto das exportações, reforçando ainda mais o
ponto de que o preço internacional e as exportações brasileiras
apresentam um comportamento similar.
Impacto dos Preços das Commodities no Saldo Comercial
O gráfico acima mostra a relação entre os preços das commodities e o
desempenho do saldo comercial do Brasil entre 2005 e 2025.
Vale ressaltar que diferentemente do último gráfico, para se analisar
o saldo é necessário adicionar não somente as exportações já analisadas
mas as importações também. De forma contrária as exportações totais ao
se analisar somente o saldo com o preço ponderado, não se observa uma
relação parecida entre exportações e o preço, justamente pelas
importações e outros fatores externos monetários e cambiais além de
barreiras comerciais impactarem o valor do saldo final, mostrando uma
grande variação mostrando que se caso o preço aumente ou diminua, não
necessariamente o saldo irá seguir esse padrão. Isso é evidente em 2023
por exemplo onde houve uma redução considerável no preço, e o saldo saiu
de 61 bilhões US$ para quase 99 bilhões US$, muito por conta das
importações que também caíram junto com o preço.
Nos períodos de valorização das commodities, especialmente entre 2007
e 2011 e novamente em 2021 e 2022, observa-se um crescimento expressivo
das exportações, acompanhado pela expansão do saldo comercial positivo.
Em contrapartida, nas fases de queda de preços, como em 2014 e 2016, o
saldo comercial se reduz significativamente, ainda que as importações
também desaceleram. Isso indica que a deterioração dos termos de troca
afeta diretamente a capacidade de geração de divisas do país.
Conclusão
Os resultados obtidos neste relatório indicam que a estrutura
exportadora brasileira permanece fortemente dependente de produtos
primários, o que evidencia a persistência de um padrão de especialização
produtiva baseado em bens de baixo valor agregado. Essa configuração
acentua a vulnerabilidade externa da economia nacional, tornando o
desempenho comercial e o crescimento econômico condicionados a fatores
exógenos, como a variação dos preços internacionais e a dinâmica da
demanda global. Além disso, a aplicação do modelo de restrição externa
ao crescimento revelou que o Brasil enfrenta um trade-off estrutural
entre expansão do produto interno e equilíbrio do setor externo. O
aumento do PIB, ao elevar a demanda por importações, onde a
elasticidade-renda é superior a um, impõe a necessidade de
desvalorizações cambiais para manutenção do saldo comercial, implicando
custos inflacionários e redistributivos. Tal resultado reforça a tese de
que o crescimento brasileiro encontra-se limitado não apenas por choques
conjunturais, mas por condicionantes estruturais de sua inserção
internacional.
As análises empíricas e gráficas corroboraram esse diagnóstico, ao
evidenciar as correlações positivas entre os preços das commodities e o
desempenho da balança comercial, bem como a natureza intermitente da
relação entre câmbio, exportações e crescimento. Dessa forma, o
desempenho externo do país tem se mostrado mais sensível à precificação
internacional do que a ganhos de produtividade, o que explica a
volatilidade da balança e a recorrência de episódios de restrição
externa.
Referências
BARBOSA-FILHO, Nelson H. Growth, exchange rates and trade in
Brazil: a structuralist post-Keynesian approach. Nova Economia, Belo
Horizonte, v. 14, n. 2, p. 59–86, maio/ago. 2004. Disponível em: https://www.researchgate.net/publication/5200170_Growth_exchange_rates_and_trade_in_Brazil_a_structuralist_post-Keynesian_approach
Acesso em: 5 out. 2025.
BONELLI, Regis. Produtividade e crescimento no Brasil: o que
(não) aprendemos nos anos 1990. Texto para Discussão, Instituto de
Pesquisa Econômica Aplicada (IPEA), n. 1059, 2005.
BRESSER-PEREIRA, Luiz Carlos; GALA, Paulo. Por que a poupança
externa não promove crescimento. Revista de Economia Política, São
Paulo, v. 27, n. 1, p. 3–19, jan./mar. 2007.
BRASIL. Ministério do Desenvolvimento, Indústria e Comércio
Exterior. Site institucional. Disponível em: https://www.gov.br/mdic/pt-br Acesso em: 5 out.
2025.
CARNEIRO, Ricardo. Globalização e inserção externa: a economia
brasileira nos anos 1990. Novos Estudos CEBRAP, São Paulo, n. 80,
p. 5–28, mar. 2008.
CORDEN, W. M.; NEARY, J. P. Booming sector and
de-industrialisation in a small open economy. The Economic Journal, v.
92, n. 368, p. 825–848, 1982.
KRUGMAN, Paul. International economics: theory and policy. 4.
ed. Reading, MA: Addison-Wesley, 1998.
KUPFER, David; ROCHA, Fernando. Industrialização no Brasil: da
substituição de importações à globalização. Rio de Janeiro: Campus,
2008.
MINISTÉRIO DO DESENVOLVIMENTO, INDÚSTRIA, COMÉRCIO E SERVIÇOS.
Brasil se destaca com recorde de exportação de US$ 181,9 bilhões na
indústria de transformação. Brasília, 2025. Disponível em: https://www.gov.br/mdic/pt-br/assuntos/noticias/2025/janeiro/brasil-se-destaca-com-recorde-de-exportacao-de-us-181-9-bilhoes-na-industria-de-transformacao
Acesso em: 5 out. 2025.
MINISTÉRIO DO DESENVOLVIMENTO, INDÚSTRIA, COMÉRCIO E SERVIÇOS.
Balança comercial brasileira – principais resultados. Disponível em: https://balanca.economia.gov.br/balanca/pg_principal_bc/principais_resultados.html
Acesso em: 5 out. 2025.
MINISTÉRIO DO DESENVOLVIMENTO, INDÚSTRIA, COMÉRCIO E SERVIÇOS.
Comex Stat. Disponível em: https://comexstat.mdic.gov.br/pt/home Acesso em: 5 out.
2025.
OREIRO, José Luis; FEIJÓ, Carmem Aparecida. Desindustrialização:
conceituação, causas, efeitos e o caso brasileiro. Revista de Economia
Política, São Paulo, v. 30, n. 2, p. 219–232, abr./jun. 2010.
PRATES, Daniela Magalhães. Apreciação cambial e
desindustrialização no Brasil. Revista de Economia Política, São Paulo,
v. 27, n. 1, p. 47–65, jan./mar. 2007.
SIMONSEN, Mario Henrique. A conta-corrente do governo: 1970–1988.
Rio de Janeiro: Fundação Getúlio Vargas, 1989.
BANCO CENTRAL DO BRASIL. Estatísticas do setor externo – 2025.
Brasília: BCB, 2025. Disponível em: https://www.bcb.gov.br/content/estatisticas/hist_estatisticassetorexterno/202508_Texto_de_estatisticas_do_setor_externo.pdf
Acesso em: 5 out. 2025.
BANCO CENTRAL DO BRASIL. Relatório de gestão das reservas
internacionais – 2025. Brasília: BCB, 2025. Disponível em: https://www.bcb.gov.br/content/publicacoes/relgestaoreservas/GESTAORESERVAS202503-relatorio_anual_reservas_internacionais_2025.pdf
Acesso em: 5 out. 2025.
BANCO CENTRAL DO BRASIL. Séries temporais – Setor externo.
Disponível em: https://www3.bcb.gov.br/sgspub/localizarseries Acesso
em: 5 out. 2025.
BNDES – Banco Nacional de Desenvolvimento Econômico e Social.
Balanço de pagamentos do Brasil. Rio de Janeiro: BNDES, [s.d.].
Disponível em: https://web.bndes.gov.br/bib/jspui/bitstream/1408/28167/1/PRFol_216591_Balan%C3%A7o%20de%20pagamentos%20do%20Brasil__.pdf
Acesso em: 5 out. 2025.
FIPE – Fundação Instituto de Pesquisas Econômicas. Boletim
Informações FIPE, n. 534, p. 38–47, 2025. Disponível em: https://downloads.fipe.org.br/publicacoes/bif/bif534.pdf
Acesso em: 5 out. 2025.
IPEA – Instituto de Pesquisa Econômica Aplicada. Publicação sobre
o setor externo brasileiro. Brasília: IPEA, [s.d.]. Disponível em: https://repositorio.ipea.gov.br/server/api/core/bitstreams/50874850-1625-464f-ada9-9aed7bb8f473/content
Acesso em: 5 out. 2025.
IPEA – Instituto de Pesquisa Econômica Aplicada. Repositório
institucional IPEA. Disponível em: https://repositorio.ipea.gov.br Acesso em: 5 out. 2025.
IPEADATA. Base de dados macroeconômicos. Disponível em: https://www.ipeadata.gov.br. Acesso em: 5 out.
2025.
PASSEI DIRETO. Economia Internacional I. Material compartilhado
por usuário. Disponível em: https://www.passeidireto.com/arquivo/72212354/economia-internacional-i
Acesso em: 5 out. 2025.7
FGV – Fundação Getulio Vargas. Relatório sobre balanço de
pagamentos e comércio exterior. Rio de Janeiro: FGV, [s.d.]. Disponível
em: https://repositorio.fgv.br/server/api/core/bitstreams/f76bb8da-a3ca-4389-ad3c-a1ca63269307/content
Acesso em: 5 out. 2025.
LS0tDQp0aXRsZTogIlJlbGF0w7NyaW8gSW1wYWN0byBCYWxhbsOnYSBDb21lcmNpYWwgU29qYSwgUGV0csOzbGVvIGUgTWluw6lyaW8iDQphdXRob3I6ICJKb8OjbyBQZWRybyBHb2RpbmhvIFF1ZXJpZG8gZSBKYWRlIFNpbcOjbyBGcmFuY28gQmljYWxobyINCmRhdGU6ICIyMDI1LTA5LTE2Ig0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KICAgIHRoZW1lOiBsdW1lbg0KICAgIGhpZ2hsaWdodDogdGFuZ28NCiAgICBjb2RlX2ZvbGRpbmc6IHNob3cNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSkNCg0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoaGlnaGNoYXJ0ZXIpDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkoc2lkcmFyKQ0KbGlicmFyeShpcGVhZGF0YXIpDQpsaWJyYXJ5KHF1YW50bW9kKQ0KbGlicmFyeShzY2FsZXMpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCmxpYnJhcnkocmJjYikNCmxpYnJhcnkocmVhZHhsKQ0KbGlicmFyeSh3cml0ZXhsKQ0KbGlicmFyeShodHRyKQ0KbGlicmFyeSh0aWR5cikNCmBgYA0KDQojIyAqKkFuw6FsaXNlIGRhIEJhbGFuw6dhIENvbWVyY2lhbCBCcmFzaWxlaXJhIGUgc3VhcyBQcmluY2lwYWlzIENvbW1vZGl0aWVzIC0gSW5mbHXDqm5jaWEgZGEgU29qYSwgRmVycm8gZSBQZXRyw7NsZW8gZSBzZXVzIHByZcOnb3MgbmFzIGV4cG9ydGHDp8O1ZXMgZSBubyBzYWxkbyBkYSBiYWxhbsOnYSoqDQoNCk8gcmVsYXTDs3JpbyBhYmFpeG8gYXByZXNlbnRhIG8gY29tcG9ydGFtZW50byBkYXMgZXhwb3J0YcOnw7VlcyBiZW0gY29tbyBzZXVzIHByZcOnb3MgZGFzIDMgcHJpbmNpcGFpcyBjb21tb2RpdGllcyBkbyBCcmFzaWwsIGUgY29tbyBhIGZvcsOnYSBkZXNzZXMgMyBwcm9kdXRvcyBkaXRhbSBvIGNvbXBvcnRhbWVudG8gZGFzIGV4cG9ydGHDp8O1ZXMgZSBkbyBzYWxkbyBjb21lcmNpYWwgZGEgYmFsYW7Dp2EsIHBvZGVuZG8gZXhwbGljYXIgZW0gYW1ib3MgbsO6bWVyb3MgdG90YWlzIGUgc2FsZG9zIG1haW9yZXMuIA0KDQojIyAqQmFsYW7Dp2EgQ29tZXJjaWFsIEJyYXNpbGVpcmEgbm9zIMOabHRpbW9zIDIwIGFub3MqDQoNCmBgYHtyfQ0KdG90YWlzX2FudWFpcyA8LSByZWFkX2V4Y2VsKCJUb3RhbEFudWFsRXhwLnhsc3giLCByYW5nZSA9ICJBNjpFMjciKSAlPiUNCiAgbXV0YXRlKA0KICAgIEV4cG9ydGHDp8O1ZXMgPSByb3VuZChFeHBvcnRhw6fDtWVzLCBkaWdpdHMgPSAyKSwNCiAgICBJbXBvcnRhw6fDtWVzID0gcm91bmQoSW1wb3J0YcOnw7VlcywgZGlnaXRzID0gMiksDQogICAgU2FsZG8gPSByb3VuZChTYWxkbywgZGlnaXRzID0gMiksDQogICAgQ29ycmVudGUgPSByb3VuZChDb3JyZW50ZSwgZGlnaXRzID0gMiksDQogICAgRGF0YSA9IGFzLmNoYXJhY3RlcihEYXRhKSwgIA0KICAgIERhdGFfU3RvY2sgPSBhcy5EYXRlKHBhc3RlMChhcy5jaGFyYWN0ZXIoRGF0YSksICItMDEtMDEiKSkNCiAgKQ0KZGFkb3NfYmFsYW5jYV9zdG9jayA8LSB0b3RhaXNfYW51YWlzICU+JQ0KICBhcnJhbmdlKERhdGFfU3RvY2spICU+JQ0KICBtdXRhdGUoDQogICAgdGltZXN0YW1wID0gZGF0ZXRpbWVfdG9fdGltZXN0YW1wKERhdGFfU3RvY2spDQogICkNCmhpZ2hjaGFydCh0eXBlID0gInN0b2NrIikgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRhZG9zX2JhbGFuY2Ffc3RvY2sgJT4lIHNlbGVjdCh0aW1lc3RhbXAsIEV4cG9ydGHDp8O1ZXMpKSwNCiAgICB0eXBlID0gImxpbmUiLA0KICAgIG5hbWUgPSAiRXhwb3J0YcOnw7VlcyAoVVMkIGJpKSIsDQogICAgY29sb3IgPSAiIzAyMDIzYyIsDQogICAgeUF4aXMgPSAwLA0KICAgIHRvb2x0aXAgPSBsaXN0KHZhbHVlRGVjaW1hbHMgPSAwLCB2YWx1ZVByZWZpeCA9ICJVUyQgIiwgdmFsdWVTdWZmaXggPSAiIGJpIikNCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3NfYmFsYW5jYV9zdG9jayAlPiUgc2VsZWN0KHRpbWVzdGFtcCwgSW1wb3J0YcOnw7VlcykpLA0KICAgIHR5cGUgPSAibGluZSIsIA0KICAgIG5hbWUgPSAiSW1wb3J0YcOnw7VlcyAoVVMkIGJpKSIsDQogICAgY29sb3IgPSAiI0ZFQjcxMiIsDQogICAgeUF4aXMgPSAwLA0KICAgIHRvb2x0aXAgPSBsaXN0KHZhbHVlRGVjaW1hbHMgPSAwLCB2YWx1ZVByZWZpeCA9ICJVUyQgIiwgdmFsdWVTdWZmaXggPSAiIGJpIikNCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3NfYmFsYW5jYV9zdG9jayAlPiUgc2VsZWN0KHRpbWVzdGFtcCwgU2FsZG8pKSwNCiAgICB0eXBlID0gImxpbmUiLCANCiAgICBuYW1lID0gIlNhbGRvIENvbWVyY2lhbCAoVVMkIGJpKSIsDQogICAgY29sb3IgPSAiIzQ2YjFlMSIsDQogICAgeUF4aXMgPSAxLA0KICAgIHRvb2x0aXAgPSBsaXN0KHZhbHVlRGVjaW1hbHMgPSAwLCB2YWx1ZVByZWZpeCA9ICJVUyQgIiwgdmFsdWVTdWZmaXggPSAiIGJpIikNCiAgKSAlPiUNCiAgaGNfeUF4aXNfbXVsdGlwbGVzKA0KICAgIGxpc3QoDQogICAgICB0aXRsZSA9IGxpc3QodGV4dCA9ICJFeHBvcnRhw6fDtWVzIGUgSW1wb3J0YcOnw7VlcyAoVVMkIGJpKSIpLA0KICAgICAgb3Bwb3NpdGUgPSBGQUxTRQ0KICAgICksDQogICAgbGlzdCgNCiAgICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gIlNhbGRvIENvbWVyY2lhbCAoVVMkIGJpKSIpLA0KICAgICAgb3Bwb3NpdGUgPSBUUlVFDQogICAgKQ0KICApICU+JQ0KICBoY190aXRsZSh0ZXh0ID0gIkJhbGFuw6dhIENvbWVyY2lhbCBCcmFzaWxlaXJhIC0gw5psdGltYXMgMiBEw6ljYWRhcyIpICU+JQ0KICBoY19zdWJ0aXRsZSh0ZXh0ID0gIkV2b2x1w6fDo28gZGFzIGV4cG9ydGHDp8O1ZXMsIGltcG9ydGHDp8O1ZXMgZSBzYWxkbyBjb21lcmNpYWwiKSAlPiUNCiAgaGNfY3JlZGl0cygNCiAgICBlbmFibGVkID0gVFJVRSwgDQogICAgdGV4dCA9ICJGb250ZTogTURJQyAtIE1pbmlzdMOpcmlvIGRvIERlc2Vudm9sdmltZW50bywgSW5kw7pzdHJpYSwgQ29tw6lyY2lvIGUgU2VydmnDp29zIg0KICApICU+JQ0KICBoY19yYW5nZVNlbGVjdG9yKA0KICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgIGJ1dHRvbnMgPSBsaXN0KA0KICAgICAgbGlzdCh0eXBlID0gJ3llYXInLCBjb3VudCA9IDUsIHRleHQgPSAnNVknKSwNCiAgICAgIGxpc3QodHlwZSA9ICd5ZWFyJywgY291bnQgPSAxMCwgdGV4dCA9ICcxMFknKSwNCiAgICAgIGxpc3QodHlwZSA9ICdhbGwnLCB0ZXh0ID0gJ0FsbCcpDQogICAgKQ0KICApICU+JQ0KICBoY190b29sdGlwKA0KICAgIHNoYXJlZCA9IFRSVUUsDQogICAgaGVhZGVyRm9ybWF0ID0gJzxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHgiPjxiPntwb2ludC5rZXk6JVl9PC9iPjwvc3Bhbj48YnIvPicNCiAgKSAlPiUNCiAgaGNfbGVnZW5kKA0KICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgIGFsaWduID0gImNlbnRlciIsDQogICAgdmVydGljYWxBbGlnbiA9ICJib3R0b20iDQogICkNCmBgYA0KDQpFbSBwcmltZWlybyBsdWdhciwgbm8gY29udGV4dG8gYnJhc2lsZWlybywgYXMgZXhwb3J0YcOnw7VlcyBsw61xdWlkYXMgY29uZmlndXJhbS1zZSBjb21vIHVtIGVsZW1lbnRvIGVzdHJhdMOpZ2ljbyBkZSByZWxldsOibmNpYSBlY29uw7RtaWNhLCB1bWEgdmV6IHF1ZSBleGVyY2VtIGluZmx1w6puY2lhIGRpcmV0YSBzb2JyZSBvIFByb2R1dG8gSW50ZXJubyBCcnV0byAoUElCKSBlIGFzc3VtZW0sIGRlIGZvcm1hIGNyZXNjZW50ZSwgcGFwZWwgZXNzZW5jaWFsIG5vIHByb2Nlc3NvIGRlIGRlc2Vudm9sdmltZW50byBmaW5hbmNlaXJvIGRvIHBhw61zLiBOZXNzZSBzZW50aWRvLCBvIE1pbmlzdMOpcmlvIGRvIERlc2Vudm9sdmltZW50bywgSW5kw7pzdHJpYSwgQ29tw6lyY2lvIGUgU2VydmnDp29zIChNRElDKSBjb3Jyb2JvcmEgdGFsIHBlcnNwZWN0aXZhIGFvIGV2aWRlbmNpYXIgcXVlLCBlbSAyMDI0LCBvIEJyYXNpbCBhbGNhbsOnb3UgdW0gcmVjb3JkZSBoaXN0w7NyaWNvIG5hIGJhbGFuw6dhIGNvbWVyY2lhbCwgY29tIGV4cG9ydGHDp8O1ZXMgZGUgVVNcJCAzMzcgYmlsaMO1ZXMsIHN1cGVyw6F2aXQgZGUgVVNcJCA3NCw2IGJpbGjDtWVzIGUgZGVzdGFxdWUgcGFyYSBhIGluZMO6c3RyaWEgZGUgdHJhbnNmb3JtYcOnw6NvLCBjb25zb2xpZGFuZG8gc3VhIHBvc2nDp8OjbyBlbnRyZSBhcyBkZXogbWFpb3JlcyBlY29ub21pYXMgZG8gbXVuZG8gZW0gdGVybW9zIGRlIGNvbcOpcmNpbyBleHRlcmlvci4NCg0KRW50cmV0YW50bywgbG9nbyBhcMOzcyAyMDIzLCBhcyAzIHZhcmnDoXZlaXMgYXByZXNlbnRhcmFtIHVtYSBxdWVkYSBzaWduaWZpY2F0aXZhIGUgYSBwcmV2aXPDo28gw6kgcGFyYSBxdWUgZXNzYSByZWR1w6fDo28gc2UgbWFudGVuaGEgb25kZSBhdMOpIG8gbW9tZW50byBhcyBleHBvcnRhw6fDtWVzIGFwcmVzZW50YXJhbSB1bSB2YWxvciBVU1wkIDIyNyw2IGJpbGjDtWVzIGUgbyBzYWxkbyB1bSBzdXBlcsOhdml0IGRlIFVTXCQgNDIsOCBiaWxow7Vlcy4gVGFsIGNvbXBvcnRhbWVudG8gc2Vyw6Egdmlzw612ZWwgZW0gaW7Dum1lcm9zIGdyw6FmaWNvcyBkZXN0ZSByZWxhdMOzcmlvIGRlaXhhbmRvIGV2aWRlbnRlIHVtYSBkZXNhY2VsYXJhw6fDo28gZGEgZWNvbm9taWEgZ2xvYmFsLi4uDQoNClBvcnRhbnRvLCBlbSBjb25mb3JtaWRhZGUgY29tIFNpbW9uc2VuICgxOTg5KSwgaMOhIHVtYSByYXrDo28gZXNwZWPDrWZpY2EgcGFyYSBxdWUgb3MgcGHDrXNlcyBzZSBwcmVvY3VwZW0gY29tIG7Do28gc8OzIGNvbSBvIHNhbGRvIGZpbmFsIGRhIGJhbGFuw6dhIGRlIHBhZ2FtZW50b3MsIGNvbW8gdGFtYsOpbSBkYXMgY29udGEtY29ycmVudGVzLCBwb2lzIHNlIGjDoSBkZWNpZml0IGVtIGFtYm9zLCBlbGVzIHRlcsOjbyBkZSBzZXIgY29iZXJ0b3MuIEUgdW0gcGHDrXMgc8OzIHBvZGVyw6EgY29icsOtLWxvcyBhdHJhdsOpcyBkZSBpbnZlc3RpbWVudG9zIGRpcmV0b3MsIGF1bWVudGFuZG8gc2V1cyBlbmRpdmlkYW1lbnRvcyBleHRlcm5vcywgb3UgZGltaW51aW5kbyByZXNlcnZhcyBpbnRlcm5hY2lvbmFpcy4gRW0gZXNwZWNpYWwgbm8gcGHDrXMgY3VqbyBzZXLDoSBhbmFsaXNhZG8gbm8gcHJlc2VudGUgcmVsYXTDs3JpbywgQnJhc2lsLCBkZXZlLXNlIGFmbGlnaXIgZXNwZWNpYWxtZW50ZSBtYWlzIGNvbSBvIHTDs3BpY28sIHBvaXMsIGNvbmZvcm1lIENhdmFsY2FudGUgZSBEZS1Mb3NzbyAoMjAyNSksIGEgZGVwZW5kw6puY2lhIGVzdHJ1dHVyYWwgZGEgZXhwb3J0YcOnw6NvIGRlIGNvbW1vZGl0aWVzIGNvbW8gc29qYSwgbWluw6lyaW8gZGUgZmVycm8gZSBwZXRyw7NsZW8gZXhww7VlIHZ1bG5lcmFiaWxpZGFkZXMgZGlhbnRlIGRlIGluc3RhYmlsaWRhZGVzLCBlLCBlbWJvcmEgYWxndW5zIGF2YW7Dp29zIHRlbmhhbSBvY29ycmlkbyBuYSBkaXZlcnNpZmljYcOnw6NvIGRhIHBhdXRhIGV4cG9ydGFkb3JhLCBvIHBhw61zIGFpbmRhIGVuZnJlbnRhIGRpZmljdWxkYWRlcyBlbSBhbXBsaWFyIHNldG9yZXMgZGUgbWFpb3IgdmFsb3IgYWdyZWdhZG8uIEVzc2EgdnVsbmVyYWJpbGlkYWRlIHNlcsOhIG1lbGhvciBleHBsb3JhZGEgYW8gbG9uZ28gZGVzdGUgcmVsYXTDs3Jpby4NCg0KRGlhbnRlIG9zIHBvbnRvcyBhcHJlc2VudGFkb3MsIG8gcHJlc2VudGUgcmVsYXTDs3JpbyB0ZW0gY29tbyBvYmpldGl2byBhbmFsaXNhciBlbXBpcmljYW1lbnRlIGNvbW8gYXMgcHJpbmNpcGFpcyBjb21tb2RpdGllcyBxdWUgbyBCcmFzaWwgZXhwb3J0YSBpbmZsdWVuY2lhbSBuYSBiYWxhbsOnYSBjb21lcmNpYWwsIGF0cmF2w6lzIG7Do28gc8OzIGRvIGVzdHVkbyBkZSBncsOhZmljb3MsIGNvbW8gdGFtYsOpbSBhdHJhdsOpcyBkZSBlbWJhc2FtZW50byBhY2Fkw6ptaWNvIGUgbm8gZGVzZW52b2x2aW1lbnRvIGRvIG1vZGVsbyBlY29ub23DqXRyaWNvIGVsYWJvcmFkbyBwb3IgTmVsc29uIEguIEJhcmJvc2EtRmlsaG8oMjAwNCkuDQoNCkZ1bsOnw7VlcyBkZSBEZW1hbmRhIHBvciBJbXBvcnRhw6fDtWVzIGUgRXhwb3J0YcOnw7VlcyBBIGRlbWFuZGEgcG9yIGltcG9ydGHDp8O1ZXMgKFFt4oCLKSBlIGV4cG9ydGHDp8O1ZXMgKFF44oCLKSDDqSByZXByZXNlbnRhZGEgcG9yIGZ1bsOnw7VlcyBtdWx0aXBsaWNhdGl2YXMgZGUgcmVuZGEgZSBjw6JtYmlvIHJlYWw6DQoNCiQkDQpRX20gPSBBIFpeey3OsX0gUV9oXs6yDQokJA0KJCQNClFfeCA9IEIgWl57zrN9IFFfZl7OtA0KJCQNCm9uZGU6IFogPSBF4oCJUGYvUGggw6kgYSB0YXhhIGRlIGPDom1iaW8gcmVhbDsNCg0KUWjigIsgw6kgYSByZW5kYSByZWFsIGRvbcOpc3RpY2E7DQoNClFmIMOpIGEgcmVuZGEgcmVhbCBkbyByZXN0byBkbyBtdW5kbzsNCg0KzrEgZSDOsiBzw6NvLCByZXNwZWN0aXZhbWVudGUsIGFzIGVsYXN0aWNpZGFkZXMtcHJlw6dvIGUgZWxhc3RpY2lkYWRlLXJlbmRhIGRhcyBpbXBvcnRhw6fDtWVzOw0KDQrOsyBlIM60IHPDo28sIHJlc3BlY3RpdmFtZW50ZSwgYXMgZWxhc3RpY2lkYWRlcy1wcmXDp28gZSBlbGFzdGljaWRhZGUtcmVuZGEgZGFzIGV4cG9ydGHDp8O1ZXM7DQoNCkEgZSBCIGNhcHRhbSBlZmVpdG9zIGZpeG9zLiBSYXrDtWVzIENvbcOpcmNpbyBlIFBJQiBBcyBlcXVhw6fDtWVzIHPDo28gbm9ybWFsaXphZGFzIHBlbG8gUElCIGRvbcOpc3RpY28gKFFoKSwgb2J0ZW5kby1zZToNCg0KJCQNCm0gPSBcZnJhY3taIFFfbX17UV9ofQ0KJCQNCiQkDQp4ID0gXGZyYWN7UV94fXtRX2h9IA0KJCQNCg0KDQpvbmRlIG0gw6kgYSByYXrDo28gaW1wb3J0YcOnw7Vlcy9QSUIgZSB4IGEgcmF6w6NvIGV4cG9ydGHDp8O1ZXMvUElCLiBEaW7Dom1pY2EgZGFzIHJhesO1ZXMgY29tZXJjaWFpcyBEZXJpdmFuZG8gYXMgZXF1YcOnw7VlcyBlbSByZWxhw6fDo28gYW8gdGVtcG86DQoNCiQkDQogXGZyYWN7ZG19e2R0fSA9IG0gXGxlZnRbICgxIC0gXGFscGhhKSB6ICsgKFxiZXRhIC0gMSkgcV9oIFxyaWdodF0gDQogXGZyYWN7ZHh9e2R0fSA9IHggXGxlZnRbIFxnYW1tYSB6ICsgXGRlbHRhIHFfZiAtIHFfaCBccmlnaHRdIA0KJCQNCg0Kb25kZTogeiA9IHRheGEgZGUgY3Jlc2NpbWVudG8gZGEgdGF4YSBkZSBjw6JtYmlvIHJlYWwgKGRlc3ZhbG9yaXphw6fDo28gcG9zaXRpdmEpOw0KDQpxaCDigIsgPSB0YXhhIGRlIGNyZXNjaW1lbnRvIGRvIFBJQiBkb23DqXN0aWNvOw0KDQpxZiA9IHRheGEgZGUgY3Jlc2NpbWVudG8gZG8gUElCIG11bmRpYWwuIFNlIM6xIFw8IDEsIGhhdmVyw6EgdW1hIGRlc3ZhbG9yaXphw6fDo28gcmVhbCwgY3VqbyBhdW1lbnRhIGEgcmF6w6NvIGltcG9ydGHDp8O1ZXMvUElCLiBTZSDOslw+MSwgbyBjcmVzY2ltZW50byBkb23DqXN0aWNvIGV4cGFuZGUgZm9ydGVtZW50ZSBhcyBpbXBvcnRhw6fDtWVzLiBBZGVtYWlzLCBhcyBleHBvcnRhw6fDtWVzIGF1bWVudGFtIGNvbSBkZXN2YWxvcml6YcOnw6NvICjOs1w+MCkgZSBjb20gY3Jlc2NpbWVudG8gZXh0ZXJubyAozrRcPjApLCBtYXMgc8OjbyByZWR1emlkYXMgcGVsbyBjcmVzY2ltZW50byBkb23DqXN0aWNvIChxaOKAiykuIFRyYWRlLU9mZiBDcmVzY2ltZW50by1EZXN2YWxvcml6YcOnw6NvIE8gc2FsZG8gY29tZXJjaWFsIGVtIHJlbGHDp8OjbyBhbyBQSUIgZXZvbHVpIHNlZ3VuZG86DQoNCiQkDQogXGZyYWN7ZHh9e2R0fSAtIFxmcmFje2RtfXtkdH0gPSB4KFxnYW1tYSB6ICsgXGRlbHRhIHFfZiAtIHFfaCkgLSBtWygxIC0gXGFscGhhKXogKyAoXGJldGEgLSAxKXFfaF0gDQokJA0KDQpTZSBvIG9iamV0aXZvIMOpIG1hbnRlciBvIHNhbGRvIGNvbWVyY2lhbCBjb25zdGFudGUgKGR4L2R0IC1kbS9kdCA9IDApLCBvYnTDqm0tc2UgYSBlcXVhw6fDo28gZGUgVHJhZGUtb2ZmOg0KDQokJA0KcV9oID0gXGZyYWN7eFxkZWx0YSBxX2Z9e3ggLSBtKDEgLSBcYmV0YSl9ICsgXGZyYWN7eFxnYW1tYSAtIG0oMSAtIFxhbHBoYSl9e3ggLSBtKDEgLSBcYmV0YSl9IHogDQokJA0KDQpBIGluY2xpbmHDp8OjbyBkYSBjdXJ2YSDDqToNCg0KJCQNCiBcdmFycGhpID0gXGZyYWN7eFxnYW1tYSAtIG0oMSAtIFxhbHBoYSl9e3ggLSBtKDEgLSBcYmV0YSl9IA0KJCQNCg0Kz4YgbWVkZSBvIHF1YW50byBkZSBkZXN2YWxvcml6YcOnw6NvIGNhbWJpYWwgw6kgbmVjZXNzw6FyaW8gKHopIHBhcmEgc3VzdGVudGFyIDElIGFkaWNpb25hbCBkZSBjcmVzY2ltZW50byAocWjigIspIG1hbnRlbmRvIG8gc2FsZG8gY29tZXJjaWFsIGVzdMOhdmVsLg0KDQpBcGxpY2HDp8OjbyBlbXDDrXJpY2Egbm8gQnJhc2lsOiBDb20gYmFzZSBlbSBDYXZhbGNhbnRpIGUgRnJpc2NodGFrICgyMDAyKSwgb3MgcGFyw6JtZXRyb3MgZXN0aW1hZG9zIHBhcmEgMTk4MOKAkzIwMDAgZm9yYW06DQoNCiQkDQogXGFscGhhID0gMC43NCwgXHF1YWQgXGJldGEgPSAzLjM5LCBccXVhZCBcZ2FtbWEgPSAwLjYxLCBccXVhZCBcZGVsdGEgPSAxLjAxIA0KJCQNCg0KRW0gMjAwMiwgb2JzZXJ2YXZhbS1zZSBhcHJveGltYWRhbWVudGU6DQoNCiQkDQp4ID0gMC4xMywgXHF1YWQgbSA9IDAuMTAsIFxxdWFkIHFfZiA9IDAuMDQgXF0NCiQkDQoNClN1YnN0aXR1aW5kby1zZSBuYSBlcXVhw6fDo28gKDYpLCBCYXJib3NhLUZpbGhvIG9idMOpbToNCg0KJCQgDQpxX2ggPSAwLjM1NnFfZiArIDAuMTQ0eiBcXQ0KJCQNCkxvZ286DQoNCiQkDQp6IFxhcHByb3ggXGZyYWN7cV9oIC0gMC4wMTQyfXswLjE0NH0gXF0NCiQkDQoNCkF0cmF2w6lzIGRlc3RlIG1vZGVsbywgw6kgcG9zc8OtdmVsIGNvbmNsdWlyIHF1ZSBkYWRhcyBhcyBlbGFzdGljaWRhZGVzIHBhcmEgbyBCcmFzaWwgZW0gMjAwMiwgYSBjYWRhIDElIGFkaWNpb25hbCBkZSBjcmVzY2ltZW50byBubyBQSUIsIGV4aWdlLXNlIHVtYSBkZXN2YWxvcml6YcOnw6NvIGNhbWJpYWwgcmVhbCBkZSBhcHJveGltYWRhbWVudGUgNiw5JS4gRW0gdGVybW9zIHByw6F0aWNvcywgaXNzbyBzaWduaWZpY2EgcXVlIG8gcGHDrXMgc2UgZW5jb250cmF2YSBwcmVzbyBhIHVtYSBkaW7Dom1pY2EgZW0gcXVlIG8gY3Jlc2NpbWVudG8gZWNvbsO0bWljbyBzw7MgcG9kZXJpYSBzZXIgc3VzdGVudGFkbyBhbyBjdXN0byBkZSBmb3J0ZXMgZGVzdmFsb3JpemHDp8O1ZXMgY2FtYmlhaXMsIGNvbSB0b2RvcyBvcyBlZmVpdG9zIGNvbGF0ZXJhaXMgcXVlIGVzdGFzIGltcGxpY2FtLCBub3RhZGFtZW50ZSBwcmVzc8O1ZXMgaW5mbGFjaW9uw6FyaWFzIGUgaW1wYWN0b3MgcmVkaXN0cmlidXRpdm9zIHJlZ3Jlc3Npdm9zLg0KDQpBZGVtYWlzLCBhIGVzdHJ1dHVyYSBjb21lcmNpYWwgYnJhc2lsZWlyYSByZXZlbGEtc2UgZGVzZmF2b3LDoXZlbCBhbyBjcmVzY2ltZW50byBzdXN0ZW50YWRvLiBBcyBpbXBvcnRhw6fDtWVzIHPDo28gcG91Y28gc2Vuc8OtdmVpcyBhIHZhcmlhw6fDtWVzIGRlIHByZcOnb3MgKM6xXDwxKSBlLCBhbyBtZXNtbyB0ZW1wbywgYXByZXNlbnRhbSBlbGV2YWRhIGVsYXN0aWNpZGFkZSBlbSByZWxhw6fDo28gw6AgcmVuZGEgKM6yXD4xKSwgbyBxdWUgaW1wbGljYSBxdWUgcXVhbHF1ZXIgYWNlbGVyYcOnw6NvIGRvIGNyZXNjaW1lbnRvIGludGVybm8gc2UgdHJhZHV6IHJhcGlkYW1lbnRlIGVtIGF1bWVudG9zIGV4cHJlc3Npdm9zIGRhIGRlbWFuZGEgcG9yIGJlbnMgaW1wb3J0YWRvcywgY29uZmlndXJhbmRvIGFzc2ltIHVtIHRyYWRlLW9mZiBleHRyZW1hbWVudGUgY3VzdG9zby4gRSwgYW8gbG9uZ28tcHJhem8sIGEgZXN0YWJpbGlkYWRlIHNpbXVsdMOibmVhIGRhcyByYXrDtWVzIGV4cG9ydGHDp8O1ZXMvUElCIGUgaW1wb3J0YcOnw7Vlcy9QSUIgZXhpZ2lyaWEgY29tYmluYcOnw7VlcyBkZSBjcmVzY2ltZW50byBtdWl0byBiYWl4byBjb20gYXByZWNpYcOnw6NvIGNhbWJpYWwgY29udMOtbnVhLiBUYWwgY2Vuw6FyaW8gw6kgZXZpZGVudGVtZW50ZSBpbnN1c3RlbnTDoXZlbCwgcG9pcyBuZW5odW1hIGVjb25vbWlhIGNvbnNlZ3VlIHN1c3RlbnRhciB1bWEgdHJhamV0w7NyaWEgZGUgYXByZWNpYcOnw6NvIGNhbWJpYWwgc2VtIHBlcmRhIGRlIGNvbXBldGl0aXZpZGFkZS4gRXNzZSByZXN1bHRhZG8gaW5kaWNhIHF1ZSBhIHByw7NwcmlhIGVzdHJ1dHVyYSBkbyBjb23DqXJjaW8gZXh0ZXJubyBicmFzaWxlaXJvIGNvbnTDqW0gdW0gdmnDqXMgZXN0cnV0dXJhbCBjb250cmEgbyBjcmVzY2ltZW50byByb2J1c3RvLg0KDQpQb3J0YW50bywgbyBtb2RlbG8gZGUgQmFyYm9zYS1GaWxobyAoMjAwNCkgY29uY2x1aSBxdWUgYXMgcHJvYmxlbcOhdGljYXMgYnJhc2lsZWlyYXMgdsOjbyBhbMOpbSBkZSBjaG9xdWVzIGNvbmp1bnR1cmFpcywgc2VuZG8gY2F1c2Fkb3MgcG9yIHJlc3RyacOnw7VlcyBlc3RydXR1cmFpcyBkbyBjb23DqXJjaW8uIEEgYWx0YSBlbGFzdGljaWRhZGUtcmVuZGEgZGFzIGltcG9ydGHDp8O1ZXMgw6kgbyBwcmluY2lwYWwgZW50cmF2ZSwgZW5xdWFudG8gYSBiYWl4YSBlbGFzdGljaWRhZGUtcHJlw6dvIGRhcyBleHBvcnRhw6fDtWVzIGUgaW1wb3J0YcOnw7VlcyBsaW1pdGFtIGEgZWZpY8OhY2lhIGRhIGRlc3ZhbG9yaXphw6fDo28gY2FtYmlhbC4gT3Ugc2VqYSwgbWVzbW8gcXVlIHRhbCB0ZW9yaWEgZXN0ZWphIGFwbGljYWRhIGVtIHVtIGNvbnRleHRvIGRlIDIwIGFub3MgYW50ZXJpb3JlcywgYWluZGEgcG9kZSBzZXIgYXBsaWNhZGEgw6AgY29udGVtcG9yYW5laWRhZGUsIHZpc3RvIHF1ZSBjb25zdGF0YS1zZSBxdWUgYSB0cmFqZXTDs3JpYSBkZSBiYWl4byBjcmVzY2ltZW50byBlIGNyaXNlcyBjYW1iaWFpcyBkbyBCcmFzaWwgZXN0w6NvIGVucmFpemFkYXMgbmEgZXN0cnV0dXJhIGNvbWVyY2lhbCwgY3VqbyBuw6NvIHPDsyDDqSBkZXBlbmRlbnRlLCBjb21vIHNvYnJldmFsb3JpemEgYSBleHBvcnRhw6fDo28gZGUgaW5zdW1vcywgY29tbyBhIHNvamEgZSBtaW7DqXJpb3MuDQoNCiMjICpQSUIgQnJhc2lsZWlybyB4ICglKSBkYXMgRXhwb3J0YcOnw7VlcyBubyBQSUIqDQoNCmBgYHtyfQ0KY29kaWdvc19iY2IgPC0gYygNCiAgcGliX2JyID0gNDE5MiwNCiAgcGliX2V4cF90cmkgPSAyMjcwOA0KKQ0KZGFkb3NfcGliX2FubyA8LSBnZXRfc2VyaWVzKGNvZGlnb3NfYmNiWzFdLCBzdGFydF9kYXRlID0gIjIwMDUtMDEtMDEiKSAlPiUNCiAgcmVuYW1lKHBpYl9tZW5zYWwgPSBwaWJfYnIpICU+JQ0KICBtdXRhdGUoYW5vID0geWVhcihkYXRlKSkgJT4lDQogIGdyb3VwX2J5KGFubykgJT4lDQogIHN1bW1hcmlzZShwaWJfYW5vX3VzZCA9IG1lYW4ocGliX21lbnNhbCwgbmEucm0gPSBUUlVFKSkgJT4lDQogIG11dGF0ZShwaWJfYW5vX3VzZCA9IHJvdW5kKHBpYl9hbm9fdXNkLCBkaWdpdHMgPSAyKSkNCmRhZG9zX2V4cF90cmkgPC0gZ2V0X3Nlcmllcyhjb2RpZ29zX2JjYlsyXSwgc3RhcnRfZGF0ZSA9ICIyMDA1LTAxLTAxIikgJT4lDQogIHJlbmFtZShleHBfdHJpX3VzZCA9IHBpYl9leHBfdHJpKSAlPiUNCiAgbXV0YXRlKGFubyA9IHllYXIoZGF0ZSkpDQpleHBfYW5vIDwtIGRhZG9zX2V4cF90cmkgJT4lDQogIGdyb3VwX2J5KGFubykgJT4lDQogIHN1bW1hcmlzZShleHBfYW5vX3VzZCA9IHN1bShleHBfdHJpX3VzZCwgbmEucm0gPSBUUlVFKSkNCmRhZG9zX2NvbXBsZXRvcyA8LSBmdWxsX2pvaW4oZGFkb3NfcGliX2FubywgZXhwX2FubywgYnkgPSAiYW5vIikgJT4lDQogIG11dGF0ZSgNCiAgICBwaWJfYW5vX2JpID0gcGliX2Fub191c2QgLyAxMDAwLA0KICAgIGV4cF9hbm9fYmkgPSBleHBfYW5vX3VzZCAvIDEwMDAsDQogICAgcGVyY19leHAgPSAoZXhwX2Fub19iaSAvIHBpYl9hbm9fYmkpICogMTAwLA0KICAgIHBlcmNfZXhwID0gcm91bmQocGVyY19leHAsIGRpZ2l0cyA9IDEpLA0KICAgIERhdGEgPSBhcy5EYXRlKHBhc3RlMChhbm8sICItMDEtMDEiKSksDQogICAgdGltZXN0YW1wID0gZGF0ZXRpbWVfdG9fdGltZXN0YW1wKERhdGEpDQogICkgJT4lDQogIG5hLm9taXQoKSAlPiUNCiAgYXJyYW5nZShEYXRhKQ0KaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3NfY29tcGxldG9zICU+JSBzZWxlY3QodGltZXN0YW1wLCBwZXJjX2V4cCkpLA0KICAgIHR5cGUgPSAiY29sdW1uIiwNCiAgICBuYW1lID0gIkV4cG9ydGHDp8O1ZXMgKCUgUElCKSIsIA0KICAgIGNvbG9yID0gIiNmZWI3MTIiLA0KICAgIHlBeGlzID0gMCwNCiAgICB0b29sdGlwID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMSwgdmFsdWVTdWZmaXggPSAiJSIpDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRhZG9zX2NvbXBsZXRvcyAlPiUgc2VsZWN0KHRpbWVzdGFtcCwgcGliX2Fub19iaSkpLA0KICAgIHR5cGUgPSAibGluZSIsDQogICAgbmFtZSA9ICJQSUIgKFVTJCBiaWxow7VlcykiLCAgDQogICAgbGluZVdpZHRoID0gMiwNCiAgICBjb2xvciA9ICIjMDIwMjNjIiwNCiAgICB5QXhpcyA9IDEsDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDEsIHZhbHVlUHJlZml4ID0gIlVTJCAiLCB2YWx1ZVN1ZmZpeCA9ICIgYmkiKSAgDQogICkgJT4lDQogIGhjX3lBeGlzX211bHRpcGxlcygNCiAgICBsaXN0KHRpdGxlID0gbGlzdCh0ZXh0ID0gIlBhcnRpY2lwYcOnw6NvIG5vIFBJQiAoJSkiKSwgb3Bwb3NpdGUgPSBGQUxTRSksDQogICAgbGlzdCh0aXRsZSA9IGxpc3QodGV4dCA9ICJQSUIgKFVTJCBiaWxow7VlcykiKSwgb3Bwb3NpdGUgPSBUUlVFKSANCiAgKSAlPiUNCiAgaGNfdGl0bGUodGV4dCA9ICJQSUIgQnJhc2lsZWlybyB2cyBQYXJ0aWNpcGHDp8OjbyBkYXMgRXhwb3J0YcOnw7VlcyIpICU+JQ0KICBoY19zdWJ0aXRsZSh0ZXh0ID0gIlZhbG9yZXMgZW0gYmlsaMO1ZXMgZGUgZMOzbGFyZXMiKSAlPiUgIA0KICBoY19jcmVkaXRzKA0KICAgIGVuYWJsZWQgPSBUUlVFLCANCiAgICB0ZXh0ID0gIkZvbnRlOiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCINCiAgKSAlPiUNCiAgaGNfcmFuZ2VTZWxlY3RvcigNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICBidXR0b25zID0gbGlzdCgNCiAgICAgIGxpc3QodHlwZSA9ICd5ZWFyJywgY291bnQgPSA1LCB0ZXh0ID0gJzVZJyksDQogICAgICBsaXN0KHR5cGUgPSAneWVhcicsIGNvdW50ID0gMTAsIHRleHQgPSAnMTBZJyksDQogICAgICBsaXN0KHR5cGUgPSAnYWxsJywgdGV4dCA9ICdBbGwnKQ0KICAgICkNCiAgKSAlPiUNCiAgaGNfdG9vbHRpcCgNCiAgICBzaGFyZWQgPSBUUlVFLA0KICAgIGhlYWRlckZvcm1hdCA9ICc8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB4Ij48Yj57cG9pbnQua2V5OiVZfTwvYj48L3NwYW4+PGJyLz4nDQogICkgJT4lDQogIGhjX2xlZ2VuZCgNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICBhbGlnbiA9ICJjZW50ZXIiLA0KICAgIHZlcnRpY2FsQWxpZ24gPSAiYm90dG9tIiwNCiAgICBsYXlvdXQgPSAiaG9yaXpvbnRhbCINCiAgKQ0KYGBgDQoNCk8gZ3LDoWZpY28gYWNpbWEgbW9zdHJhIGEgZXZvbHXDp8OjbyBkbyBQSUIgZW0gZMOzbGFyZXMgZSBkYSBwYXJ0aWNpcGHDp8OjbyBkYXMgZXhwb3J0YcOnw7VlcyBubyBQSUIgZW50cmUgMjAwNSBlIDIwMjQuIE8gY29tcG9ydGFtZW50byBlbnRyZSBvcyBkb2lzIHNlIHRvcm5hIGJlbSBpbXByZXZpc8OtdmVsLCB1bWEgdmV6IHF1ZSBuw6NvIG5lY2Vzc2FyaWFtZW50ZSB1bSBhdW1lbnRvIGRvIFBJQiBzaWduaWZpY2EgdGFtYsOpbSB1bSBhdW1lbnRvIGRhIHBvcmNlbnRhZ2VtIGRlIGV4cG9ydGHDp8O1ZXMgZGVudHJvIGRlbGUuIFByb3ZhIGRpc3NvIMOpIG8gY29tcG9ydGFtZW50byBkYSBwb3JjZW50YWdlbSBxdWUgYXByZXNlbnRvdSB1bWEgY3Jlc2NlbnRlIGEgcGFydGlyIGRlIDIwMTYgdmFyaWFkbyBlbnRyZSAxMSUgZSAxOCw3JSBhdMOpIDIwMjMsIGVucXVhbnRvIG8gUElCIHNvZnJldSBjb20gYXVtZW50b3MgZSBxdWVkYXMgbm8gbWVzbW8gcGVyw61vZG8sIGNvbSBkZXN0YXF1ZSBwYXJhIDIwMjEgY29tIHVtYSByZWR1w6fDo28gZG8gUElCIGRlIDEsNiB0cmlsaMOjbyBVUyQgcGFyYSAxLDUgdHJpbGjDo28gVVMkLCBwb3LDqW0gYSBwb3JjZW50YWdlbSBkZSBleHBvcnRhw6fDp2FvIHNhbHRvdSAxMiw2JSBwYXJhIDE4LjMlLg0KDQpPIFBJQiByZXRvbW91IG8gY3Jlc2NpbWVudG8gZW0gMjAyMiwgdWx0cmFwYXNzYW5kbyBVU1wkIDIsMiB0cmlsaMO1ZXMgZW0gMjAyNCwgbWFzIGEgcGFydGljaXBhw6fDo28gZGFzIGV4cG9ydGHDp8O1ZXMgbm8gUElCIG1hbnRldmUtc2UgZXN0w6F2ZWwsIGVtIHRvcm5vIGRlIDE2JSBhIDE3JS4gSXNzbyBpbmRpY2EgcXVlLCBlbWJvcmEgbyBCcmFzaWwgdGVuaGEgc2UgcmVjdXBlcmFkbyBlbSB0ZXJtb3MgZGUgcHJvZHV0byBhZ3JlZ2FkbywgbyBhdW1lbnRvIGRhcyBleHBvcnRhw6fDtWVzIG7Do28gYWNvbXBhbmhvdSBwcm9wb3JjaW9uYWxtZW50ZSBvIGNyZXNjaW1lbnRvIGRvIFBJQi4gRW0gc8OtbnRlc2UsIG8gZ3LDoWZpY28gZXZpZGVuY2lhIGEgbmF0dXJlemEgZXN0cnV0dXJhbCBkYSBlY29ub21pYSBicmFzaWxlaXJhIGRlc3RhY2FkYSBwb3IgQmFyYm9zYS1GaWxobyAoMjAwNCksIHZpc3RvIHF1ZSBvIGNyZXNjaW1lbnRvIGludGVybm8gZWxldmEgYXMgaW1wb3J0YcOnw7VlcyBlIHJlZHV6IGEgcmVsZXbDom5jaWEgZGFzIGV4cG9ydGHDp8O1ZXMgbm8gUElCLCBlbnF1YW50byBjaG9xdWVzIGV4dGVybm9zIGUgZGVzdmFsb3JpemHDp8O1ZXMgY2FtYmlhaXMgYW1wbGlhbSB0ZW1wb3JhcmlhbWVudGUgc3VhIHBhcnRpY2lwYcOnw6NvLg0KDQpObyBnZXJhbCwgYXBlc2FyIGRlIGFsZ3VtYXMgcXVlZGFzIG5vIFBJQiBlbSBhbGd1bnMgYW5vcyBlc3BlY8OtZmljb3MgYSBwb3JjZW50YWdlbSBkYXMgZXhwb3J0YcOnw7VlcyBkZW50cm8gZG8gUElCIGFwcmVzZW50b3UgZ3JhbmRlIGNyZXNjaW1lbnRvIGFwZXNhciBkYSBxdWVkYSBubyDDumx0aW1vIGFubywgbyBxdWUgbW9zdHJhIGEgZm9yw6dhIGRhIHBhcmNlbGEgcXVlIGFzIGV4cG9ydGHDp8O1ZXMgZGV0w6ltIG5vIFBJQiBkYSBlY29ub21pYSBicmFzaWxlaXJhLg0KDQojIyAqRXZvbHXDp8OjbyBkbyBWYWxvciBUb3RhbCBFeHBvcnRhZG8gcG9yIFByb2R1dG8gYW8gQW5vKg0KDQpgYGB7cn0NCnRvdGFpc19zb2phIDwtIHJlYWRfZXhjZWwoIkRhZG9zU29qYS54bHN4IiwgcmFuZ2UgPSAiQTY6RDI3IikgJT4lDQogIG11dGF0ZSgNCiAgICBWYWxvciA9IHJvdW5kKFZhbG9yLCBkaWdpdHMgPSAyKSwNCiAgICBRdGRlID0gcm91bmQoUXRkZSwgZGlnaXRzID0gMiksDQogICAgUHJlw6dvID0gcm91bmQoUHJlw6dvLCBkaWdpdHMgPSAyKSwNCiAgICBEYXRhID0gYXMuRGF0ZShEYXRhLCBmb3JtYXQgPSAiJVkiKSwNCiAgICBBbm8gPSB5ZWFyKERhdGEpLA0KICAgIENvbW1vZGl0eSA9ICJTb2phIg0KICApDQp0b3RhaXNfZmVycm8gPC0gcmVhZF9leGNlbCgiRGFkb3NGZXJyby54bHN4IiwgcmFuZ2UgPSAiQTY6RDI3IikgJT4lDQogIG11dGF0ZSgNCiAgICBWYWxvciA9IHJvdW5kKFZhbG9yLCBkaWdpdHMgPSAyKSwNCiAgICBRdGRlID0gcm91bmQoUXRkZSwgZGlnaXRzID0gMiksDQogICAgUHJlw6dvID0gcm91bmQoUHJlw6dvLCBkaWdpdHMgPSAyKSwNCiAgICBEYXRhID0gYXMuRGF0ZShEYXRhLCBmb3JtYXQgPSAiJVkiKSwNCiAgICBBbm8gPSB5ZWFyKERhdGEpLA0KICAgIENvbW1vZGl0eSA9ICJNaW7DqXJpbyBkZSBGZXJybyINCiAgKQ0KdG90YWlzX3BldHJvbGVvIDwtIHJlYWRfZXhjZWwoIkRhZG9zUGV0cm9sZW9lRGVyLnhsc3giLCByYW5nZSA9ICJBNjpEMjciKSAlPiUNCiAgbXV0YXRlKA0KICAgIFZhbG9yID0gcm91bmQoVmFsb3IsIGRpZ2l0cyA9IDIpLA0KICAgIFF0ZGUgPSByb3VuZChRdGRlLCBkaWdpdHMgPSAyKSwNCiAgICBQcmXDp28gPSByb3VuZChQcmXDp28sIGRpZ2l0cyA9IDIpLA0KICAgIERhdGEgPSBhcy5EYXRlKERhdGEsIGZvcm1hdCA9ICIlWSIpLA0KICAgIEFubyA9IHllYXIoRGF0YSksDQogICAgQ29tbW9kaXR5ID0gIlBldHLDs2xlbyBlIERlcml2YWRvcyINCiAgKQ0KZGFkb3NfYW5vX3ZhbG9yIDwtIGJpbmRfcm93cygNCiAgdG90YWlzX3NvamEgJT4lIHNlbGVjdChBbm8sIENvbW1vZGl0eSwgVmFsb3IpLA0KICB0b3RhaXNfZmVycm8gJT4lIHNlbGVjdChBbm8sIENvbW1vZGl0eSwgVmFsb3IpLA0KICB0b3RhaXNfcGV0cm9sZW8gJT4lIHNlbGVjdChBbm8sIENvbW1vZGl0eSwgVmFsb3IpDQopICU+JQ0KICBncm91cF9ieShBbm8sIENvbW1vZGl0eSkgJT4lDQogIHN1bW1hcmlzZShWYWxvciA9IHN1bShWYWxvciwgbmEucm0gPSBUUlVFKSwgLmdyb3VwcyA9ICJkcm9wIikNCmRhZG9zX3N0b2NrX2V4cG9ydCA8LSBkYWRvc19hbm9fdmFsb3IgJT4lDQogIG11dGF0ZSgNCiAgICBEYXRhID0gYXMuRGF0ZShwYXN0ZTAoQW5vLCAiLTAxLTAxIikpLA0KICAgIHRpbWVzdGFtcCA9IGRhdGV0aW1lX3RvX3RpbWVzdGFtcChEYXRhKQ0KICApICU+JQ0KICBhcnJhbmdlKERhdGEpDQpkYWRvc19wcmVjbyA8LSBiaW5kX3Jvd3MoDQogIHRvdGFpc19zb2phICU+JSBzZWxlY3QoQW5vLCBDb21tb2RpdHksIFByZcOnbyksDQogIHRvdGFpc19mZXJybyAlPiUgc2VsZWN0KEFubywgQ29tbW9kaXR5LCBQcmXDp28pLA0KICB0b3RhaXNfcGV0cm9sZW8gJT4lIHNlbGVjdChBbm8sIENvbW1vZGl0eSwgUHJlw6dvKQ0KKSAlPiUNCiAgZmlsdGVyKCFpcy5uYShQcmXDp28pICYgaXMuZmluaXRlKFByZcOnbykpDQpoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpICU+JQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgPSBsaXN0X3BhcnNlMihkYWRvc19zdG9ja19leHBvcnQgJT4lIGZpbHRlcihDb21tb2RpdHkgPT0gIlNvamEiKSAlPiUgc2VsZWN0KHRpbWVzdGFtcCwgVmFsb3IpKSwNCiAgICB0eXBlID0gImxpbmUiLCBuYW1lID0gIlNvamEgKFVTJCBiaSkiLCBjb2xvciA9ICIjRkVCNzEyIiwgbGluZVdpZHRoID0gMywNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBUUlVFLCByYWRpdXMgPSA0KSwNCiAgICB0b29sdGlwID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMCwgdmFsdWVQcmVmaXggPSAiVVMkICIsIHZhbHVlU3VmZml4ID0gIiBiaSIpDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRhZG9zX3N0b2NrX2V4cG9ydCAlPiUgZmlsdGVyKENvbW1vZGl0eSA9PSAiTWluw6lyaW8gZGUgRmVycm8iKSAlPiUgc2VsZWN0KHRpbWVzdGFtcCwgVmFsb3IpKSwNCiAgICB0eXBlID0gImxpbmUiLCBuYW1lID0gIk1pbsOpcmlvIGRlIEZlcnJvIChVUyQgYmkpIiwgY29sb3IgPSAiIzQ2QjFFMSIsIGxpbmVXaWR0aCA9IDMsDQogICAgbWFya2VyID0gbGlzdChlbmFibGVkID0gVFJVRSwgcmFkaXVzID0gNCksDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDAsIHZhbHVlUHJlZml4ID0gIlVTJCAiLCB2YWx1ZVN1ZmZpeCA9ICIgYmkiKQ0KICApICU+JQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgPSBsaXN0X3BhcnNlMihkYWRvc19zdG9ja19leHBvcnQgJT4lIGZpbHRlcihDb21tb2RpdHkgPT0gIlBldHLDs2xlbyBlIERlcml2YWRvcyIpICU+JSBzZWxlY3QodGltZXN0YW1wLCBWYWxvcikpLA0KICAgIHR5cGUgPSAibGluZSIsIG5hbWUgPSAiUGV0csOzbGVvIGUgRGVyaXZhZG9zIChVUyQgYmkpIiwgY29sb3IgPSAiIzAyMDIzQyIsIGxpbmVXaWR0aCA9IDMsDQogICAgbWFya2VyID0gbGlzdChlbmFibGVkID0gVFJVRSwgcmFkaXVzID0gNCksDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDAsIHZhbHVlUHJlZml4ID0gIlVTJCAiLCB2YWx1ZVN1ZmZpeCA9ICIgYmkiKQ0KICApICU+JQ0KICBoY195QXhpcyh0aXRsZSA9IGxpc3QodGV4dCA9ICJWYWxvciBFeHBvcnRhZG8gKFVTJCBiaSkiKSwgbGFiZWxzID0gbGlzdChmb3JtYXQgPSAiVVMkIHt2YWx1ZTosLjBmfSBiaSIpKSAlPiUNCiAgaGNfdGl0bGUodGV4dCA9ICJFeHBvcnRhw6fDtWVzIHBvciBQcm9kdXRvIC0gKFVTJCBCaWxow7VlcykiKSAlPiUNCiAgaGNfc3VidGl0bGUodGV4dCA9ICJFdm9sdcOnw6NvIGRvIHZhbG9yIGV4cG9ydGFkbyBkZSBTb2phLCBNaW7DqXJpbyBkZSBGZXJybyBlIFBldHLDs2xlbyIpICU+JQ0KICBoY19jcmVkaXRzKGVuYWJsZWQgPSBUUlVFLCB0ZXh0ID0gIkZvbnRlOiBNRElDIC0gTWluaXN0w6lyaW8gZG8gRGVzZW52b2x2aW1lbnRvLCBJbmTDunN0cmlhLCBDb23DqXJjaW8gZSBTZXJ2acOnb3MiKSAlPiUNCiAgaGNfcmFuZ2VTZWxlY3RvcihlbmFibGVkID0gVFJVRSwgYnV0dG9ucyA9IGxpc3QobGlzdCh0eXBlID0gJ3llYXInLCBjb3VudCA9IDUsIHRleHQgPSAnNVknKSwgbGlzdCh0eXBlID0gJ3llYXInLCBjb3VudCA9IDEwLCB0ZXh0ID0gJzEwWScpLCBsaXN0KHR5cGUgPSAnYWxsJywgdGV4dCA9ICdBbGwnKSkpICU+JQ0KICBoY190b29sdGlwKHNoYXJlZCA9IFRSVUUsIGNyb3NzaGFpcnMgPSBUUlVFLCBoZWFkZXJGb3JtYXQgPSAnPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJweCI+PGI+e3BvaW50LmtleTolWX08L2I+PC9zcGFuPjxici8+JykgJT4lDQogIGhjX2xlZ2VuZChlbmFibGVkID0gVFJVRSwgYWxpZ24gPSAiY2VudGVyIiwgdmVydGljYWxBbGlnbiA9ICJib3R0b20iLCBsYXlvdXQgPSAiaG9yaXpvbnRhbCIpDQpgYGANCg0KT2JzZXJ2YS1zZSBxdWUgYXMgdHLDqnMgY29tbW9kaXRpZXMgYXByZXNlbnRhbSB0cmFqZXTDs3JpYXMgc2VtZWxoYW50ZXMgdGFudG8gZGUgYXVtZW50byBxdWFudG8gZGUgcXVlZGEgbmEgZ3JhbmRlIG1haW9yaWEgZG8gYW5vcyBpbmRlcGVuZGVudGVtZW50ZSBkbyB2YWxvciBkbyBwcm9kdXRvLCBjb20gZm9ydGUgZXhwYW5zw6NvIGRhcyBleHBvcnRhw6fDtWVzIGEgcGFydGlyIGRlIDIwMTYsIGltcHVsc2lvbmFkYXMgcGVsbyBhdW1lbnRvIGRhIGRlbWFuZGEgaW50ZXJuYWNpb25hbCBlIHBlbGEgZGVzdmFsb3JpemHDp8OjbyBjYW1iaWFsIGRvIHBlcsOtb2RvLiBBIHNvamEgc2UgZGVzdGFjYSBjb21vIHByaW5jaXBhbCBwcm9kdXRvIGV4cG9ydGFkbywgYXRpbmdpbmRvIG8gcGljbyBlbSAyMDIyIGNvbSBjZXJjYSBkZSBVU1wkIDUzLDIgYmlsaMO1ZXMsIHNlZ3VpZGEgcG9yIHBldHLDs2xlbyBlIGRlcml2YWRvcyAoVVNcJCA0Miw1IGJpbGjDtWVzKSBlIG1pbsOpcmlvIGRlIGZlcnJvIChVU1wkIDI4LDkgYmlsaMO1ZXMpLiBPIGNyZXNjaW1lbnRvIGF0w6kgMjAyMSByZWZsZXRlIG8gYm9vbSBkYXMgY29tbW9kaXRpZXMsIGVzcGVjaWFsbWVudGUgcGVsYSBhbHRhIGRvcyBwcmXDp29zIGludGVybmFjaW9uYWlzIGUgbyBmb3J0YWxlY2ltZW50byBkYSBwYXV0YSBhZ3JvZXhwb3J0YWRvcmEgYnJhc2lsZWlyYS4NCg0KQSBwYXJ0aXIgZGUgMjAyMywgbm90YS1zZSB1bWEgcXVlZGEgZ2VuZXJhbGl6YWRhIG5vIHZhbG9yIGV4cG9ydGFkbyBkYXMgdHLDqnMgY2F0ZWdvcmlhcywgc3VnZXJpbmRvIGEgY29tYmluYcOnw6NvIGRlIHJldHJhw6fDo28gZGUgcHJlw6dvcyBpbnRlcm5hY2lvbmFpcywgcmVkdcOnw6NvIGRhIGRlbWFuZGEgY2hpbmVzYSBlIHZhbG9yaXphw6fDo28gY2FtYmlhbCwgbyBxdWUgZGltaW51aSBhIGNvbXBldGl0aXZpZGFkZSBleHRlcm5hLiBBc3NpbSwgb3MgZGFkb3MgY29uZmlybWFtIG5vdmFtZW50ZSBhIGRlcGVuZMOqbmNpYSBicmFzaWxlaXJhIGRlIHByb2R1dG9zIHByaW3DoXJpb3MsIGRlc3RhY2FuZG8gYSB2dWxuZXJhYmlsaWRhZGUgZG8gcGHDrXMgYSBjaG9xdWVzIGV4dGVybm9zIGRlIHByZcOnb3MgZSDDoCBvc2NpbGHDp8OjbyBkbyBjw6JtYmlvLg0KDQojIyAqRXZvbHXDp8OjbyBkb3MgUHJlw6dvcyBkYXMgQ29tbW9kaXRpZXMgcG9yIEFubyoNCg0KYGBge3J9DQpkYWRvc19wcmVjb19zdG9jayA8LSBkYWRvc19wcmVjbyAlPiUNCiAgbXV0YXRlKA0KICAgIERhdGEgPSBhcy5EYXRlKHBhc3RlMChBbm8sICItMDEtMDEiKSksDQogICAgdGltZXN0YW1wID0gZGF0ZXRpbWVfdG9fdGltZXN0YW1wKERhdGEpDQogICkgJT4lDQogIGFycmFuZ2UoRGF0YSkNCmhpZ2hjaGFydCh0eXBlID0gInN0b2NrIikgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRhZG9zX3ByZWNvX3N0b2NrICU+JSBmaWx0ZXIoQ29tbW9kaXR5ID09ICJTb2phIikgJT4lIHNlbGVjdCh0aW1lc3RhbXAsIFByZcOnbykpLA0KICAgIHR5cGUgPSAibGluZSIsIG5hbWUgPSAiU29qYSAoVVMkL3QpIiwgY29sb3IgPSAiI0ZFQjcxMiIsIGxpbmVXaWR0aCA9IDMsDQogICAgbWFya2VyID0gbGlzdChlbmFibGVkID0gVFJVRSwgcmFkaXVzID0gNCksDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDAsIHZhbHVlUHJlZml4ID0gIlVTJCAiLCB2YWx1ZVN1ZmZpeCA9ICIvdCIpDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRhZG9zX3ByZWNvX3N0b2NrICU+JSBmaWx0ZXIoQ29tbW9kaXR5ID09ICJNaW7DqXJpbyBkZSBGZXJybyIpICU+JSBzZWxlY3QodGltZXN0YW1wLCBQcmXDp28pKSwNCiAgICB0eXBlID0gImxpbmUiLCBuYW1lID0gIk1pbsOpcmlvIGRlIEZlcnJvIChVUyQvdCkiLCBjb2xvciA9ICIjNDZCMUUxIiwgbGluZVdpZHRoID0gMywNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBUUlVFLCByYWRpdXMgPSA0KSwNCiAgICB0b29sdGlwID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMCwgdmFsdWVQcmVmaXggPSAiVVMkICIsIHZhbHVlU3VmZml4ID0gIi90IikNCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3NfcHJlY29fc3RvY2sgJT4lIGZpbHRlcihDb21tb2RpdHkgPT0gIlBldHLDs2xlbyBlIERlcml2YWRvcyIpICU+JSBzZWxlY3QodGltZXN0YW1wLCBQcmXDp28pKSwNCiAgICB0eXBlID0gImxpbmUiLCBuYW1lID0gIlBldHLDs2xlbyBlIERlcml2YWRvcyAoVVMkL3QpIiwgY29sb3IgPSAiIzAyMDIzQyIsIGxpbmVXaWR0aCA9IDMsDQogICAgbWFya2VyID0gbGlzdChlbmFibGVkID0gVFJVRSwgcmFkaXVzID0gNCksDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDAsIHZhbHVlUHJlZml4ID0gIlVTJCAiLCB2YWx1ZVN1ZmZpeCA9ICIvdCIpDQogICkgJT4lDQogIGhjX3lBeGlzKHRpdGxlID0gbGlzdCh0ZXh0ID0gIlByZcOnbyBwb3IgVG9uZWxhZGEgKFVTJCkiKSwgbGFiZWxzID0gbGlzdChmb3JtYXQgPSAiVVMkIHt2YWx1ZTosLjBmfSIpKSAlPiUNCiAgaGNfdGl0bGUodGV4dCA9ICJFdm9sdcOnw6NvIGRvcyBQcmXDp29zIGRhcyBDb21tb2RpdGllcyIpICU+JQ0KICBoY19zdWJ0aXRsZSh0ZXh0ID0gIlByZcOnb3MgZW0gVVMkIHBvciB0b25lbGFkYSBkZSBTb2phLCBNaW7DqXJpbyBkZSBGZXJybyBlIFBldHLDs2xlbyIpICU+JQ0KICBoY19jcmVkaXRzKGVuYWJsZWQgPSBUUlVFLCB0ZXh0ID0gIkZvbnRlOiBNRElDIC0gTWluaXN0w6lyaW8gZG8gRGVzZW52b2x2aW1lbnRvLCBJbmTDunN0cmlhLCBDb23DqXJjaW8gZSBTZXJ2acOnb3MiKSAlPiUNCiAgaGNfcmFuZ2VTZWxlY3RvcihlbmFibGVkID0gVFJVRSwgYnV0dG9ucyA9IGxpc3QobGlzdCh0eXBlID0gJ3llYXInLCBjb3VudCA9IDUsIHRleHQgPSAnNVknKSwgbGlzdCh0eXBlID0gJ3llYXInLCBjb3VudCA9IDEwLCB0ZXh0ID0gJzEwWScpLCBsaXN0KHR5cGUgPSAnYWxsJywgdGV4dCA9ICdBbGwnKSkpICU+JQ0KICBoY190b29sdGlwKHNoYXJlZCA9IFRSVUUsIGNyb3NzaGFpcnMgPSBUUlVFLCBoZWFkZXJGb3JtYXQgPSAnPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJweCI+PGI+e3BvaW50LmtleTolWX08L2I+PC9zcGFuPjxici8+JykgJT4lDQogIGhjX2xlZ2VuZChlbmFibGVkID0gVFJVRSwgYWxpZ24gPSAiY2VudGVyIiwgdmVydGljYWxBbGlnbiA9ICJib3R0b20iLCBsYXlvdXQgPSAiaG9yaXpvbnRhbCIpDQpgYGANCg0KTyBncsOhZmljbyBhcHJlc2VudGFkbyBldmlkZW5jaWEgY29tbyBhcyBmbHV0dWHDp8O1ZXMgZG9zIHByZcOnb3MgaW50ZXJuYWNpb25haXMgaW1wYWN0YW0gZGlyZXRhbWVudGUgYSBwYXV0YSBleHBvcnRhZG9yYSBicmFzaWxlaXJhLCBkYWRhIHN1YSBhbHRhIGNvbmNlbnRyYcOnw6NvIG5lc3NlcyBwcm9kdXRvcy4gRW50cmUgMjAxNSBlIDIwMjAsIG9ic2VydmEtc2UgcmVsYXRpdmEgZXN0YWJpbGlkYWRlIG5vcyBwcmXDp29zLCBjb20gdmFyaWHDp8O1ZXMgbW9kZXJhZGFzIGUgdW0gbGV2ZSBjcmVzY2ltZW50byBhIHBhcnRpciBkZSAyMDE4LCByZWZsZXRpbmRvIGEgcmVjdXBlcmHDp8OjbyBkbyBjb23DqXJjaW8gZ2xvYmFsIGFww7NzIGEgcmVjZXNzw6NvIGJyYXNpbGVpcmEgZSBhIGNyaXNlIGRhcyBjb21tb2RpdGllcyBkZSAyMDE0IMOgIDIwMTUuIENvbnR1ZG8sIGVudHJlIDIwMjEgZSAyMDIyLCBvY29ycmV1IHVtIGZvcnRlIGF1bWVudG8gZ2VuZXJhbGl6YWRvIGRvcyBwcmXDp29zIGltcHVsc2lvbmFkb3MgcGVsYSByZXRvbWFkYSBww7NzLXBhbmRlbWlhLCBnYXJnYWxvcyBsb2fDrXN0aWNvcyBlIHRlbnPDtWVzIGdlb3BvbMOtdGljYXMsIHF1ZSBwcmVzc2lvbmFyYW0gb3MgcHJlw6dvcyBkZSBlbmVyZ2lhIGUgYWxpbWVudG9zLg0KDQpBIHBhcnRpciBkZSAyMDIzLCBob3V2ZSB1bWEgdGVuZMOqbmNpYSBkZSBxdWVkYSBub3MgcHJlw6dvcyBkYXMgdHLDqnMgY29tbW9kaXRpZXMsIG9uZGUgYSBzb2phIGUgbyBwZXRyw7NsZW8gY29udmVyZ2lyYW0gcGFyYSBVU1wkIDUyMy90IGUgbyBtaW7DqXJpbyBkZSBmZXJybyBjYWl1IHBhcmEgVVNcJCA4MS90LiBFc3NhIHJldHJhw6fDo28gcmVmbGV0ZSBhIGRlc2FjZWxlcmHDp8OjbyBkYSBlY29ub21pYSBjaGluZXNhLCBwcmluY2lwYWwgZGVzdGlubyBkYXMgZXhwb3J0YcOnw7VlcyBicmFzaWxlaXJhcywgZSBvIHJlZmx1eG8gZG9zIHByZcOnb3MgaW50ZXJuYWNpb25haXMgYXDDs3MgbyBwaWNvIGRlIDIwMjIuIEVtIHRlcm1vcyBlc3RydXR1cmFpcywgbyBncsOhZmljbyByZWZvcsOnYSBvIGFyZ3VtZW50byBhcHJlc2VudGFkbyBhdHJhdsOpcyBkbyBtb2RlbG8gZWNvbm9tw6l0cmljbyBkaXNjb3JyaWRvLCBvbmRlIGEgZGVwZW5kw6puY2lhIGRlIHByb2R1dG9zIHByaW3DoXJpb3MgdG9ybmEgbyBkZXNlbXBlbmhvIGV4dGVybm8gbmFjaW9uYWwgZm9ydGVtZW50ZSBjb25kaWNpb25hZG8gw6BzIGZsdXR1YcOnw7VlcyBkZSBwcmXDp29zIGludGVybmFjaW9uYWlzLg0KDQojIyAqVmFyaWHDp8OjbyBQZXJjZW50dWFsIEFudWFsIGRvcyBQcmXDp29zKg0KDQpgYGB7cn0NCmRhZG9zX3ZhcmlhY2FvX2NvbW1vZGl0aWVzIDwtIGRhZG9zX3ByZWNvICU+JQ0KICBhcnJhbmdlKENvbW1vZGl0eSwgQW5vKSAlPiUNCiAgZ3JvdXBfYnkoQ29tbW9kaXR5KSAlPiUNCiAgbXV0YXRlKA0KICAgIFZhcmlhY2FvX1BlcmNlbnR1YWwgPSAoUHJlw6dvIC8gbGFnKFByZcOnbykgLSAxKSAqIDEwMA0KICApICU+JQ0KICBmaWx0ZXIoIWlzLm5hKFZhcmlhY2FvX1BlcmNlbnR1YWwpKQ0KaGlnaGNoYXJ0KCkgJT4lDQogIGhjX3RpdGxlKHRleHQgPSAiVmFyaWHDp8OjbyBQZXJjZW50dWFsIEFudWFsIGRvcyBQcmXDp29zIGRhcyBDb21tb2RpdGllcyIpICU+JQ0KICBoY19zdWJ0aXRsZSh0ZXh0ID0gIkNvbHVuYXMgbGFkbyBhIGxhZG8gcGFyYSBtZWxob3IgY29tcGFyYcOnw6NvIikgJT4lDQogIGhjX3hBeGlzKA0KICAgIGNhdGVnb3JpZXMgPSB1bmlxdWUoZGFkb3NfdmFyaWFjYW9fY29tbW9kaXRpZXMkQW5vKSwNCiAgICB0aXRsZSA9IGxpc3QodGV4dCA9ICJBbm8iKQ0KICApICU+JQ0KICBoY195QXhpcygNCiAgICB0aXRsZSA9IGxpc3QodGV4dCA9ICJWYXJpYcOnw6NvIFBlcmNlbnR1YWwgKCUpIiksDQogICAgbGFiZWxzID0gbGlzdChmb3JtYXQgPSAie3ZhbHVlfSUiKQ0KICApICU+JQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgPSBkYWRvc192YXJpYWNhb19jb21tb2RpdGllcyAlPiUgZmlsdGVyKENvbW1vZGl0eSA9PSAiU29qYSIpLA0KICAgIHR5cGUgPSAiY29sdW1uIiwNCiAgICBoY2Flcyh4ID0gQW5vLCB5ID0gVmFyaWFjYW9fUGVyY2VudHVhbCksDQogICAgbmFtZSA9ICJTb2phIiwNCiAgICBjb2xvciA9ICIjRkVCNzEyIg0KICApICU+JQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgPSBkYWRvc192YXJpYWNhb19jb21tb2RpdGllcyAlPiUgZmlsdGVyKENvbW1vZGl0eSA9PSAiTWluw6lyaW8gZGUgRmVycm8iKSwNCiAgICB0eXBlID0gImNvbHVtbiIsIA0KICAgIGhjYWVzKHggPSBBbm8sIHkgPSBWYXJpYWNhb19QZXJjZW50dWFsKSwNCiAgICBuYW1lID0gIk1pbsOpcmlvIGRlIEZlcnJvIiwNCiAgICBjb2xvciA9ICIjNDZCMUUxIg0KICApICU+JQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgPSBkYWRvc192YXJpYWNhb19jb21tb2RpdGllcyAlPiUgZmlsdGVyKENvbW1vZGl0eSA9PSAiUGV0csOzbGVvIGUgRGVyaXZhZG9zIiksDQogICAgdHlwZSA9ICJjb2x1bW4iLA0KICAgIGhjYWVzKHggPSBBbm8sIHkgPSBWYXJpYWNhb19QZXJjZW50dWFsKSwNCiAgICBuYW1lID0gIlBldHLDs2xlbyIsDQogICAgY29sb3IgPSAiIzAyMDIzQyINCiAgKSAlPiUNCiAgaGNfdG9vbHRpcCgNCiAgICBzaGFyZWQgPSBGQUxTRSwNCiAgICBoZWFkZXJGb3JtYXQgPSAiQW5vOiA8Yj57cG9pbnQua2V5fTwvYj48YnIvPiIsDQogICAgcG9pbnRGb3JtYXQgPSAnPHNwYW4gc3R5bGU9ImNvbG9yOntwb2ludC5jb2xvcn0iPuKWoDwvc3Bhbj4ge3Nlcmllcy5uYW1lfTogPGI+e3BvaW50Lnk6LjFmfSU8L2I+Jw0KICApICU+JQ0KICBoY19wbG90T3B0aW9ucygNCiAgICBjb2x1bW4gPSBsaXN0KA0KICAgICAgZ3JvdXBpbmcgPSBUUlVFLA0KICAgICAgcG9pbnRQYWRkaW5nID0gMC4yLA0KICAgICAgZ3JvdXBQYWRkaW5nID0gMC4xLA0KICAgICAgYm9yZGVyV2lkdGggPSAwLA0KICAgICAgZGF0YUxhYmVscyA9IGxpc3QoDQogICAgICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgICAgICBmb3JtYXQgPSAie3BvaW50Lnk6LjFmfSUiLA0KICAgICAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiN3B4IiwgZm9udFdlaWdodCA9ICJib2xkIikNCiAgICAgICkNCiAgICApDQogICkgJT4lDQogIGhjX2V4cG9ydGluZyhlbmFibGVkID0gVFJVRSkNCmBgYA0KDQpPIGdyw6FmaWNvIGFwcmVzZW50YWRvIGV2aWRlbmNpYSBhIGZvcnRlIHZvbGF0aWxpZGFkZSBxdWUgY2FyYWN0ZXJpemEgbyBjb21wb3J0YW1lbnRvIGRhIHNvamEsIGRvIG1pbsOpcmlvIGRlIGZlcnJvIGUgZG8gcGV0csOzbGVvLiBFc3NlcyBiZW5zLCBjZW50cmFpcyBuYSBwYXV0YSBleHBvcnRhZG9yYSBicmFzaWxlaXJhLCBhcHJlc2VudGFtIG9zY2lsYcOnw7VlcyBhY2VudHVhZGFzIGVtIGZ1bsOnw6NvIGRlIGNob3F1ZXMgZXh0ZXJub3MgZSBjaWNsb3MgZ2xvYmFpcyBkZSBkZW1hbmRhLiBPYnNlcnZhLXNlLCBwb3IgZXhlbXBsbywgdW0gY2ljbG8gZGUgZXhwYW5zw6NvIGV4cHJlc3NpdmEgZW50cmUgMjAwNyBlIDIwMTEsIGltcHVsc2lvbmFkbyBwZWxvIGFxdWVjaW1lbnRvIGRhIGVjb25vbWlhIG11bmRpYWwsIHNlZ3VpZG8gcG9yIHJldHJhw6fDtWVzIGJydXNjYXMgZHVyYW50ZSBjcmlzZXMsIGNvbW8gYSBmaW5hbmNlaXJhIGRlIDIwMDjigJMyMDA5Lg0KDQpFbnRyZSAyMDE0IGUgMjAxNiwgbm90YS1zZSB1bSBtb3ZpbWVudG8gZGUgcXVlZGEgZ2VuZXJhbGl6YWRhLCBwcmluY2lwYWxtZW50ZSBubyBwcmXDp28gZG8gcGV0csOzbGVvLCBxdWUgY2hlZ291IGEgY2FpciBxdWFzZSA1MCUgZW0gdW0gw7puaWNvIGFubywgcmVmbGV0aW5kbyBvIGV4Y2Vzc28gZGUgb2ZlcnRhIGdsb2JhbCwgbWFzLCBhIHBhcnRpciBkZSAyMDE3LCBvcyBwcmXDp29zIHNlIHJlY3VwZXJhbSBncmFkdWFsbWVudGUsIGF0aW5naW5kbyBub3ZvIGF1Z2UgZW0gMjAyMeKAkzIwMjIsIGltcHVsc2lvbmFkb3MgcGVsYSByZXRvbWFkYSBlY29uw7RtaWNhIHDDs3MtcGFuZGVtaWEgZSBwZWxhcyB0ZW5zw7VlcyBnZW9wb2zDrXRpY2FzIGRlY29ycmVudGVzIGRhIGd1ZXJyYSBuYSBVY3LDom5pYSwgcXVlIGVsZXZhcmFtIHNpZ25pZmljYXRpdmFtZW50ZSBvcyBwcmXDp29zIGRlIGVuZXJnaWEgZSBhbGltZW50b3MuIENvbnR1ZG8sIGEgcGFydGlyIGRlIDIwMjMsIGjDoSB1bWEgdGVuZMOqbmNpYSBkZSBlc3RhYmlsaXphw6fDo28gZSBxdWVkYSBub3MgcHJlw6dvcywgaW5kaWNhbmRvIG8gYXJyZWZlY2ltZW50byBkYSBkZW1hbmRhIGdsb2JhbCBlIGEgcmVjb21wb3Npw6fDo28gZGEgb2ZlcnRhIGludGVybmFjaW9uYWwuDQoNCiMjICpDb3JyZWxhw6fDo28gZW50cmUgYXMgQ29tbW9kaXRpZXMqDQoNCmBgYHtyfQ0KZGFkb3NfY29ycmVsYWNhbyA8LSBkYWRvc19wcmVjbyAlPiUNCiAgc2VsZWN0KEFubywgQ29tbW9kaXR5LCBQcmXDp28pICU+JQ0KICBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gQ29tbW9kaXR5LCB2YWx1ZXNfZnJvbSA9IFByZcOnbykgJT4lDQogIHNlbGVjdCgtQW5vKQ0KbWF0cml6X2NvciA8LSBjb3IoZGFkb3NfY29ycmVsYWNhbywgdXNlID0gImNvbXBsZXRlLm9icyIpDQphbmFsaXNlX2NvcnJlbGFjYW8gPC0gYXMuZGF0YS5mcmFtZShhcy50YWJsZShtYXRyaXpfY29yKSkgJT4lDQogIHJlbmFtZShDb21tb2RpdHkxID0gVmFyMSwgQ29tbW9kaXR5MiA9IFZhcjIsIENvcnJlbGFjYW8gPSBGcmVxKSAlPiUNCiAgZmlsdGVyKENvbW1vZGl0eTEgIT0gQ29tbW9kaXR5MikgJT4lDQogIHJvd3dpc2UoKSAlPiUNCiAgbXV0YXRlKFBhciA9IHBhc3RlKHNvcnQoYyhDb21tb2RpdHkxLCBDb21tb2RpdHkyKSksIGNvbGxhcHNlID0gIiB2cyAiKSkgJT4lDQogIGRpc3RpbmN0KFBhciwgLmtlZXBfYWxsID0gVFJVRSkgJT4lDQogIHVuZ3JvdXAoKSAlPiUNCiAgYXJyYW5nZShkZXNjKENvcnJlbGFjYW8pKQ0KaGlnaGNoYXJ0KCkgJT4lDQogIGhjX2NoYXJ0KHR5cGUgPSAiY29sdW1uIikgJT4lDQogIGhjX3RpdGxlKHRleHQgPSAiQ29ycmVsYcOnw6NvIGVudHJlIGFzIENvbW1vZGl0aWVzIikgJT4lDQogIGhjX3hBeGlzKGNhdGVnb3JpZXMgPSBhbmFsaXNlX2NvcnJlbGFjYW8kUGFyKSAlPiUNCiAgaGNfeUF4aXMoDQogICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiQ29lZmljaWVudGUgZGUgQ29ycmVsYcOnw6NvIiksDQogICAgbWluID0gLTEsDQogICAgbWF4ID0gMQ0KICApICU+JQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgPSBhbmFsaXNlX2NvcnJlbGFjYW8kQ29ycmVsYWNhbywNCiAgICBuYW1lID0gIkNvcnJlbGHDp8OjbyIsDQogICAgY29sb3JCeVBvaW50ID0gVFJVRSwNCiAgICBjb2xvcnMgPSBjKCIjMDIwMjNjIiwgIiMwMjAyM2MiLCAiI2ZlYjcxMiIpDQogICkgJT4lDQogIGhjX3Rvb2x0aXAoDQogICAgcG9pbnRGb3JtYXQgPSAiPGI+e3BvaW50LmNhdGVnb3J5fTwvYj48YnI+Q29ycmVsYcOnw6NvOiA8Yj57cG9pbnQueTouM2Z9PC9iPiINCiAgKSAlPiUNCiAgaGNfcGxvdE9wdGlvbnMoDQogICAgY29sdW1uID0gbGlzdCgNCiAgICAgIGRhdGFMYWJlbHMgPSBsaXN0KA0KICAgICAgICBlbmFibGVkID0gVFJVRSwNCiAgICAgICAgZm9ybWF0ID0gIntwb2ludC55Oi4yZn0iLA0KICAgICAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTJweCIsIGZvbnRXZWlnaHQgPSAiYm9sZCIpDQogICAgICApDQogICAgKQ0KICApDQpgYGANCg0KTyBncsOhZmljbyBhcHJlc2VudGEgb3MgY29lZmljaWVudGVzIGRlIGNvcnJlbGHDp8OjbyBlbnRyZSBvcyBwcmXDp29zIGRhIHNvamEsIGRvIG1pbsOpcmlvIGRlIGZlcnJvIGUgZG8gcGV0csOzbGVvIGUgZGVyaXZhZG9zLCByZXZlbGFuZG8gbyBncmF1IGRlIGFzc29jaWHDp8OjbyBlbnRyZSBzdWFzIHZhcmlhw6fDtWVzIGFvIGxvbmdvIGRvIHRlbXBvLiBPcyByZXN1bHRhZG9zIG1vc3RyYW0gcmVsYcOnw7VlcyBwb3NpdGl2YXMgZSByZWxhdGl2YW1lbnRlIGZvcnRlczogc29qYSBlIHBldHLDs2xlbyAoMCw3OCksIG1pbsOpcmlvIGRlIGZlcnJvIGUgcGV0csOzbGVvICgwLDcwKSwgZSBzb2phIGUgbWluw6lyaW8gZGUgZmVycm8gKDAsNjcpLiBFc3NlcyB2YWxvcmVzIGluZGljYW0gcXVlIG9zIHByZcOnb3MgZGFzIHByaW5jaXBhaXMgY29tbW9kaXRpZXMgZXhwb3J0YWRhcyBwZWxvIEJyYXNpbCB0ZW5kZW0gYSBzZSBtb3ZlciBuYSBtZXNtYSBkaXJlw6fDo28sIHJlZmxldGluZG8gYSBpbmZsdcOqbmNpYSBkZSBmYXRvcmVzIG1hY3JvZWNvbsO0bWljb3MgZ2xvYmFpcyBjb211bnMuIE91IHNlamEsIHF1YW5kbyBow6EgdmFsb3JpemHDp8OjbyBlbSB1bSBkZXNzZXMgbWVyY2Fkb3MsIMOpIHByb3bDoXZlbCBxdWUgYXMgZGVtYWlzIGNvbW1vZGl0aWVzIHRhbWLDqW0gc2UgYXByZWNpZW0uDQoNCkVzc2EgZm9ydGUgaW50ZXJkZXBlbmTDqm5jaWEgcmVmb3LDp2EgYSB2dWxuZXJhYmlsaWRhZGUgZGEgcGF1dGEgZXhwb3J0YWRvcmEgYnJhc2lsZWlyYSwgdW1hIHZleiBxdWUgY2hvcXVlcyBuZWdhdGl2b3Mgbm9zIHByZcOnb3MgaW50ZXJuYWNpb25haXMgYWZldGFtIHNpbXVsdGFuZWFtZW50ZSBkaXZlcnNvcyBzZXRvcmVzIGVzdHJhdMOpZ2ljb3MNCg0KQXBlc2FyIGRlIGV4aXN0aXJlbSBzaXR1YcOnw7VlcyBmb3JhIGRhIGN1cnZhIGNvbW8gasOhIGFib3JkYWRhcyBuYSBhbsOhbGlzZSBkbyBncsOhZmljbyBkZSBWYXJpYcOnw6NvIFBlcmNlbnR1YWwgQW51YWwgZG9zIFByZcOnb3MsIHRhbCBjb3JyZWxhw6fDo28gZmF2b3LDoXZlbCBlbnRyZSB0b2RvcyBvcyBwcm9kdXRvcyBwb3NzaWJpbGl0b3UgcmVhbGl6YXIgdW1hIGFuw6FsaXNlIGNvbmp1bnRhIHVzYW5kbyBvIHByZcOnbyBkYXMgMyBjb21tb2RpdGllcyBlbSB1bSBwcmXDp28gcG9uZGVyYWRvLCBzZW5kbyBjYWxjdWxhZG8gYSBwYXJ0aXIgZGEgcGFydGljaXBhw6fDo28gZGUgY2FkYSBwcm9kdXRvIG5hcyBleHBvcnRhw6fDtWVzIHRvdGFpcyBkYSBiYWxhbsOnYSBhbyBsb25nbyBkb3MgYW5vcywgZGFkb3MgZXNzZXMgcHJlc2VudGVzIG5vIHByaW1laXJvIGdyw6FmaWNvIGFwcmVzZW50YWRvLg0KDQpUQUJFTEEgREUgUkVGRVLDik5DSUEgLSBFU0NBTEFTIERFIENPUlJFTEHDh8ODTzoNCg0KMC45MCAtIDEuMDAgQ29ycmVsYcOnw6NvIFBlcmZlaXRhIE1vdmVtLXNlIHByYXRpY2FtZW50ZSBqdW50YXMgDQowLjcwIC0gMC44OSBDb3JyZWxhw6fDo28gTXVpdG8gRm9ydGUgQWx0YSBzaW5jcm9uaXphw6fDo28gDQowLjUwIC0gMC42OSBDb3JyZWxhw6fDo28gRm9ydGUgU2luY3Jvbml6YcOnw6NvIHNpZ25pZmljYXRpdmEgDQowLjMwIC0gMC40OSBDb3JyZWxhw6fDo28gTW9kZXJhZGEgUmVsYcOnw6NvIHBlcmNlcHTDrXZlbCANCjAuMTAgLSAwLjI5IENvcnJlbGHDp8OjbyBGcmFjYSBQb3VjYSByZWxhw6fDo28gDQowLjAwIC0gMC4wOSBTZW0gQ29ycmVsYcOnw6NvIENvbXBvcnRhbWVudG8gaW5kZXBlbmRlbnRlDQoNCiMjICpDb21wYXJhdGl2byBlbnRyZSBFeHBvcnRhw6fDtWVzIGUgIFByZcOnbyBQb25kZXJhZG8gUmVhbCoNCg0KYGBge3J9DQpkYWRvc19leHBvcnRfc3RvY2sgPC0gdG90YWlzX2FudWFpcyAlPiUNCiAgbXV0YXRlKEFubyA9IHllYXIoRGF0YV9TdG9jaykpICU+JQ0KICBzZWxlY3QoQW5vLCBFeHBvcnRhY2FvX1RvdGFsID0gRXhwb3J0YcOnw7VlcykgJT4lDQogIGxlZnRfam9pbigNCiAgICBkYWRvc19wcmVjbyAlPiUNCiAgICAgIGxlZnRfam9pbihkYWRvc19hbm9fdmFsb3IsIGJ5ID0gYygiQW5vIiwgIkNvbW1vZGl0eSIpKSAlPiUNCiAgICAgIGxlZnRfam9pbih0b3RhaXNfYW51YWlzICU+JSBtdXRhdGUoQW5vID0geWVhcihEYXRhX1N0b2NrKSkgJT4lIHNlbGVjdChBbm8sIEV4cF9Ub3RhbCA9IEV4cG9ydGHDp8O1ZXMpLCBieSA9ICJBbm8iKSAlPiUNCiAgICAgIG11dGF0ZShQYXJ0aWNpcGFjYW9fUmVhbCA9IFZhbG9yIC8gRXhwX1RvdGFsKSAlPiUNCiAgICAgIGdyb3VwX2J5KEFubykgJT4lDQogICAgICBzdW1tYXJpc2UoUHJlw6dvX1BvbmRlcmFkbyA9IHdlaWdodGVkLm1lYW4oUHJlw6dvLCB3ID0gUGFydGljaXBhY2FvX1JlYWwsIG5hLnJtID0gVFJVRSkpLA0KICAgIGJ5ID0gIkFubyINCiAgKSAlPiUNCiAgbXV0YXRlKERhdGEgPSBhcy5EYXRlKHBhc3RlMChBbm8sICItMDEtMDEiKSksIHRpbWVzdGFtcCA9IGRhdGV0aW1lX3RvX3RpbWVzdGFtcChEYXRhKSkgJT4lDQogIGFycmFuZ2UoRGF0YSkNCg0KaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3NfZXhwb3J0X3N0b2NrICU+JSBzZWxlY3QodGltZXN0YW1wLCBFeHBvcnRhY2FvX1RvdGFsKSksDQogICAgdHlwZSA9ICJjb2x1bW4iLCBuYW1lID0gIkV4cG9ydGHDp8OjbyBUb3RhbCAoVVMkIGJpKSIsIGNvbG9yID0gIiMwMjAyM2MiLCB5QXhpcyA9IDAsDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDAsIHZhbHVlUHJlZml4ID0gIlVTJCAiLCB2YWx1ZVN1ZmZpeCA9ICIgYmkiKQ0KICApICU+JQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgPSBsaXN0X3BhcnNlMihkYWRvc19leHBvcnRfc3RvY2sgJT4lIHNlbGVjdCh0aW1lc3RhbXAsIFByZcOnb19Qb25kZXJhZG8pKSwNCiAgICB0eXBlID0gImxpbmUiLCBuYW1lID0gIlByZcOnbyBQb25kZXJhZG8gKFVTJC90KSIsIGNvbG9yID0gIiNmZWI3MTIiLCBsaW5lV2lkdGggPSAyLCB5QXhpcyA9IDEsDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDAsIHZhbHVlUHJlZml4ID0gIlVTJCAiLCB2YWx1ZVN1ZmZpeCA9ICIvdCIpDQogICkgJT4lDQogIGhjX3lBeGlzX211bHRpcGxlcygNCiAgICBsaXN0KHRpdGxlID0gbGlzdCh0ZXh0ID0gIkV4cG9ydGHDp8OjbyBUb3RhbCAoVVMkIGJpKSIpLCBvcHBvc2l0ZSA9IEZBTFNFKSwNCiAgICBsaXN0KHRpdGxlID0gbGlzdCh0ZXh0ID0gIlByZcOnbyBQb25kZXJhZG8gKFVTJC90KSIpLCBvcHBvc2l0ZSA9IFRSVUUpDQogICkgJT4lDQogIGhjX3RpdGxlKHRleHQgPSAiRXhwb3J0YcOnw6NvIFRvdGFsIHZzIFByZcOnbyBQb25kZXJhZG8gUmVhbCIpICU+JQ0KICBoY19zdWJ0aXRsZSh0ZXh0ID0gIlJlbGHDp8OjbyBlbnRyZSBleHBvcnRhw6fDtWVzIHRvdGFpcyBlIHByZcOnbyBtw6lkaW8gcG9uZGVyYWRvIGRhcyBjb21tb2RpdGllcyIpICU+JQ0KICBoY19jcmVkaXRzKGVuYWJsZWQgPSBUUlVFLCB0ZXh0ID0gIkZvbnRlOiBNRElDIC0gTWluaXN0w6lyaW8gZG8gRGVzZW52b2x2aW1lbnRvLCBJbmTDunN0cmlhLCBDb23DqXJjaW8gZSBTZXJ2acOnb3MiKSAlPiUNCiAgaGNfcmFuZ2VTZWxlY3RvcihidXR0b25zID0gbGlzdChsaXN0KHR5cGUgPSAneWVhcicsIGNvdW50ID0gNSwgdGV4dCA9ICc1WScpLCBsaXN0KHR5cGUgPSAneWVhcicsIGNvdW50ID0gMTAsIHRleHQgPSAnMTBZJyksIGxpc3QodHlwZSA9ICdhbGwnLCB0ZXh0ID0gJ0FsbCcpKSkgJT4lDQogIGhjX3Rvb2x0aXAoc2hhcmVkID0gVFJVRSwgaGVhZGVyRm9ybWF0ID0gJzxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHgiPjxiPntwb2ludC5rZXk6JVl9PC9iPjwvc3Bhbj48YnIvPicpICU+JQ0KICBoY19sZWdlbmQoZW5hYmxlZCA9IFRSVUUsIGFsaWduID0gImNlbnRlciIsIHZlcnRpY2FsQWxpZ24gPSAiYm90dG9tIiwgbGF5b3V0ID0gImhvcml6b250YWwiKQ0KYGBgDQoNCk8gZ3LDoWZpY28gZXZpZGVuY2lhIGEgcmVsYcOnw6NvIGRpcmV0YSBlbnRyZSBvcyBwcmXDp29zIGludGVybmFjaW9uYWlzIGRhcyAzIGNvbW1vZGl0aWVzIChhZ29yYSBwb25kZXJhZG9zIGVtIHVtIHPDsykgZSBvIGRlc2VtcGVuaG8gZXhwb3J0YWRvciBicmFzaWxlaXJvLCBvbmRlIGFtYm9zIGFwcmVzZW50YW0gY29tcG9ydGFtZW50byBzZW1lbGhhbnRlIG1vc3RyYW5kbyBhIGZvcsOnYSAgZSBhIGluZmx1w6puY2lhIGRlc3NlcyAzIHByb2R1dG9zIG5hcyBleHBvcnRhw6fDtWVzIGJyYXNpbGVpcmFzLiBFbSBwZXLDrW9kb3MgZGUgdmFsb3JpemHDp8OjbyBkYXMgY29tbW9kaXRpZXMsIGNvbW8gZW50cmUgMjAwNeKAkzIwMDggZSAyMDIx4oCTMjAyMiwgY29pbmNpZGVtIGNvbSBhdW1lbnRvcyBleHByZXNzaXZvcyBuYXMgZXhwb3J0YcOnw7VlcywgZW5xdWFudG8gZmFzZXMgZGUgcXVlZGEgZG9zIHByZcOnb3MsIGNvbW8gMjAxNOKAkzIwMTYsIHJlc3VsdGFtIGVtIHJldHJhw6fDo28gZG8gdmFsb3IgZXhwb3J0YWRvLiBJc3NvIGRlbW9uc3RyYSBxdWUgYXMgcmVjZWl0YXMgZXh0ZXJuYXMgZG8gcGHDrXMgc8OjbyBmb3J0ZW1lbnRlIGluZmx1ZW5jaWFkYXMgcGVsYXMgdmFyaWHDp8O1ZXMgZGUgcHJlw6dvcyBnbG9iYWlzLCBtYWlzIGRvIHF1ZSBwZWxvcyB2b2x1bWVzIGV4cG9ydGFkb3MuDQoNCk5vcyBhbm9zIHJlY2VudGVzLCBhcMOzcyBvIHBpY28gZGUgMjAyMiwgaMOhIHVtYSBlc3RhYmlsaXphw6fDo28gZG9zIHByZcOnb3MgZSBtYW51dGVuw6fDo28gZGFzIGV4cG9ydGHDp8O1ZXMgZW0gcGF0YW1hciBlbGV2YWRvLCBpbmRpY2FuZG8gcmVsYXRpdmEgcmVzaWxpw6puY2lhLiBObyBlbnRhbnRvLCBvIGdyw6FmaWNvIHJlZm9yw6dhIGEgZGVwZW5kw6puY2lhIGVzdHJ1dHVyYWwgYnJhc2lsZWlyYSBkZSBjb21tb2RpdGllcywgbyBxdWUgdG9ybmEgbyBjcmVzY2ltZW50byBlY29uw7RtaWNvIHZ1bG5lcsOhdmVsIGEgY2hvcXVlcyBleHRlcm5vcy4gVGFsIGRpbsOibWljYSByZWZsZXRlIGEgcmVzdHJpw6fDo28gZXh0ZXJuYSBhbyBjcmVzY2ltZW50bywgbGltaXRhbmRvIG8gcG90ZW5jaWFsIGRlIGV4cGFuc8OjbyBzdXN0ZW50w6F2ZWwgZGEgZWNvbm9taWEuDQoNCkFwZXNhciBkZSBhaW5kYSBuw6NvIHRlciB0ZXJtaW5hZG8gYSB0ZW5kw6puY2lhIHBhcmEgMjAyNSDDqSBjb250aW51YXIgYSByZWR1w6fDo28gdGFudG8gZG8gcHJlw6dvIHF1YW50byBkYXMgZXhwb3J0YcOnw7VlcywgcmVmb3LDp2FuZG8gYWluZGEgbWFpcyBvIHBvbnRvIGRlIHF1ZSBvIHByZcOnbyBpbnRlcm5hY2lvbmFsIGUgYXMgZXhwb3J0YcOnw7VlcyBicmFzaWxlaXJhcyBhcHJlc2VudGFtIHVtIGNvbXBvcnRhbWVudG8gc2ltaWxhci4NCg0KIyMgKkltcGFjdG8gZG9zIFByZcOnb3MgZGFzIENvbW1vZGl0aWVzIG5vIFNhbGRvIENvbWVyY2lhbCoNCg0KYGBge3J9DQpkYWRvc19pbXBhY3RvX3N0b2NrIDwtIHRvdGFpc19hbnVhaXMgJT4lDQogIG11dGF0ZShBbm8gPSB5ZWFyKERhdGFfU3RvY2spKSAlPiUNCiAgc2VsZWN0KEFubywgU2FsZG8sIEltcG9ydGFjb2VzID0gSW1wb3J0YcOnw7VlcykgJT4lDQogIGxlZnRfam9pbigNCiAgICBkYWRvc19wcmVjbyAlPiUNCiAgICAgIGxlZnRfam9pbihkYWRvc19hbm9fdmFsb3IsIGJ5ID0gYygiQW5vIiwgIkNvbW1vZGl0eSIpKSAlPiUNCiAgICAgIGxlZnRfam9pbih0b3RhaXNfYW51YWlzICU+JSBtdXRhdGUoQW5vID0geWVhcihEYXRhX1N0b2NrKSkgJT4lIHNlbGVjdChBbm8sIEV4cF9Ub3RhbCA9IEV4cG9ydGHDp8O1ZXMpLCBieSA9ICJBbm8iKSAlPiUNCiAgICAgIG11dGF0ZShQYXJ0aWNpcGFjYW9fUmVhbCA9IFZhbG9yIC8gRXhwX1RvdGFsKSAlPiUNCiAgICAgIGdyb3VwX2J5KEFubykgJT4lDQogICAgICBzdW1tYXJpc2UoUHJlw6dvX1BvbmRlcmFkbyA9IHdlaWdodGVkLm1lYW4oUHJlw6dvLCB3ID0gUGFydGljaXBhY2FvX1JlYWwsIG5hLnJtID0gVFJVRSkpLA0KICAgIGJ5ID0gIkFubyINCiAgKSAlPiUNCiAgbXV0YXRlKERhdGEgPSBhcy5EYXRlKHBhc3RlMChBbm8sICItMDEtMDEiKSksIHRpbWVzdGFtcCA9IGRhdGV0aW1lX3RvX3RpbWVzdGFtcChEYXRhKSkgJT4lDQogIGFycmFuZ2UoRGF0YSkNCg0KaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3NfaW1wYWN0b19zdG9jayAlPiUgc2VsZWN0KHRpbWVzdGFtcCwgU2FsZG8pKSwNCiAgICB0eXBlID0gImxpbmUiLCBuYW1lID0gIlNhbGRvIENvbWVyY2lhbCAoVVMkIGJpKSIsIGNvbG9yID0gIiM0NmIxZTEiLCBsaW5lV2lkdGggPSAyLCB5QXhpcyA9IDAsDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDAsIHZhbHVlUHJlZml4ID0gIlVTJCAiLCB2YWx1ZVN1ZmZpeCA9ICIgYmkiKQ0KICApICU+JQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgPSBsaXN0X3BhcnNlMihkYWRvc19pbXBhY3RvX3N0b2NrICU+JSBzZWxlY3QodGltZXN0YW1wLCBJbXBvcnRhY29lcykpLA0KICAgIHR5cGUgPSAiY29sdW1uIiwgbmFtZSA9ICJJbXBvcnRhw6fDtWVzIChVUyQgYmkpIiwgY29sb3IgPSAiIzAyMDIzYyIsIGxpbmVXaWR0aCA9IDMsIHlBeGlzID0gMCwNCiAgICB0b29sdGlwID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMCwgdmFsdWVQcmVmaXggPSAiVVMkICIsIHZhbHVlU3VmZml4ID0gIiBiaSIpDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRhZG9zX2ltcGFjdG9fc3RvY2sgJT4lIHNlbGVjdCh0aW1lc3RhbXAsIFByZcOnb19Qb25kZXJhZG8pKSwNCiAgICB0eXBlID0gImxpbmUiLCBuYW1lID0gIlByZcOnbyBQb25kZXJhZG8gKFVTJC90KSIsIGNvbG9yID0gIiNmZWI3MTIiLCBsaW5lV2lkdGggPSAyLCB5QXhpcyA9IDEsDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDAsIHZhbHVlUHJlZml4ID0gIlVTJCAiLCB2YWx1ZVN1ZmZpeCA9ICIvdCIpDQogICkgJT4lDQogIGhjX3lBeGlzX211bHRpcGxlcygNCiAgICBsaXN0KHRpdGxlID0gbGlzdCh0ZXh0ID0gIlNhbGRvIGUgSW1wb3J0YcOnw7VlcyAoVVMkIGJpKSIpLCBvcHBvc2l0ZSA9IEZBTFNFKSwNCiAgICBsaXN0KHRpdGxlID0gbGlzdCh0ZXh0ID0gIlByZcOnbyBQb25kZXJhZG8gKFVTJC90KSIpLCBvcHBvc2l0ZSA9IFRSVUUpDQogICkgJT4lDQogIGhjX3RpdGxlKHRleHQgPSAiUmVsYcOnw6NvOiBQcmXDp29zIGRhcyBDb21tb2RpdGllcyB2cyBCYWxhbsOnYSBDb21lcmNpYWwiKSAlPiUNCiAgaGNfc3VidGl0bGUodGV4dCA9ICJJbXBhY3RvIGRvcyBwcmXDp29zIG5vIHNhbGRvIGNvbWVyY2lhbCBlIGltcG9ydGHDp8O1ZXMgYnJhc2lsZWlyYXMiKSAlPiUNCiAgaGNfY3JlZGl0cyhlbmFibGVkID0gVFJVRSwgdGV4dCA9ICJGb250ZTogTURJQyAtIE1pbmlzdMOpcmlvIGRvIERlc2Vudm9sdmltZW50bywgSW5kw7pzdHJpYSwgQ29tw6lyY2lvIGUgU2VydmnDp29zIikgJT4lDQogIGhjX3JhbmdlU2VsZWN0b3IoYnV0dG9ucyA9IGxpc3QobGlzdCh0eXBlID0gJ3llYXInLCBjb3VudCA9IDUsIHRleHQgPSAnNVknKSwgbGlzdCh0eXBlID0gJ3llYXInLCBjb3VudCA9IDEwLCB0ZXh0ID0gJzEwWScpLCBsaXN0KHR5cGUgPSAnYWxsJywgdGV4dCA9ICdBbGwnKSkpICU+JQ0KICBoY190b29sdGlwKHNoYXJlZCA9IFRSVUUsIGhlYWRlckZvcm1hdCA9ICc8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB4Ij48Yj57cG9pbnQua2V5OiVZfTwvYj48L3NwYW4+PGJyLz4nKSAlPiUNCiAgaGNfbGVnZW5kKGVuYWJsZWQgPSBUUlVFLCBhbGlnbiA9ICJjZW50ZXIiLCB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsIGxheW91dCA9ICJob3Jpem9udGFsIikNCmBgYA0KDQpPIGdyw6FmaWNvIGFjaW1hIG1vc3RyYSBhIHJlbGHDp8OjbyBlbnRyZSBvcyBwcmXDp29zIGRhcyBjb21tb2RpdGllcyBlIG8gZGVzZW1wZW5obyBkbyBzYWxkbyBjb21lcmNpYWwgZG8gQnJhc2lsIGVudHJlIDIwMDUgZSAyMDI1Lg0KDQpWYWxlIHJlc3NhbHRhciBxdWUgZGlmZXJlbnRlbWVudGUgZG8gw7psdGltbyBncsOhZmljbywgcGFyYSBzZSBhbmFsaXNhciBvIHNhbGRvIMOpIG5lY2Vzc8OhcmlvIGFkaWNpb25hciBuw6NvIHNvbWVudGUgYXMgZXhwb3J0YcOnw7VlcyBqw6EgYW5hbGlzYWRhcyBtYXMgYXMgaW1wb3J0YcOnw7VlcyB0YW1iw6ltLiBEZSBmb3JtYSBjb250csOhcmlhIGFzIGV4cG9ydGHDp8O1ZXMgdG90YWlzIGFvIHNlIGFuYWxpc2FyIHNvbWVudGUgbyBzYWxkbyBjb20gbyBwcmXDp28gcG9uZGVyYWRvLCBuw6NvIHNlIG9ic2VydmEgdW1hIHJlbGHDp8OjbyBwYXJlY2lkYSBlbnRyZSBleHBvcnRhw6fDtWVzIGUgbyBwcmXDp28sIGp1c3RhbWVudGUgcGVsYXMgaW1wb3J0YcOnw7VlcyBlIG91dHJvcyBmYXRvcmVzIGV4dGVybm9zIG1vbmV0w6FyaW9zIGUgY2FtYmlhaXMgYWzDqW0gZGUgYmFycmVpcmFzIGNvbWVyY2lhaXMgaW1wYWN0YXJlbSBvIHZhbG9yIGRvIHNhbGRvIGZpbmFsLCBtb3N0cmFuZG8gdW1hIGdyYW5kZSB2YXJpYcOnw6NvIG1vc3RyYW5kbyBxdWUgc2UgY2FzbyBvIHByZcOnbyBhdW1lbnRlIG91IGRpbWludWEsIG7Do28gbmVjZXNzYXJpYW1lbnRlIG8gc2FsZG8gaXLDoSBzZWd1aXIgZXNzZSBwYWRyw6NvLiBJc3NvIMOpIGV2aWRlbnRlIGVtIDIwMjMgcG9yIGV4ZW1wbG8gb25kZSBob3V2ZSB1bWEgcmVkdcOnw6NvIGNvbnNpZGVyw6F2ZWwgbm8gcHJlw6dvLCBlIG8gc2FsZG8gc2FpdSBkZSA2MSBiaWxow7VlcyBVUyQgcGFyYSBxdWFzZSA5OSBiaWxow7VlcyBVUyQsIG11aXRvIHBvciBjb250YSBkYXMgaW1wb3J0YcOnw7VlcyBxdWUgdGFtYsOpbSBjYcOtcmFtIGp1bnRvIGNvbSBvIHByZcOnby4NCg0KTm9zIHBlcsOtb2RvcyBkZSB2YWxvcml6YcOnw6NvIGRhcyBjb21tb2RpdGllcywgZXNwZWNpYWxtZW50ZSBlbnRyZSAyMDA3IGUgMjAxMSBlIG5vdmFtZW50ZSBlbSAyMDIxIGUgMjAyMiwgb2JzZXJ2YS1zZSB1bSBjcmVzY2ltZW50byBleHByZXNzaXZvIGRhcyBleHBvcnRhw6fDtWVzLCBhY29tcGFuaGFkbyBwZWxhIGV4cGFuc8OjbyBkbyBzYWxkbyBjb21lcmNpYWwgcG9zaXRpdm8uIEVtIGNvbnRyYXBhcnRpZGEsIG5hcyBmYXNlcyBkZSBxdWVkYSBkZSBwcmXDp29zLCBjb21vIGVtIDIwMTQgZSAyMDE2LCBvIHNhbGRvIGNvbWVyY2lhbCBzZSByZWR1eiBzaWduaWZpY2F0aXZhbWVudGUsIGFpbmRhIHF1ZSBhcyBpbXBvcnRhw6fDtWVzIHRhbWLDqW0gZGVzYWNlbGVyYW0uIElzc28gaW5kaWNhIHF1ZSBhIGRldGVyaW9yYcOnw6NvIGRvcyB0ZXJtb3MgZGUgdHJvY2EgYWZldGEgZGlyZXRhbWVudGUgYSBjYXBhY2lkYWRlIGRlIGdlcmHDp8OjbyBkZSBkaXZpc2FzIGRvIHBhw61zLiANCg0KIyMgQ29uY2x1c8Ojbw0KDQpPcyByZXN1bHRhZG9zIG9idGlkb3MgbmVzdGUgcmVsYXTDs3JpbyBpbmRpY2FtIHF1ZSBhIGVzdHJ1dHVyYSBleHBvcnRhZG9yYSBicmFzaWxlaXJhIHBlcm1hbmVjZSBmb3J0ZW1lbnRlIGRlcGVuZGVudGUgZGUgcHJvZHV0b3MgcHJpbcOhcmlvcywgbyBxdWUgZXZpZGVuY2lhIGEgcGVyc2lzdMOqbmNpYSBkZSB1bSBwYWRyw6NvIGRlIGVzcGVjaWFsaXphw6fDo28gcHJvZHV0aXZhIGJhc2VhZG8gZW0gYmVucyBkZSBiYWl4byB2YWxvciBhZ3JlZ2Fkby4gRXNzYSBjb25maWd1cmHDp8OjbyBhY2VudHVhIGEgdnVsbmVyYWJpbGlkYWRlIGV4dGVybmEgZGEgZWNvbm9taWEgbmFjaW9uYWwsIHRvcm5hbmRvIG8gZGVzZW1wZW5obyBjb21lcmNpYWwgZSBvIGNyZXNjaW1lbnRvIGVjb27DtG1pY28gY29uZGljaW9uYWRvcyBhIGZhdG9yZXMgZXjDs2dlbm9zLCBjb21vIGEgdmFyaWHDp8OjbyBkb3MgcHJlw6dvcyBpbnRlcm5hY2lvbmFpcyBlIGEgZGluw6JtaWNhIGRhIGRlbWFuZGEgZ2xvYmFsLiBBbMOpbSBkaXNzbywgYSBhcGxpY2HDp8OjbyBkbyBtb2RlbG8gZGUgcmVzdHJpw6fDo28gZXh0ZXJuYSBhbyBjcmVzY2ltZW50byByZXZlbG91IHF1ZSBvIEJyYXNpbCBlbmZyZW50YSB1bSB0cmFkZS1vZmYgZXN0cnV0dXJhbCBlbnRyZSBleHBhbnPDo28gZG8gcHJvZHV0byBpbnRlcm5vIGUgZXF1aWzDrWJyaW8gZG8gc2V0b3IgZXh0ZXJuby4gTyBhdW1lbnRvIGRvIFBJQiwgYW8gZWxldmFyIGEgZGVtYW5kYSBwb3IgaW1wb3J0YcOnw7Vlcywgb25kZSBhIGVsYXN0aWNpZGFkZS1yZW5kYSDDqSBzdXBlcmlvciBhIHVtLCBpbXDDtWUgYSBuZWNlc3NpZGFkZSBkZSBkZXN2YWxvcml6YcOnw7VlcyBjYW1iaWFpcyBwYXJhIG1hbnV0ZW7Dp8OjbyBkbyBzYWxkbyBjb21lcmNpYWwsIGltcGxpY2FuZG8gY3VzdG9zIGluZmxhY2lvbsOhcmlvcyBlIHJlZGlzdHJpYnV0aXZvcy4gVGFsIHJlc3VsdGFkbyByZWZvcsOnYSBhIHRlc2UgZGUgcXVlIG8gY3Jlc2NpbWVudG8gYnJhc2lsZWlybyBlbmNvbnRyYS1zZSBsaW1pdGFkbyBuw6NvIGFwZW5hcyBwb3IgY2hvcXVlcyBjb25qdW50dXJhaXMsIG1hcyBwb3IgY29uZGljaW9uYW50ZXMgZXN0cnV0dXJhaXMgZGUgc3VhIGluc2Vyw6fDo28gaW50ZXJuYWNpb25hbC4NCg0KQXMgYW7DoWxpc2VzIGVtcMOtcmljYXMgZSBncsOhZmljYXMgY29ycm9ib3JhcmFtIGVzc2UgZGlhZ27Ds3N0aWNvLCBhbyBldmlkZW5jaWFyIGFzIGNvcnJlbGHDp8O1ZXMgcG9zaXRpdmFzIGVudHJlIG9zIHByZcOnb3MgZGFzIGNvbW1vZGl0aWVzIGUgbyBkZXNlbXBlbmhvIGRhIGJhbGFuw6dhIGNvbWVyY2lhbCwgYmVtIGNvbW8gYSBuYXR1cmV6YSBpbnRlcm1pdGVudGUgZGEgcmVsYcOnw6NvIGVudHJlIGPDom1iaW8sIGV4cG9ydGHDp8O1ZXMgZSBjcmVzY2ltZW50by4gRGVzc2EgZm9ybWEsIG8gZGVzZW1wZW5obyBleHRlcm5vIGRvIHBhw61zIHRlbSBzZSBtb3N0cmFkbyBtYWlzIHNlbnPDrXZlbCDDoCBwcmVjaWZpY2HDp8OjbyBpbnRlcm5hY2lvbmFsIGRvIHF1ZSBhIGdhbmhvcyBkZSBwcm9kdXRpdmlkYWRlLCBvIHF1ZSBleHBsaWNhIGEgdm9sYXRpbGlkYWRlIGRhIGJhbGFuw6dhIGUgYSByZWNvcnLDqm5jaWEgZGUgZXBpc8OzZGlvcyBkZSByZXN0cmnDp8OjbyBleHRlcm5hLg0KDQojIyBSZWZlcsOqbmNpYXMNCg0KLSAgIEJBUkJPU0EtRklMSE8sIE5lbHNvbiBILiBHcm93dGgsIGV4Y2hhbmdlIHJhdGVzIGFuZCB0cmFkZSBpbiBCcmF6aWw6IGEgc3RydWN0dXJhbGlzdCBwb3N0LUtleW5lc2lhbiBhcHByb2FjaC4gTm92YSBFY29ub21pYSwgQmVsbyBIb3Jpem9udGUsIHYuIDE0LCBuLiAyLCBwLiA1OeKAkzg2LCBtYWlvL2Fnby4gMjAwNC4gRGlzcG9uw612ZWwgZW06IDxodHRwczovL3d3dy5yZXNlYXJjaGdhdGUubmV0L3B1YmxpY2F0aW9uLzUyMDAxNzBfR3Jvd3RoX2V4Y2hhbmdlX3JhdGVzX2FuZF90cmFkZV9pbl9CcmF6aWxfYV9zdHJ1Y3R1cmFsaXN0X3Bvc3QtS2V5bmVzaWFuX2FwcHJvYWNoPiBBY2Vzc28gZW06IDUgb3V0LiAyMDI1Lg0KDQotICAgQk9ORUxMSSwgUmVnaXMuIFByb2R1dGl2aWRhZGUgZSBjcmVzY2ltZW50byBubyBCcmFzaWw6IG8gcXVlIChuw6NvKSBhcHJlbmRlbW9zIG5vcyBhbm9zIDE5OTAuIFRleHRvIHBhcmEgRGlzY3Vzc8OjbywgSW5zdGl0dXRvIGRlIFBlc3F1aXNhIEVjb27DtG1pY2EgQXBsaWNhZGEgKElQRUEpLCBuLiAxMDU5LCAyMDA1Lg0KDQotICAgQlJFU1NFUi1QRVJFSVJBLCBMdWl6IENhcmxvczsgR0FMQSwgUGF1bG8uIFBvciBxdWUgYSBwb3VwYW7Dp2EgZXh0ZXJuYSBuw6NvIHByb21vdmUgY3Jlc2NpbWVudG8uIFJldmlzdGEgZGUgRWNvbm9taWEgUG9sw610aWNhLCBTw6NvIFBhdWxvLCB2LiAyNywgbi4gMSwgcC4gM+KAkzE5LCBqYW4uL21hci4gMjAwNy4NCg0KLSAgIEJSQVNJTC4gTWluaXN0w6lyaW8gZG8gRGVzZW52b2x2aW1lbnRvLCBJbmTDunN0cmlhIGUgQ29tw6lyY2lvIEV4dGVyaW9yLiBTaXRlIGluc3RpdHVjaW9uYWwuIERpc3BvbsOtdmVsIGVtOiA8aHR0cHM6Ly93d3cuZ292LmJyL21kaWMvcHQtYnI+IEFjZXNzbyBlbTogNSBvdXQuIDIwMjUuDQoNCi0gICBDQVJORUlSTywgUmljYXJkby4gR2xvYmFsaXphw6fDo28gZSBpbnNlcsOnw6NvIGV4dGVybmE6IGEgZWNvbm9taWEgYnJhc2lsZWlyYSBub3MgYW5vcyAxOTkwLiBOb3ZvcyBFc3R1ZG9zIENFQlJBUCwgU8OjbyBQYXVsbywgbi4gODAsIHAuIDXigJMyOCwgbWFyLiAyMDA4Lg0KDQotICAgQ09SREVOLCBXLiBNLjsgTkVBUlksIEouIFAuIEJvb21pbmcgc2VjdG9yIGFuZCBkZS1pbmR1c3RyaWFsaXNhdGlvbiBpbiBhIHNtYWxsIG9wZW4gZWNvbm9teS4gVGhlIEVjb25vbWljIEpvdXJuYWwsIHYuIDkyLCBuLiAzNjgsIHAuIDgyNeKAkzg0OCwgMTk4Mi4NCg0KLSAgIEtSVUdNQU4sIFBhdWwuIEludGVybmF0aW9uYWwgZWNvbm9taWNzOiB0aGVvcnkgYW5kIHBvbGljeS4gNC4gZWQuIFJlYWRpbmcsIE1BOiBBZGRpc29uLVdlc2xleSwgMTk5OC4NCg0KLSAgIEtVUEZFUiwgRGF2aWQ7IFJPQ0hBLCBGZXJuYW5kby4gSW5kdXN0cmlhbGl6YcOnw6NvIG5vIEJyYXNpbDogZGEgc3Vic3RpdHVpw6fDo28gZGUgaW1wb3J0YcOnw7VlcyDDoCBnbG9iYWxpemHDp8Ojby4gUmlvIGRlIEphbmVpcm86IENhbXB1cywgMjAwOC4NCg0KLSAgIE1JTklTVMOJUklPIERPIERFU0VOVk9MVklNRU5UTywgSU5Ew5pTVFJJQSwgQ09Nw4lSQ0lPIEUgU0VSVknDh09TLiBCcmFzaWwgc2UgZGVzdGFjYSBjb20gcmVjb3JkZSBkZSBleHBvcnRhw6fDo28gZGUgVVNcJCAxODEsOSBiaWxow7VlcyBuYSBpbmTDunN0cmlhIGRlIHRyYW5zZm9ybWHDp8Ojby4gQnJhc8OtbGlhLCAyMDI1LiBEaXNwb27DrXZlbCBlbTogPGh0dHBzOi8vd3d3Lmdvdi5ici9tZGljL3B0LWJyL2Fzc3VudG9zL25vdGljaWFzLzIwMjUvamFuZWlyby9icmFzaWwtc2UtZGVzdGFjYS1jb20tcmVjb3JkZS1kZS1leHBvcnRhY2FvLWRlLXVzLTE4MS05LWJpbGhvZXMtbmEtaW5kdXN0cmlhLWRlLXRyYW5zZm9ybWFjYW8+IEFjZXNzbyBlbTogNSBvdXQuIDIwMjUuDQoNCi0gICBNSU5JU1TDiVJJTyBETyBERVNFTlZPTFZJTUVOVE8sIElORMOaU1RSSUEsIENPTcOJUkNJTyBFIFNFUlZJw4dPUy4gQmFsYW7Dp2EgY29tZXJjaWFsIGJyYXNpbGVpcmEg4oCTIHByaW5jaXBhaXMgcmVzdWx0YWRvcy4gRGlzcG9uw612ZWwgZW06IDxodHRwczovL2JhbGFuY2EuZWNvbm9taWEuZ292LmJyL2JhbGFuY2EvcGdfcHJpbmNpcGFsX2JjL3ByaW5jaXBhaXNfcmVzdWx0YWRvcy5odG1sPiBBY2Vzc28gZW06IDUgb3V0LiAyMDI1Lg0KDQotICAgTUlOSVNUw4lSSU8gRE8gREVTRU5WT0xWSU1FTlRPLCBJTkTDmlNUUklBLCBDT03DiVJDSU8gRSBTRVJWScOHT1MuIENvbWV4IFN0YXQuIERpc3BvbsOtdmVsIGVtOiA8aHR0cHM6Ly9jb21leHN0YXQubWRpYy5nb3YuYnIvcHQvaG9tZT4gQWNlc3NvIGVtOiA1IG91dC4gMjAyNS4NCg0KLSAgIE9SRUlSTywgSm9zw6kgTHVpczsgRkVJSsOTLCBDYXJtZW0gQXBhcmVjaWRhLiBEZXNpbmR1c3RyaWFsaXphw6fDo286IGNvbmNlaXR1YcOnw6NvLCBjYXVzYXMsIGVmZWl0b3MgZSBvIGNhc28gYnJhc2lsZWlyby4gUmV2aXN0YSBkZSBFY29ub21pYSBQb2zDrXRpY2EsIFPDo28gUGF1bG8sIHYuIDMwLCBuLiAyLCBwLiAyMTnigJMyMzIsIGFici4vanVuLiAyMDEwLg0KDQotICAgUFJBVEVTLCBEYW5pZWxhIE1hZ2FsaMOjZXMuIEFwcmVjaWHDp8OjbyBjYW1iaWFsIGUgZGVzaW5kdXN0cmlhbGl6YcOnw6NvIG5vIEJyYXNpbC4gUmV2aXN0YSBkZSBFY29ub21pYSBQb2zDrXRpY2EsIFPDo28gUGF1bG8sIHYuIDI3LCBuLiAxLCBwLiA0N+KAkzY1LCBqYW4uL21hci4gMjAwNy4NCg0KLSAgIFNJTU9OU0VOLCBNYXJpbyBIZW5yaXF1ZS4gQSBjb250YS1jb3JyZW50ZSBkbyBnb3Zlcm5vOiAxOTcw4oCTMTk4OC4gUmlvIGRlIEphbmVpcm86IEZ1bmRhw6fDo28gR2V0w7psaW8gVmFyZ2FzLCAxOTg5Lg0KDQotICAgQkFOQ08gQ0VOVFJBTCBETyBCUkFTSUwuIEVzdGF0w61zdGljYXMgZG8gc2V0b3IgZXh0ZXJubyDigJMgMjAyNS4gQnJhc8OtbGlhOiBCQ0IsIDIwMjUuIERpc3BvbsOtdmVsIGVtOiA8aHR0cHM6Ly93d3cuYmNiLmdvdi5ici9jb250ZW50L2VzdGF0aXN0aWNhcy9oaXN0X2VzdGF0aXN0aWNhc3NldG9yZXh0ZXJuby8yMDI1MDhfVGV4dG9fZGVfZXN0YXRpc3RpY2FzX2RvX3NldG9yX2V4dGVybm8ucGRmPiBBY2Vzc28gZW06IDUgb3V0LiAyMDI1Lg0KDQotICAgQkFOQ08gQ0VOVFJBTCBETyBCUkFTSUwuIFJlbGF0w7NyaW8gZGUgZ2VzdMOjbyBkYXMgcmVzZXJ2YXMgaW50ZXJuYWNpb25haXMg4oCTIDIwMjUuIEJyYXPDrWxpYTogQkNCLCAyMDI1LiBEaXNwb27DrXZlbCBlbTogPGh0dHBzOi8vd3d3LmJjYi5nb3YuYnIvY29udGVudC9wdWJsaWNhY29lcy9yZWxnZXN0YW9yZXNlcnZhcy9HRVNUQU9SRVNFUlZBUzIwMjUwMy1yZWxhdG9yaW9fYW51YWxfcmVzZXJ2YXNfaW50ZXJuYWNpb25haXNfMjAyNS5wZGY+IEFjZXNzbyBlbTogNSBvdXQuIDIwMjUuDQoNCi0gICBCQU5DTyBDRU5UUkFMIERPIEJSQVNJTC4gU8OpcmllcyB0ZW1wb3JhaXMg4oCTIFNldG9yIGV4dGVybm8uIERpc3BvbsOtdmVsIGVtOiA8aHR0cHM6Ly93d3czLmJjYi5nb3YuYnIvc2dzcHViL2xvY2FsaXphcnNlcmllcz4gQWNlc3NvIGVtOiA1IG91dC4gMjAyNS4NCg0KLSAgIEJOREVTIOKAkyBCYW5jbyBOYWNpb25hbCBkZSBEZXNlbnZvbHZpbWVudG8gRWNvbsO0bWljbyBlIFNvY2lhbC4gQmFsYW7Dp28gZGUgcGFnYW1lbnRvcyBkbyBCcmFzaWwuIFJpbyBkZSBKYW5laXJvOiBCTkRFUywgW3MuZC5dLiBEaXNwb27DrXZlbCBlbTogPGh0dHBzOi8vd2ViLmJuZGVzLmdvdi5ici9iaWIvanNwdWkvYml0c3RyZWFtLzE0MDgvMjgxNjcvMS9QUkZvbF8yMTY1OTFfQmFsYW4lQzMlQTdvJTIwZGUlMjBwYWdhbWVudG9zJTIwZG8lMjBCcmFzaWxfXy5wZGY+IEFjZXNzbyBlbTogNSBvdXQuIDIwMjUuDQoNCi0gICBGSVBFIOKAkyBGdW5kYcOnw6NvIEluc3RpdHV0byBkZSBQZXNxdWlzYXMgRWNvbsO0bWljYXMuIEJvbGV0aW0gSW5mb3JtYcOnw7VlcyBGSVBFLCBuLiA1MzQsIHAuIDM44oCTNDcsIDIwMjUuIERpc3BvbsOtdmVsIGVtOiA8aHR0cHM6Ly9kb3dubG9hZHMuZmlwZS5vcmcuYnIvcHVibGljYWNvZXMvYmlmL2JpZjUzNC5wZGY+IEFjZXNzbyBlbTogNSBvdXQuIDIwMjUuDQoNCi0gICBJUEVBIOKAkyBJbnN0aXR1dG8gZGUgUGVzcXVpc2EgRWNvbsO0bWljYSBBcGxpY2FkYS4gUHVibGljYcOnw6NvIHNvYnJlIG8gc2V0b3IgZXh0ZXJubyBicmFzaWxlaXJvLiBCcmFzw61saWE6IElQRUEsIFtzLmQuXS4gRGlzcG9uw612ZWwgZW06IDxodHRwczovL3JlcG9zaXRvcmlvLmlwZWEuZ292LmJyL3NlcnZlci9hcGkvY29yZS9iaXRzdHJlYW1zLzUwODc0ODUwLTE2MjUtNDY0Zi1hZGE5LTlhZWQ3YmI4ZjQ3My9jb250ZW50PiBBY2Vzc28gZW06IDUgb3V0LiAyMDI1Lg0KDQotICAgSVBFQSDigJMgSW5zdGl0dXRvIGRlIFBlc3F1aXNhIEVjb27DtG1pY2EgQXBsaWNhZGEuIFJlcG9zaXTDs3JpbyBpbnN0aXR1Y2lvbmFsIElQRUEuIERpc3BvbsOtdmVsIGVtOiA8aHR0cHM6Ly9yZXBvc2l0b3Jpby5pcGVhLmdvdi5icj4gQWNlc3NvIGVtOiA1IG91dC4gMjAyNS4gSVBFQURBVEEuIEJhc2UgZGUgZGFkb3MgbWFjcm9lY29uw7RtaWNvcy4gRGlzcG9uw612ZWwgZW06IDxodHRwczovL3d3dy5pcGVhZGF0YS5nb3YuYnI+LiBBY2Vzc28gZW06IDUgb3V0LiAyMDI1Lg0KDQotICAgUEFTU0VJIERJUkVUTy4gRWNvbm9taWEgSW50ZXJuYWNpb25hbCBJLiBNYXRlcmlhbCBjb21wYXJ0aWxoYWRvIHBvciB1c3XDoXJpby4gRGlzcG9uw612ZWwgZW06IDxodHRwczovL3d3dy5wYXNzZWlkaXJldG8uY29tL2FycXVpdm8vNzIyMTIzNTQvZWNvbm9taWEtaW50ZXJuYWNpb25hbC1pPiBBY2Vzc28gZW06IDUgb3V0LiAyMDI1LjcNCg0KLSAgIEZHViDigJMgRnVuZGHDp8OjbyBHZXR1bGlvIFZhcmdhcy4gUmVsYXTDs3JpbyBzb2JyZSBiYWxhbsOnbyBkZSBwYWdhbWVudG9zIGUgY29tw6lyY2lvIGV4dGVyaW9yLiBSaW8gZGUgSmFuZWlybzogRkdWLCBbcy5kLl0uIERpc3BvbsOtdmVsIGVtOiA8aHR0cHM6Ly9yZXBvc2l0b3Jpby5mZ3YuYnIvc2VydmVyL2FwaS9jb3JlL2JpdHN0cmVhbXMvZjc2YmI4ZGEtYTNjYS00Mzg5LWFkM2MtYTFjYTYzMjY5MzA3L2NvbnRlbnQ+IEFjZXNzbyBlbTogNSBvdXQuIDIwMjUuDQoNCg0K