Reservas Internacionais: Como elas podem ajudar em momentos de crise?

As reservas internacionais são ativos externos do país (moedas conversíveis, títulos, depósitos e ouro). Sua função primordial é atuar como um seguro de liquidez, garantindo a capacidade do país de honrar pagamentos externos e amortecer choques econômicos, como crises cambiais e interrupções abruptas nos fluxos de capital. No Brasil, onde vigora o regime de câmbio flutuante, a gestão dessas reservas cabe ao Banco Central do Brasil (BCB). Elas desempenham um papel crucial para manter o funcionamento do mercado, pois permitem suavizar movimentos bruscos do Real frente ao Dólar, aumentando a previsibilidade para os agentes econômicos.

“Existem poucas certezas na economia, mas sempre haverá outra crise financeira.” - Linda Yueh, “The Great Crashes”, 2023.

Crises são, por definição, inesperadas, o que reforça o papel das reservas como um seguro de liquidez e um instrumento de estabilização. Elas servem como colchão para prover dólares ao mercado, reduzir a volatilidade cambial, ancorar expectativas e manter os pagamentos externos. O Banco Central pode vender dólares na hora, emprestar dólares aos bancos, e usar swap cambial para gerenciar riscos futuros. Essas ferramentas cobrem os choques que atingem o balanço de pagamentos do país. Este relatório visa analisar como as reservas do Brasil funcionam para mitigar os efeitos de crises utilizando como exemplo 2008 e 2020, destacando os diferentes instrumentos e decisões do Banco Central em cada episódio.

Crise de 2008

A Crise Financeira Global de 2008, desencadeada pela quebra do banco americano Lehman Brothers em setembro, gerando um choque de confiança no sistema financeiro global. Essa desconfiança paralisou os mercados interbancários, resultando no congelamento do crédito em escala mundial e na interrupção abrupta das linhas externas de financiamento. Para o Brasil, esse pânico se traduziu em uma intensa corrida por dólares e uma forte depreciação cambial do real.

O Gráfico 1 [Variação do Dólar entre 2007 e 2009] mostra que, antes do choque de setembro de 2008, o Real estava em um processo de valorização frente ao Dólar. Com a crise, o dólar aumenta drasticamente de preço, resultando em uma forte depreciação cambial do Real.

O Gráfico 2 [Variação das Reservas entre 2007 e 2009] contextualiza a ação do Banco Central (BC): ao longo de 2007 e 2008, o país construiu um robusto colchão, que sofreu uma queda pontual e temporária no ápice da crise.

Por fim, o Gráfico 3 [Reservas Internacionais vs. Dólar] fornece o foco central: a linha do dólar em seu ponto mais alto corresponde ao momento em que as reservas estavam caindo, evidenciando o uso do estoque como amortecedor.

A intervenção do Banco Central na Crise de 2008 foi uma defesa focada em resolver a falta de dólares no mercado, utilizando-se do estoque de reservas internacionais para injetar liquidez no sistema. A principal tática foi o uso de vendas com compromisso de recompra. O BC ofereceu dólares aos bancos com a garantia de que os compraria de volta em uma data futura, uma medida que sanou a escassez de liquidez, assegurando simultaneamente que o estoque de reservas seria devolvido. De forma complementar, as reservas foram usadas como lastro para aliviar a falta de moeda estrangeira no financiamento de operações de comércio exterior, crucial para o setor de exportação. Além da liquidez física, o BC utilizou o Swap Cambial, um contrato que oferece proteção cambial (hedge) sem o desembolso imediato de dólar físico, sendo essencial para acalmar o pânico no mercado futuro, ancorando as expectativas e estabilizando o câmbio.

O Gráfico 2 evidencia que, a partir de abril de 2009, o volume de reservas internacionais voltou a crescer, demonstrando a reversão das medidas temporárias de empréstimo e a rápida capacidade de recuperação da economia brasileira.

Crise de 2020

As reservas internacionais brasileiras, que posicionaram o Brasil como o décimo maior detentor mundial , atuaram como um “seguro contra crises” essencial durante a turbulência econômica da COVID-19 em 2020. O manejo dessas reservas pelo Banco Central (BC) foi crucial para mitigar a volatilidade cambial e garantir a liquidez do mercado.
A atuação do BC foi desencadeada pelo cenário de “flight to quality” global, que gerou forte pressão cambial, sendo março de 2020 o período de maior choque agudo. Para conter a pressão desordenada e prover liquidez, o BC interveio no mercado à vista, mobilizando US$24,24 bilhões em dólares das reservas entre março e novembro de 2020. As operações foram vitais para suavizar a valorização excessiva do dólar, prevenindo impactos inflacionários mais severos e facilitando o ajuste de liquidez do mercado. A intervenção foi complementada pelo uso de instrumentos derivados, como o swap cambial, que oferecem cobertura cambial ao mercado sem drenar imediatamente o estoque de reservas. Em leilões combinados, o BC chegou a vender 1 bilhão de dólares à vista e 1 bilhão de dólares em contratos de swap. Adicionalmente, a ativação da linha temporária de swap com o Federal Reserve (Fed) dos EUA, com limite de US$ 60 bilhões, serviu como um backstop de credibilidade, garantindo o acesso a liquidez em dólar para o Sistema Financeiro Nacional (SFN).

Apesar da venda considerável, o Brasil encerrou 2020 com o estoque de reservas praticamente intacto, próximo ao patamar de US$356,9 bilhões. Esse paradoxo é explicado pela composição das reservas, que prioriza segurança e liquidez. A crise global, ao impulsionar o flight to quality e a queda das taxas de juros globais, resultou em um ganho de capital que compensou integralmente as vendas operacionais.
A manutenção desse estoque robusto é aceita, apesar do custo de oportunidade financeiro. O custo de oportunidade é medido pela diferença entre o retorno que o capital geraria domesticamente e o baixo retorno dos ativos de reserva. Contudo, o custo é justificado pelo benefício sistêmico de reduzir o Risco País (limitando o spread da dívida externa). O choque de 2020 validou o custo desse “seguro”. Em linha com a tendência global, o Brasil, assim como a maioria das Economias de Mercados Emergentes (EMEs), utilizou suas reservas com equilíbrio, permitindo que a desvalorização cambial fosse a principal variável de ajuste para absorver o choque, reafirmando o Brasil como um credor internacional (reservas líquidas superiores à dívida externa bruta).

Tesouro Nacional e Tesouro Americano

A gestão da Dívida Pública Federal (DPF), que totaliza 7,939 trilhões de reais, opera sob forte dependência da política monetária externa. Essa vulnerabilidade nasce da própria composição das Reservas Internacionais (RI), cujo estoque, em torno de US$345,7 bilhões, é majoritariamente aplicado em títulos de baixo risco do Tesouro dos Estados Unidos. Quando o Federal Reserve (Fed) eleva suas taxas de juros, o cenário global se transforma, ocorrendo um aumento da atratividade dos ativos americanos e reversão dos fluxos de capital, pressionando o real e elevando o custo de financiamento externo para o Brasil. Internamente, o Banco Central é forçado a manter a taxa Selic em patamares elevados para conter a desvalorização cambial e o avanço da inflação. Contudo, essa taxa alta também encarece a remuneração da dívida interna usada para operações de esterilização cambial, ampliando o custo de carregamento (carry cost) das reservas internacionais. Nesse contexto, as reservas atuam como o principal “seguro soberano” do país. Elas servem para amortecer choques de liquidez e garantir a credibilidade junto às agências de classificação de risco. Historicamente, o papel estabilizador das reservas ficou evidente em períodos de crise. Em 2008, durante o colapso financeiro global, parte delas foi utilizada para garantir liquidez ao sistema financeiro e evitar desvalorizações abruptas do real. Já em 2020, diante da pandemia de Covid-19, o Banco Central voltou a recorrer às reservas para conter a volatilidade cambial e assegurar a confiança dos investidores em meio à fuga global de capitais. Apesar do elevado custo fiscal de manter esse colchão de segurança especialmente num cenário de juros domésticos altos, a ausência de reservas significativas poderia expor o país a crises cambiais mais severas e perda de credibilidade internacional. O desafio, portanto, é equilibrar a sustentabilidade da dívida com a proteção da estabilidade macroeconômica e financeira.

O gráfico 5 [Tesouro Nacional e Tesouro Americano] ilustra a interação entre dívida pública, reservas internacionais e taxa de juros dos Estados Unidos, destacando como as mudanças na política monetária global afetam diretamente a dinâmica fiscal e cambial brasileira. Observa-se que a variação da dívida líquida é proporcional à variação dos juros nos EUA.

Composição das Reservas

As Reservas Internacionais do Brasil conferem uma robusta garantia de solvência e um bom instrumento de estabilização. Conforme evidenciado no Gráfico 6, a decisão de manter a reserva majoritariamente em Dólar Americano (US$) baseia-se na busca pela liquidez máxima, pois o dólar é a moeda dominante das finanças e do comércio globais. Contudo, a estratégia de gestão inclui a diversificação em moedas como o Euro, a Libra Esterlina e também em Ouro. Essa diversificação não apenas protege o estoque contra a desvalorização de uma única divisa, mas também garante que o BC possa atender a diferentes demandas de liquidez global. Em momentos de crise, o grande estoque em moeda forte funciona como um agente tranquilizador, garantindo aos credores internacionais que o Brasil pode honrar seus compromissos. Além disso, o Gráfico 7 demonstra que a maior parte dos ativos está em títulos soberanos, títulos de dívida emitidos por governos de outros países (principalmente o Tesouro Americano). Essa classe de ativo representa o menor risco de crédito global, uma vez que um governo soberano pode agir para liquidar sua dívida, seja aumentando impostos, vendendo outros ativos, ou até emitindo moeda física, e é fundamental para preservar o valor do colchão de reservas. Ao focar em segurança e liquidez, o BC assegura que o seu poder para intervir na estabilidade cambial e amortecer choques seja mantido.

Conclusão

A análise das crises de 2008 e 2020 evidencia que as reservas internacionais desempenham um papel estratégico fundamental na estabilidade macroeconômica do Brasil. Elas funcionam como um verdadeiro seguro soberano, permitindo ao Banco Central atuar de forma rápida e eficaz para conter a volatilidade cambial, garantir liquidez ao mercado e preservar a confiança dos investidores. Em ambos os episódios, o uso prudente e coordenado das reservas demonstrou a capacidade do país de enfrentar choques externos sem comprometer sua solvência, destacando a importância de manter um estoque robusto mesmo diante do custo fiscal associado. A política de gestão das reservas, concentrada em ativos de alta liquidez e baixo risco, principalmente títulos do Tesouro americano, reforça a credibilidade do Brasil perante os mercados internacionais e assegura a continuidade de suas operações externas em contextos adversos. Assim, o desafio que se impõe à política econômica brasileira é o de equilibrar a necessidade de proteger o país contra choques financeiros globais com a sustentabilidade fiscal interna. Manter reservas elevadas implica custos, mas a ausência delas teria custos muito maiores: perda de credibilidade, instabilidade cambial e risco de crise de confiança. Nesse sentido, as reservas internacionais se consolidam como um pilar essencial da política econômica e da resiliência financeira do Brasil frente às incertezas do cenário global.

Referências

BANCO CENTRAL DO BRASIL. Séries temporais – Sistema Gerenciador de Séries Temporais (SGS). Brasília: Banco Central do Brasil. Disponível em: https://www.bcb.gov.br/estatisticas/sgs. Acesso em: 6 out. 2025.

BANCO CENTRAL DO BRASIL. Relatório Anual 2008. Boletim do Banco Central do Brasil, v. 44, 2008. Brasília: BCB. Disponível em: https://www.bcb.gov.br/pec/boletim/banual2008/rel2008p.pdf. Acesso em: 6 out. 2025. Banco Central do Brasil

BANCO CENTRAL DO BRASIL. Relatório de Gestão das Reservas Internacionais. v. 17. Brasília: BCB, mar. 2025. Disponível em: https://www.bcb.gov.br/content/publicacoes/relgestaoreservas/GESTAORESERVAS202503-relatorio_anual_reservas_internacionais_2025.pdf. Acesso em: 6 out. 2025. Banco Central do Brasil

MESQUITA, Mário; TORÓS, Mário. Considerações sobre a Atuação do Banco Central na Crise de 2008. Trabalhos para Discussão, n. 202. Brasília: Banco Central do Brasil, mar. 2010. Disponível em: https://www.bcb.gov.br/pec/wps/port/wps202.pdf. Acesso em: 6 out. 2025. Banco Central do Brasil

PELLEGRINI, Josué. Custo de carregamento e nível das reservas internacionais. Nota Técnica n. 39. Brasília: Senado Federal, Instituição Fiscal Independente, 28 out. 2019. Disponível em: https://www2.senado.leg.br/bdsf/bitstream/handle/id/563834/NT39_Custo_carregamento_nivel_reservas_internacionais.pdf. Acesso em: 6 out. 2025. Senado

RODRIGUES DE OLIVEIRA, Cinthia; LEONARDO DE ARAUJO, Victor. Excesso? O debate sobre o nível das reservas internacionais no Brasil. Brazilian Keynesian Review, v. 7, n. 1, p. 107–154, 2021. DOI: 10.33834/bkr.v7i1.245. Disponível em: https://braziliankeynesianreview.org/BKR/article/view/245. Acesso em: 6 out. 2025. braziliankeynesianreview.org

SAMPAIO, Adriano Vilela; WEISS, Mauricio Andrade; VAN NOIJE, Paulo. Pandemia da Covid-19 e pressão cambial: uma análise dos países emergentes. Economia e Sociedade, Campinas, v. 31, n. 1, p. 159-189, 2022. Disponível em: https://periodicos.sbu.unicamp.br/ojs/index.php/ecos/article/view/8681097. Acesso em: 6 out. 2025.

UNIVERSIDADE DE SÃO PAULO. Manual de Macroeconomia Básico e Intermediário. São Paulo: USP, s.d.

LS0tDQp0aXRsZTogIkJQTTY6IFJlc2VydmFzIEludGVybmFjaW9uYWlzIg0KYXV0aG9yOiAiT3TDoXZpbyBNb3VyYSBlIFJvYmVydGEgTG9iYXRvIg0KZGF0ZTogIjA3LTEwLTIwMjUiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiB0cnVlDQogICAgdG9jX2Zsb2F0OiB0cnVlDQogICAgdGhlbWU6IGx1bWVuDQogICAgaGlnaGxpZ2h0OiB0YW5nbw0KICAgIGNvZGVfZm9sZGluZzogc2hvdw0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUgDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSkNCg0KIyBDYXJyZWdhciBwYWNvdGVzDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHRpZHlyKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KbGlicmFyeShxdWFudG1vZCkNCmxpYnJhcnkoc2NhbGVzKQ0KbGlicmFyeShyYmNiKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeSh6b28pDQpsaWJyYXJ5KEdldEJDQkRhdGEpDQoNCg0KYGBgDQoNCiMgUmVzZXJ2YXMgSW50ZXJuYWNpb25haXM6IENvbW8gZWxhcyBwb2RlbSBhanVkYXIgZW0gbW9tZW50b3MgZGUgY3Jpc2U/DQoNCkFzIHJlc2VydmFzIGludGVybmFjaW9uYWlzIHPDo28gYXRpdm9zIGV4dGVybm9zIGRvIHBhw61zIChtb2VkYXMgY29udmVyc8OtdmVpcywgdMOtdHVsb3MsIGRlcMOzc2l0b3MgZSBvdXJvKS4gU3VhIGZ1bsOnw6NvIHByaW1vcmRpYWwgw6kgYXR1YXIgY29tbyB1bSBzZWd1cm8gZGUgbGlxdWlkZXosIGdhcmFudGluZG8gYSBjYXBhY2lkYWRlIGRvIHBhw61zIGRlIGhvbnJhciBwYWdhbWVudG9zIGV4dGVybm9zIGUgYW1vcnRlY2VyIGNob3F1ZXMgZWNvbsO0bWljb3MsIGNvbW8gY3Jpc2VzIGNhbWJpYWlzIGUgaW50ZXJydXDDp8O1ZXMgYWJydXB0YXMgbm9zIGZsdXhvcyBkZSBjYXBpdGFsLg0KTm8gQnJhc2lsLCBvbmRlIHZpZ29yYSBvIHJlZ2ltZSBkZSBjw6JtYmlvIGZsdXR1YW50ZSwgYSBnZXN0w6NvIGRlc3NhcyByZXNlcnZhcyBjYWJlIGFvIEJhbmNvIENlbnRyYWwgZG8gQnJhc2lsIChCQ0IpLiBFbGFzIGRlc2VtcGVuaGFtIHVtIHBhcGVsIGNydWNpYWwgcGFyYSBtYW50ZXIgbyBmdW5jaW9uYW1lbnRvIGRvIG1lcmNhZG8sIHBvaXMgcGVybWl0ZW0gc3Vhdml6YXIgbW92aW1lbnRvcyBicnVzY29zIGRvIFJlYWwgZnJlbnRlIGFvIETDs2xhciwgYXVtZW50YW5kbyBhIHByZXZpc2liaWxpZGFkZSBwYXJhIG9zIGFnZW50ZXMgZWNvbsO0bWljb3MuDQoNCj4gKuKAnEV4aXN0ZW0gcG91Y2FzIGNlcnRlemFzIG5hIGVjb25vbWlhLCBtYXMgc2VtcHJlIGhhdmVyw6Egb3V0cmEgY3Jpc2UgZmluYW5jZWlyYS7igJ0qDQogLSBMaW5kYSBZdWVoLCAiVGhlIEdyZWF0IENyYXNoZXMiLCAyMDIzLg0KDQpDcmlzZXMgc8OjbywgcG9yIGRlZmluacOnw6NvLCBpbmVzcGVyYWRhcywgbyBxdWUgcmVmb3LDp2EgbyBwYXBlbCBkYXMgcmVzZXJ2YXMgY29tbyB1bSBzZWd1cm8gZGUgbGlxdWlkZXogZSB1bSBpbnN0cnVtZW50byBkZSBlc3RhYmlsaXphw6fDo28uIEVsYXMgc2VydmVtIGNvbW8gY29sY2jDo28gcGFyYSBwcm92ZXIgZMOzbGFyZXMgYW8gbWVyY2FkbywgcmVkdXppciBhIHZvbGF0aWxpZGFkZSBjYW1iaWFsLCBhbmNvcmFyIGV4cGVjdGF0aXZhcyBlIG1hbnRlciBvcyBwYWdhbWVudG9zIGV4dGVybm9zLiBPIEJhbmNvIENlbnRyYWwgcG9kZSB2ZW5kZXIgZMOzbGFyZXMgbmEgaG9yYSwgZW1wcmVzdGFyIGTDs2xhcmVzIGFvcyBiYW5jb3MsIGUgdXNhciBzd2FwIGNhbWJpYWwgcGFyYSBnZXJlbmNpYXIgcmlzY29zIGZ1dHVyb3MuIEVzc2FzIGZlcnJhbWVudGFzIGNvYnJlbSBvcyBjaG9xdWVzIHF1ZSBhdGluZ2VtIG8gYmFsYW7Dp28gZGUgcGFnYW1lbnRvcyBkbyBwYcOtcy4NCkVzdGUgcmVsYXTDs3JpbyB2aXNhIGFuYWxpc2FyIGNvbW8gYXMgcmVzZXJ2YXMgZG8gQnJhc2lsIGZ1bmNpb25hbSBwYXJhIG1pdGlnYXIgb3MgZWZlaXRvcyBkZSBjcmlzZXMgdXRpbGl6YW5kbyBjb21vIGV4ZW1wbG8gMjAwOCBlIDIwMjAsIGRlc3RhY2FuZG8gb3MgZGlmZXJlbnRlcyBpbnN0cnVtZW50b3MgZSBkZWNpc8O1ZXMgZG8gQmFuY28gQ2VudHJhbCBlbSBjYWRhIGVwaXPDs2Rpby4NCg0KDQojIyAqKkNyaXNlIGRlIDIwMDgqKg0KQSBDcmlzZSBGaW5hbmNlaXJhIEdsb2JhbCBkZSAyMDA4LCBkZXNlbmNhZGVhZGEgcGVsYSBxdWVicmEgZG8gYmFuY28gYW1lcmljYW5vIExlaG1hbiBCcm90aGVycyBlbSBzZXRlbWJybywgZ2VyYW5kbyB1bSBjaG9xdWUgZGUgY29uZmlhbsOnYSBubyBzaXN0ZW1hIGZpbmFuY2Vpcm8gZ2xvYmFsLiBFc3NhIGRlc2NvbmZpYW7Dp2EgcGFyYWxpc291IG9zIG1lcmNhZG9zIGludGVyYmFuY8OhcmlvcywgcmVzdWx0YW5kbyBubyBjb25nZWxhbWVudG8gZG8gY3LDqWRpdG8gZW0gZXNjYWxhIG11bmRpYWwgZSBuYSBpbnRlcnJ1cMOnw6NvIGFicnVwdGEgZGFzIGxpbmhhcyBleHRlcm5hcyBkZSBmaW5hbmNpYW1lbnRvLiBQYXJhIG8gQnJhc2lsLCBlc3NlIHDDom5pY28gc2UgdHJhZHV6aXUgZW0gdW1hIGludGVuc2EgY29ycmlkYSBwb3IgZMOzbGFyZXMgZSB1bWEgZm9ydGUgZGVwcmVjaWHDp8OjbyBjYW1iaWFsIGRvIHJlYWwuDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeSh0aWR5cikNCg0KbGlicmFyeShyYmNiKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KGRwbHlyKQ0KDQpsaWJyYXJ5KHJiY2IpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KHNjYWxlcykNCg0KIyAtLS0gRMOzbGFyIFZhciAtLS0NCmNvZGlnb3NfYmNiIDwtIGMoZG9sYXJWQVIgPSAxMDgxMykNCg0KIyAtLS0gQmFpeGFyIGRhZG9zIC0tLQ0KZGFkb3NfZG9sYXIgPC0gZ2V0X3NlcmllcygNCiAgY29kZSA9IGNvZGlnb3NfYmNiLA0KICBzdGFydF9kYXRlID0gIjIwMDctMDEtMDEiLA0KICBlbmRfZGF0ZSAgID0gIjIwMDktMTItMzEiLA0KICBhcyA9ICJ0aWJibGUiDQopDQoNCiMgLS0tIElkZW50aWZpY2FyIG3DoXhpbW8gZSBtw61uaW1vIC0tLQ0KcGljb3MgPC0gYmluZF9yb3dzKA0KICBzbGljZV9tYXgoZGFkb3NfZG9sYXIsIG9yZGVyX2J5ID0gZG9sYXJWQVIsIG4gPSAxKSwNCiAgc2xpY2VfbWluKGRhZG9zX2RvbGFyLCBvcmRlcl9ieSA9IGRvbGFyVkFSLCBuID0gMSkNCikgJT4lIGRpc3RpbmN0KCkNCg0KIyAtLS0gR3LDoWZpY28gcmVmaW5hZG8gLS0tDQpwIDwtIGdncGxvdChkYWRvc19kb2xhciwgYWVzKHggPSBkYXRlLCB5ID0gZG9sYXJWQVIpKSArDQogIGdlb21fbGluZShjb2xvciA9ICIjMDIwMjNDIiwgbGluZXdpZHRoID0gMSkgKw0KICBnZW9tX3BvaW50KA0KICAgIGRhdGEgPSBwaWNvcywNCiAgICBhZXMoeCA9IGRhdGUsIHkgPSBkb2xhclZBUiksDQogICAgY29sb3IgPSAiI0ZFQjAxNSIsICAgICAgICAgIyBkb3VyYWRvIGluc3RpdHVjaW9uYWwNCiAgICBmaWxsID0gIiNGRkY3RDEiLCAgICAgICAgICAjIGRvdXJhZG8gY2xhcm8NCiAgICBzaGFwZSA9IDIxLA0KICAgIHNpemUgPSAyLjgsICAgICAgICAgICAgICAgICMgbWVub3IgZSBtYWlzIHN1dGlsDQogICAgc3Ryb2tlID0gMQ0KICApICsNCiAgbGFicygNCiAgICB0aXRsZSA9ICJWYXJpYcOnw6NvIGRvIGTDs2xhciBlbnRyZSAyMDA3IGUgMjAwOSIsDQogICAgc3VidGl0bGUgPSAiU8OpcmllIG9yaWdpbmFsIOKAkyBTR1MgMTA4MTMgKGNvbXByYSwgbWVyY2FkbyBsaXZyZSkiLA0KICAgIHggPSAiIiwNCiAgICB5ID0gIlZhbG9yIGRlIGNvbXByYSBkbyBkw7NsYXIgKFIkKSINCiAgKSArDQogIHRoZW1lX21pbmltYWwoYmFzZV9zaXplID0gMTIpICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiLCBzaXplID0gMTMsIGhqdXN0ID0gMC41KSwNCiAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41KSwNCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpLA0KICAgIHBsb3QubWFyZ2luID0gbWFyZ2luKDEwLCAyMCwgMjAsIDIwKQ0KICApDQoNCiMgLS0tIENvbnZlcnRlciBwYXJhIHBsb3RseSBjb20gdG9vbHRpcCBiw6FzaWNvIGUgZm9udGUgLS0tDQpmaWcgPC0gZ2dwbG90bHkocCwgdG9vbHRpcCA9IGMoIngiLCAieSIpKSB8Pg0KICBsYXlvdXQoDQogICAgYW5ub3RhdGlvbnMgPSBsaXN0KA0KICAgICAgbGlzdCgNCiAgICAgICAgdGV4dCA9ICJGb250ZTogQmFuY28gQ2VudHJhbCBkbyBCcmFzaWwg4oCTIFNpc3RlbWEgR2VyZW5jaWFkb3IgZGUgU8OpcmllcyBUZW1wb3JhaXMgKFNHUykg4oCTIFPDqXJpZSAxMDgxMyIsDQogICAgICAgIHhyZWYgPSAicGFwZXIiLCB5cmVmID0gInBhcGVyIiwNCiAgICAgICAgeCA9IDAuNSwgeSA9IC0wLjI1LA0KICAgICAgICBzaG93YXJyb3cgPSBGQUxTRSwNCiAgICAgICAgZm9udCA9IGxpc3Qoc2l6ZSA9IDEwLCBjb2xvciA9ICJncmF5NDAiKQ0KICAgICAgKQ0KICAgICksDQogICAgbWFyZ2luID0gbGlzdChiID0gOTApDQogICkNCg0KZmlnDQoNCmBgYA0KDQpPIEdyw6FmaWNvIDEgW1Zhcmlhw6fDo28gZG8gRMOzbGFyIGVudHJlIDIwMDcgZSAyMDA5XSAgbW9zdHJhIHF1ZSwgYW50ZXMgZG8gY2hvcXVlIGRlIHNldGVtYnJvIGRlIDIwMDgsIG8gUmVhbCBlc3RhdmEgZW0gdW0gcHJvY2Vzc28gZGUgdmFsb3JpemHDp8OjbyBmcmVudGUgYW8gRMOzbGFyLiBDb20gYSBjcmlzZSwgbyBkw7NsYXIgYXVtZW50YSBkcmFzdGljYW1lbnRlIGRlIHByZcOnbywgcmVzdWx0YW5kbyBlbSB1bWEgZm9ydGUgZGVwcmVjaWHDp8OjbyBjYW1iaWFsIGRvIFJlYWwuDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyAtLS1SZXNlcnZhc1Zhci0tLQ0KDQpsaWJyYXJ5KHJiY2IpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkoc2NhbGVzKQ0KbGlicmFyeShkcGx5cikNCg0KIyAtLS0gU8OpcmllIDM1NDYgKHZhcmlhw6fDo28gbWVuc2FsKSAtLS0NCmRhZG9zX3Jlc2VyIDwtIGdldF9zZXJpZXMoDQogIGNvZGUgPSBjKHJlc2VydmFzVkFSID0gMzU0NiksDQogIHN0YXJ0X2RhdGUgPSAiMjAwNy0wMS0wMSIsDQogIGVuZF9kYXRlICAgPSAiMjAwOS0xMi0zMSIsDQogIGFzID0gInRpYmJsZSINCikgJT4lDQogIG11dGF0ZSgNCiAgICAjIGZvcm1hdGHDp8OjbyBCUiBkb3MgbsO6bWVyb3MgZSBkYXRhIG5ldXRyYSAobW0vYWFhYSkgcC8gbsOjbyBkZXBlbmRlciBkZSBsb2NhbGUNCiAgICB2YXJfZm10ICA9IG51bWJlcihyZXNlcnZhc1ZBUiwgYWNjdXJhY3kgPSAxLCBiaWcubWFyayA9ICIuIiwgZGVjaW1hbC5tYXJrID0gIiwiKSwNCiAgICBkYXRhX2ZtdCA9IGZvcm1hdChkYXRlLCAiJW0vJVkiKSwNCiAgICBob3ZlciAgICA9IHBhc3RlMCgNCiAgICAgICI8Yj5EYXRhOjwvYj4gIiwgZGF0YV9mbXQsICI8YnI+IiwNCiAgICAgICI8Yj5WYXJpYcOnw6NvOjwvYj4gIiwgdmFyX2ZtdCwgIiBtaWxow7VlcyBVUyQiDQogICAgKQ0KICApDQoNCiMgLS0tIEdyw6FmaWNvIChsaW5oYSBhbWFyZWxhLCBlaXhvIFggc8OzIGFubywgdG9vbHRpcCBwcm9maXNzaW9uYWwpIC0tLQ0KcCA8LSBnZ3Bsb3QoZGFkb3NfcmVzZXIsIGFlcyh4ID0gZGF0ZSwgeSA9IHJlc2VydmFzVkFSLCB0ZXh0ID0gaG92ZXIpKSArDQogIGdlb21fbGluZShjb2xvciA9ICIjRkVCMDE1IiwgbGluZXdpZHRoID0gMS4yKSArDQogIGdlb21fcG9pbnQoY29sb3IgPSAiI0ZFQjAxNSIsIHNpemUgPSAxLjMsIGFscGhhID0gMC44NSkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBsaW5ldHlwZSA9ICJkYXNoZWQiLCBjb2xvciA9ICJncmF5NjAiLCBsaW5ld2lkdGggPSAwLjMpICsNCiAgbGFicygNCiAgICB0aXRsZSA9ICJWYXJpYcOnw6NvIGRhcyBSZXNlcnZhcyBJbnRlcm5hY2lvbmFpcyIsDQogICAgeCA9ICIiLA0KICAgIHkgPSAiVVMkIG1pbGjDtWVzIg0KICApICsNCiAgc2NhbGVfeV9jb250aW51b3VzKA0KICAgIGJyZWFrcyA9IHByZXR0eV9icmVha3MoNiksDQogICAgbGFiZWxzID0gbGFiZWxfbnVtYmVyKGFjY3VyYWN5ID0gMSwgYmlnLm1hcmsgPSAiLiIsIGRlY2ltYWwubWFyayA9ICIsIiksDQogICAgZXhwYW5kID0gZXhwYW5zaW9uKG11bHQgPSBjKDAuMDIsIDAuMDgpKQ0KICApICsNCiAgc2NhbGVfeF9kYXRlKA0KICAgIGRhdGVfYnJlYWtzID0gIjEgeWVhciIsDQogICAgZGF0ZV9sYWJlbHMgPSAiJVkiLA0KICAgIGV4cGFuZCA9IGV4cGFuc2lvbihtdWx0ID0gYygwLjAxLCAwLjAyKSkNCiAgKSArDQogIHRoZW1lX21pbmltYWwoYmFzZV9zaXplID0gMTIpICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChmYWNlID0gImJvbGQiLCBzaXplID0gMTMsIGhqdXN0ID0gMC41KSwNCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSksDQogICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICBwYW5lbC5ncmlkLm1ham9yLnggPSBlbGVtZW50X2xpbmUoY29sb3IgPSAiI0Y1RjVGNSIpLA0KICAgIHBhbmVsLmdyaWQubWFqb3IueSA9IGVsZW1lbnRfbGluZShjb2xvciA9ICIjRTdFN0U3IiksDQogICAgcGxvdC5tYXJnaW4gPSBtYXJnaW4oMTAsIDIwLCA0MCwgMjApDQogICkNCg0KZmlnIDwtIGdncGxvdGx5KHAsIHRvb2x0aXAgPSAidGV4dCIpICU+JQ0KICBsYXlvdXQoDQogICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIlVTJCBtaWxow7VlcyIsIHRpY2tmb3JtYXQgPSAiLC4wZiIpLA0KICAgIHhheGlzID0gbGlzdCh0aWNrZm9ybWF0ID0gIiVZIiksDQogICAgYW5ub3RhdGlvbnMgPSBsaXN0KA0KICAgICAgbGlzdCgNCiAgICAgICAgdGV4dCA9ICJGb250ZTogQmFuY28gQ2VudHJhbCBkbyBCcmFzaWwg4oCTIFNHUyAzNTQ2ICh2YXJpYcOnw6NvIG1lbnNhbCkiLA0KICAgICAgICB4cmVmID0gInBhcGVyIiwgeXJlZiA9ICJwYXBlciIsIHggPSAwLjUsIHkgPSAtMC4yMiwNCiAgICAgICAgc2hvd2Fycm93ID0gRkFMU0UsIGZvbnQgPSBsaXN0KHNpemUgPSAxMCwgY29sb3IgPSAiZ3JheTQwIikNCiAgICAgICkNCiAgICApLA0KICAgIG1hcmdpbiA9IGxpc3QoYiA9IDkwKSwNCiAgICBob3ZlcmxhYmVsID0gbGlzdCgNCiAgICAgIGJnY29sb3IgPSAiI0ZGRkZGRiIsDQogICAgICBib3JkZXJjb2xvciA9ICIjRkVCMDE1IiwNCiAgICAgIGZvbnQgPSBsaXN0KHNpemUgPSAxMiwgY29sb3IgPSAiIzMzMzMzMyIpDQogICAgKSwNCiAgICBob3Zlcm1vZGUgPSAiY2xvc2VzdCIgICMgY2FkYSBwb250byBtb3N0cmEgc2V1IHRvb2x0aXAgY29tIGEgZGF0YSBmb3JtYXRhZGENCiAgKQ0KDQpmaWcNCg0KYGBgDQpPIEdyw6FmaWNvIDIgW1Zhcmlhw6fDo28gZGFzIFJlc2VydmFzIGVudHJlIDIwMDcgZSAyMDA5XSBjb250ZXh0dWFsaXphIGEgYcOnw6NvIGRvIEJhbmNvIENlbnRyYWwgKEJDKTogYW8gbG9uZ28gZGUgMjAwNyBlIDIwMDgsIG8gcGHDrXMgY29uc3RydWl1IHVtIHJvYnVzdG8gY29sY2jDo28sIHF1ZSBzb2ZyZXUgdW1hIHF1ZWRhIHBvbnR1YWwgZSB0ZW1wb3LDoXJpYSBubyDDoXBpY2UgZGEgY3Jpc2UuDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyAtLS0gUmVzZXJ2YXMgKyBEw7NsYXIgLS0tDQpzdXBwcmVzc1BhY2thZ2VTdGFydHVwTWVzc2FnZXMoew0KICBsaWJyYXJ5KHJiY2IpOyBsaWJyYXJ5KGRwbHlyKTsgbGlicmFyeShwbG90bHkpDQp9KQ0KDQpzdGFydF9kYXRlIDwtIGFzLkRhdGUoIjIwMDgtMDEtMDEiKQ0KZW5kX2RhdGUgICA8LSBhcy5EYXRlKCIyMDA5LTA2LTMwIikNCg0KY29sX3Jlc2VydmFzIDwtICIjRkVCMDE1Ig0KY29sX2RvbGFyICAgIDwtICIjMDIwMjNDIg0KDQpyZXNlcnZhcyA8LSBnZXRfc2VyaWVzKDM1NDYsIHN0YXJ0X2RhdGUgPSBzdGFydF9kYXRlLCBlbmRfZGF0ZSA9IGVuZF9kYXRlKSB8Pg0KICByZW5hbWUoZGF0ZSA9IGRhdGUsIHJlc2VydmFzID0gYDM1NDZgKQ0KDQpkb2xhciA8LSBnZXRfc2VyaWVzKDEwODEzLCBzdGFydF9kYXRlID0gc3RhcnRfZGF0ZSwgZW5kX2RhdGUgPSBlbmRfZGF0ZSkgfD4NCiAgcmVuYW1lKGRhdGUgPSBkYXRlLCB1c2QgPSBgMTA4MTNgKQ0KDQpncmlkX2NvbCA8LSAicmdiYSgwLDAsMCwwLjA4KSIgICMgY2luemEgc3VhdmUgcGFyYSBhIGdyYWRlDQoNCmZpZyA8LSBwbG90X2x5KCkgfD4NCiAgYWRkX2xpbmVzKA0KICAgIGRhdGEgPSByZXNlcnZhcywNCiAgICB4ID0gfmRhdGUsIHkgPSB+cmVzZXJ2YXMsDQogICAgbmFtZSA9ICJSZXNlcnZhcyAoU0dTIDM1NDYsIFVTJCBtaSkiLA0KICAgIGxpbmUgPSBsaXN0KHdpZHRoID0gMiwgY29sb3IgPSBjb2xfcmVzZXJ2YXMpLA0KICAgIHlheGlzID0gInkiDQogICkgfD4NCiAgYWRkX2xpbmVzKA0KICAgIGRhdGEgPSBkb2xhciwNCiAgICB4ID0gfmRhdGUsIHkgPSB+dXNkLA0KICAgIG5hbWUgPSAiVVNEL0JSTCAoU0dTIDEwODEzKSIsDQogICAgbGluZSA9IGxpc3Qod2lkdGggPSAyLCBjb2xvciA9IGNvbF9kb2xhciksDQogICAgeWF4aXMgPSAieTIiDQogICkgfD4NCiAgbGF5b3V0KA0KICAgIHRpdGxlID0gIlJlc2VydmFzICgzNTQ2KSB2cy4gRMOzbGFyICgxMDgxMykg4oCUIEphbi8yMDA4IGEgSnVuLzIwMDkiLA0KICAgIHhheGlzID0gbGlzdCgNCiAgICAgIHRpdGxlID0gIiIsDQogICAgICBzaG93Z3JpZCA9IFRSVUUsICBncmlkY29sb3IgPSBncmlkX2NvbCwgZ3JpZGRhc2ggPSAic29saWQiLA0KICAgICAgemVyb2xpbmUgPSBGQUxTRSwgc2hvd2xpbmUgPSBUUlVFLCBsaW5lY29sb3IgPSAicmdiYSgwLDAsMCwwLjIpIg0KICAgICksDQogICAgIyBHcmlkIHPDsyBubyBlaXhvIHByaW3DoXJpbyAoZXNxdWVyZGEpDQogICAgeWF4aXMgPSBsaXN0KA0KICAgICAgdGl0bGUgPSAiUmVzZXJ2YXMgKFVTJCBtaWxow7VlcykiLA0KICAgICAgc2hvd2dyaWQgPSBUUlVFLCAgZ3JpZGNvbG9yID0gZ3JpZF9jb2wsIGdyaWRkYXNoID0gInNvbGlkIiwNCiAgICAgIHplcm9saW5lID0gRkFMU0UsIHNob3dsaW5lID0gVFJVRSwgbGluZWNvbG9yID0gInJnYmEoMCwwLDAsMC4yKSINCiAgICApLA0KICAgICMgRWl4byBzZWN1bmTDoXJpbyBzZW0gZ3JpZCBwYXJhIG7Do28gcG9sdWlyDQogICAgeWF4aXMyID0gbGlzdCgNCiAgICAgIHRpdGxlID0gIlVTRC9CUkwiLA0KICAgICAgb3ZlcmxheWluZyA9ICJ5IiwNCiAgICAgIHNpZGUgPSAicmlnaHQiLA0KICAgICAgc2hvd2dyaWQgPSBGQUxTRSwNCiAgICAgIHplcm9saW5lID0gRkFMU0UsDQogICAgICBzaG93bGluZSA9IFRSVUUsIGxpbmVjb2xvciA9ICJyZ2JhKDAsMCwwLDAuMikiDQogICAgKSwNCiAgICBsZWdlbmQgPSBsaXN0KG9yaWVudGF0aW9uID0gImgiLCB4ID0gMCwgeSA9IC0wLjE1KSwNCiAgICBtYXJnaW4gPSBsaXN0KHQgPSA1MCwgciA9IDQwLCBiID0gODAsIGwgPSA2MCksDQogICAgYW5ub3RhdGlvbnMgPSBsaXN0KA0KICAgICAgbGlzdCgNCiAgICAgICAgeCA9IDAsIHkgPSAtMC4yMiwgeHJlZiA9ICJwYXBlciIsIHlyZWYgPSAicGFwZXIiLA0KICAgICAgICB4YW5jaG9yID0gImxlZnQiLCB5YW5jaG9yID0gInRvcCIsIHNob3dhcnJvdyA9IEZBTFNFLA0KICAgICAgICB0ZXh0ID0gIkZvbnRlOiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCDigJMgU0dTIDM1NDYgZSAxMDgxMyIsDQogICAgICAgIGZvbnQgPSBsaXN0KHNpemUgPSAxMCwgY29sb3IgPSAiZ3JheTQwIikNCiAgICAgICkNCiAgICApDQogICkNCg0KZmlnDQoNCg0KYGBgDQoNClBvciBmaW0sIG8gR3LDoWZpY28gMyBbUmVzZXJ2YXMgSW50ZXJuYWNpb25haXMgdnMuIETDs2xhcl0gZm9ybmVjZSBvIGZvY28gY2VudHJhbDogYSBsaW5oYSBkbyBkw7NsYXIgZW0gc2V1IHBvbnRvIG1haXMgYWx0byBjb3JyZXNwb25kZSBhbyBtb21lbnRvIGVtIHF1ZSBhcyByZXNlcnZhcyBlc3RhdmFtIGNhaW5kbywgZXZpZGVuY2lhbmRvIG8gdXNvIGRvIGVzdG9xdWUgY29tbyBhbW9ydGVjZWRvci4gDQoNCkEgaW50ZXJ2ZW7Dp8OjbyBkbyBCYW5jbyBDZW50cmFsIG5hIENyaXNlIGRlIDIwMDggZm9pIHVtYSBkZWZlc2EgZm9jYWRhIGVtIHJlc29sdmVyIGEgZmFsdGEgZGUgZMOzbGFyZXMgbm8gbWVyY2FkbywgdXRpbGl6YW5kby1zZSBkbyBlc3RvcXVlIGRlIHJlc2VydmFzIGludGVybmFjaW9uYWlzIHBhcmEgaW5qZXRhciBsaXF1aWRleiBubyBzaXN0ZW1hLg0KQSBwcmluY2lwYWwgdMOhdGljYSBmb2kgbyB1c28gZGUgdmVuZGFzIGNvbSBjb21wcm9taXNzbyBkZSByZWNvbXByYS4gTyBCQyBvZmVyZWNldSBkw7NsYXJlcyBhb3MgYmFuY29zIGNvbSBhIGdhcmFudGlhIGRlIHF1ZSBvcyBjb21wcmFyaWEgZGUgdm9sdGEgZW0gdW1hIGRhdGEgZnV0dXJhLCB1bWEgbWVkaWRhIHF1ZSBzYW5vdSBhIGVzY2Fzc2V6IGRlIGxpcXVpZGV6LCBhc3NlZ3VyYW5kbyBzaW11bHRhbmVhbWVudGUgcXVlIG8gZXN0b3F1ZSBkZSByZXNlcnZhcyBzZXJpYSBkZXZvbHZpZG8uDQpEZSBmb3JtYSBjb21wbGVtZW50YXIsIGFzIHJlc2VydmFzIGZvcmFtIHVzYWRhcyBjb21vIGxhc3RybyBwYXJhIGFsaXZpYXIgYSBmYWx0YSBkZSBtb2VkYSBlc3RyYW5nZWlyYSBubyBmaW5hbmNpYW1lbnRvIGRlIG9wZXJhw6fDtWVzIGRlIGNvbcOpcmNpbyBleHRlcmlvciwgY3J1Y2lhbCBwYXJhIG8gc2V0b3IgZGUgZXhwb3J0YcOnw6NvLg0KQWzDqW0gZGEgbGlxdWlkZXogZsOtc2ljYSwgbyBCQyB1dGlsaXpvdSBvIFN3YXAgQ2FtYmlhbCwgdW0gY29udHJhdG8gcXVlIG9mZXJlY2UgcHJvdGXDp8OjbyBjYW1iaWFsIChoZWRnZSkgc2VtIG8gZGVzZW1ib2xzbyBpbWVkaWF0byBkZSBkw7NsYXIgZsOtc2ljbywgc2VuZG8gZXNzZW5jaWFsIHBhcmEgYWNhbG1hciBvIHDDom5pY28gbm8gbWVyY2FkbyBmdXR1cm8sIGFuY29yYW5kbyBhcyBleHBlY3RhdGl2YXMgZSBlc3RhYmlsaXphbmRvIG8gY8OibWJpby4NCg0KTyBHcsOhZmljbyAyIGV2aWRlbmNpYSBxdWUsIGEgcGFydGlyIGRlIGFicmlsIGRlIDIwMDksIG8gdm9sdW1lIGRlIHJlc2VydmFzIGludGVybmFjaW9uYWlzIHZvbHRvdSBhIGNyZXNjZXIsIGRlbW9uc3RyYW5kbyBhIHJldmVyc8OjbyBkYXMgbWVkaWRhcyB0ZW1wb3LDoXJpYXMgZGUgZW1wcsOpc3RpbW8gZSBhIHLDoXBpZGEgY2FwYWNpZGFkZSBkZSByZWN1cGVyYcOnw6NvIGRhIGVjb25vbWlhIGJyYXNpbGVpcmEuDQoNCiMjICoqQ3Jpc2UgZGUgMjAyMCoqDQoNCkFzIHJlc2VydmFzIGludGVybmFjaW9uYWlzIGJyYXNpbGVpcmFzLCBxdWUgcG9zaWNpb25hcmFtIG8gQnJhc2lsIGNvbW8gbyBkw6ljaW1vIG1haW9yIGRldGVudG9yIG11bmRpYWwgLCBhdHVhcmFtIGNvbW8gdW0gInNlZ3VybyBjb250cmEgY3Jpc2VzIiBlc3NlbmNpYWwgZHVyYW50ZSBhIHR1cmJ1bMOqbmNpYSBlY29uw7RtaWNhIGRhIENPVklELTE5IGVtIDIwMjAuIE8gbWFuZWpvIGRlc3NhcyByZXNlcnZhcyBwZWxvIEJhbmNvIENlbnRyYWwgKEJDKSBmb2kgY3J1Y2lhbCBwYXJhIG1pdGlnYXIgYSB2b2xhdGlsaWRhZGUgY2FtYmlhbCBlIGdhcmFudGlyIGEgbGlxdWlkZXogZG8gbWVyY2Fkby4gIA0KQSBhdHVhw6fDo28gZG8gQkMgZm9pIGRlc2VuY2FkZWFkYSBwZWxvIGNlbsOhcmlvIGRlIOKAnGZsaWdodCB0byBxdWFsaXR54oCdIGdsb2JhbCwgcXVlIGdlcm91IGZvcnRlIHByZXNzw6NvIGNhbWJpYWwsIHNlbmRvIG1hcsOnbyBkZSAyMDIwIG8gcGVyw61vZG8gZGUgbWFpb3IgY2hvcXVlIGFndWRvLiBQYXJhIGNvbnRlciBhIHByZXNzw6NvIGRlc29yZGVuYWRhIGUgcHJvdmVyIGxpcXVpZGV6LCBvIEJDIGludGVydmVpbyBubyBtZXJjYWRvIMOgIHZpc3RhLCBtb2JpbGl6YW5kbyBVU1wkMjQsMjQgYmlsaMO1ZXMgZW0gZMOzbGFyZXMgZGFzIHJlc2VydmFzIGVudHJlIG1hcsOnbyBlIG5vdmVtYnJvIGRlIDIwMjAuIEFzIG9wZXJhw6fDtWVzIGZvcmFtIHZpdGFpcyBwYXJhIHN1YXZpemFyIGEgdmFsb3JpemHDp8OjbyBleGNlc3NpdmEgZG8gZMOzbGFyLCBwcmV2ZW5pbmRvIGltcGFjdG9zIGluZmxhY2lvbsOhcmlvcyBtYWlzIHNldmVyb3MgZSBmYWNpbGl0YW5kbyBvIGFqdXN0ZSBkZSBsaXF1aWRleiBkbyBtZXJjYWRvLg0KQSBpbnRlcnZlbsOnw6NvIGZvaSBjb21wbGVtZW50YWRhIHBlbG8gdXNvIGRlIGluc3RydW1lbnRvcyBkZXJpdmFkb3MsIGNvbW8gbyBzd2FwIGNhbWJpYWwsIHF1ZSBvZmVyZWNlbSBjb2JlcnR1cmEgY2FtYmlhbCBhbyBtZXJjYWRvIHNlbSBkcmVuYXIgaW1lZGlhdGFtZW50ZSBvIGVzdG9xdWUgZGUgcmVzZXJ2YXMuIEVtIGxlaWzDtWVzIGNvbWJpbmFkb3MsIG8gQkMgY2hlZ291IGEgdmVuZGVyIDEgYmlsaMOjbyBkZSBkw7NsYXJlcyDDoCB2aXN0YSBlIDEgYmlsaMOjbyBkZSBkw7NsYXJlcyBlbSBjb250cmF0b3MgZGUgc3dhcC4gQWRpY2lvbmFsbWVudGUsIGEgYXRpdmHDp8OjbyBkYSBsaW5oYSB0ZW1wb3LDoXJpYSBkZSBzd2FwIGNvbSBvIEZlZGVyYWwgUmVzZXJ2ZSAoRmVkKSBkb3MgRVVBLCBjb20gbGltaXRlIGRlIFVTJCA2MCBiaWxow7Vlcywgc2Vydml1IGNvbW8gdW0gYmFja3N0b3AgZGUgY3JlZGliaWxpZGFkZSwgZ2FyYW50aW5kbyBvIGFjZXNzbyBhIGxpcXVpZGV6IGVtIGTDs2xhciBwYXJhIG8gU2lzdGVtYSBGaW5hbmNlaXJvIE5hY2lvbmFsIChTRk4pLg0KDQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmxpYnJhcnkocmJjYikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkobHVicmlkYXRlKQ0KbGlicmFyeShzY2FsZXMpDQoNCmxpYnJhcnkocmJjYikNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShzY2FsZXMpDQoNCiMgLS0tIFPDqXJpZTogUmVzZXJ2YXMgSW50ZXJuYWNpb25haXMgKDM1NDYpIC0tLQ0KZGFkb3NfcmVzZXIgPC0gZ2V0X3NlcmllcygNCiAgY29kZSA9IDM1NDYsDQogIHN0YXJ0X2RhdGUgPSAiMjAyMC0wMS0wMSIsDQogIGVuZF9kYXRlICAgPSAiMjAyMC0xMi0zMSIsDQogIGFzID0gInRpYmJsZSINCikgJT4lDQogIHJlbmFtZShyZXNlcnZhcyA9IGAzNTQ2YCkgJT4lDQogIG11dGF0ZShtZXMgPSBtb250aChkYXRlLCBsYWJlbCA9IFRSVUUsIGFiYnIgPSBUUlVFKSkNCg0KIyAtLS0gR3LDoWZpY28gZGUgbGluaGEgZXN0aWxpemFkbyAtLS0NCmZpZyA8LSBwbG90X2x5KA0KICBkYXRhID0gZGFkb3NfcmVzZXIsDQogIHggPSB+ZGF0ZSwNCiAgeSA9IH5yZXNlcnZhcywNCiAgdHlwZSA9ICJzY2F0dGVyIiwNCiAgbW9kZSA9ICJsaW5lcyttYXJrZXJzIiwNCiAgbGluZSA9IGxpc3QoY29sb3IgPSAiIzAyMDIzQyIsIHdpZHRoID0gMiksDQogIG1hcmtlciA9IGxpc3QoY29sb3IgPSAiI0ZFQjAxNSIsIHNpemUgPSA2KSwNCiAgaG92ZXJ0ZW1wbGF0ZSA9IHBhc3RlMCgNCiAgICAiPGI+JXt4fCVkICViICVZfTwvYj48YnI+IiwNCiAgICAiUmVzZXJ2YXM6IDxiPlVTJCAle3k6LC4wZn0gbWk8L2I+PGV4dHJhPjwvZXh0cmE+Ig0KICApDQopICU+JQ0KICBsYXlvdXQoDQogICAgdGl0bGUgPSBsaXN0KA0KICAgICAgdGV4dCA9ICJSZXNlcnZhcyBJbnRlcm5hY2lvbmFpcyBkbyBCcmFzaWwg4oCUIDIwMjAiLA0KICAgICAgeCA9IDAuNSwNCiAgICAgIGZvbnQgPSBsaXN0KHNpemUgPSAxNiwgZmFtaWx5ID0gIkFyaWFsIiwgY29sb3IgPSAiIzAwMDAwMCIpDQogICAgKSwNCiAgICB4YXhpcyA9IGxpc3QoDQogICAgICB0aXRsZSA9ICIiLA0KICAgICAgdGlja2Zvcm1hdCA9ICIlYiIsDQogICAgICBzaG93Z3JpZCA9IEZBTFNFLA0KICAgICAgdGlja2FuZ2xlID0gMA0KICAgICksDQogICAgeWF4aXMgPSBsaXN0KA0KICAgICAgdGl0bGUgPSAiVVMkIG1pbGjDtWVzIiwNCiAgICAgIHRpY2tmb3JtYXQgPSAiLC4wZiIsDQogICAgICBncmlkY29sb3IgPSAicmdiYSgwLDAsMCwwLjEpIg0KICAgICksDQogICAgaG92ZXJsYWJlbCA9IGxpc3QoDQogICAgICBiZ2NvbG9yID0gInJnYmEoMjU1LDI1NSwyNTUsMC45NCkiLA0KICAgICAgYm9yZGVyY29sb3IgPSAiIzAyMDIzQyIsDQogICAgICBmb250ID0gbGlzdChjb2xvciA9ICIjMDIwMjNDIiwgc2l6ZSA9IDEyKQ0KICAgICksDQogICAgbWFyZ2luID0gbGlzdCh0ID0gNzAsIHIgPSA0MCwgYiA9IDgwLCBsID0gNzApLA0KICAgIGFubm90YXRpb25zID0gbGlzdCgNCiAgICAgIGxpc3QoDQogICAgICAgIHRleHQgPSAiRm9udGU6IEJhbmNvIENlbnRyYWwgZG8gQnJhc2lsIOKAkyBTR1MgMzU0NiIsDQogICAgICAgIHhyZWYgPSAicGFwZXIiLCB5cmVmID0gInBhcGVyIiwNCiAgICAgICAgeCA9IDAuNSwgeSA9IC0wLjI1LA0KICAgICAgICBzaG93YXJyb3cgPSBGQUxTRSwNCiAgICAgICAgZm9udCA9IGxpc3Qoc2l6ZSA9IDEwLCBjb2xvciA9ICJncmF5NDAiKQ0KICAgICAgKQ0KICAgICkNCiAgKQ0KDQpmaWcNCg0KYGBgDQpBcGVzYXIgZGEgdmVuZGEgY29uc2lkZXLDoXZlbCwgbyBCcmFzaWwgZW5jZXJyb3UgMjAyMCBjb20gbyBlc3RvcXVlIGRlIHJlc2VydmFzIHByYXRpY2FtZW50ZSBpbnRhY3RvLCBwcsOzeGltbyBhbyBwYXRhbWFyIGRlIFVTJDM1Niw5IGJpbGjDtWVzLiBFc3NlIHBhcmFkb3hvIMOpIGV4cGxpY2FkbyBwZWxhIGNvbXBvc2nDp8OjbyBkYXMgcmVzZXJ2YXMsIHF1ZSBwcmlvcml6YSBzZWd1cmFuw6dhIGUgbGlxdWlkZXouIEEgY3Jpc2UgZ2xvYmFsLCBhbyBpbXB1bHNpb25hciBvIGZsaWdodCB0byBxdWFsaXR5IGUgYSBxdWVkYSBkYXMgdGF4YXMgZGUganVyb3MgZ2xvYmFpcywgcmVzdWx0b3UgZW0gdW0gZ2FuaG8gZGUgY2FwaXRhbCBxdWUgY29tcGVuc291IGludGVncmFsbWVudGUgYXMgdmVuZGFzIG9wZXJhY2lvbmFpcy4gIA0KQSBtYW51dGVuw6fDo28gZGVzc2UgZXN0b3F1ZSByb2J1c3RvIMOpIGFjZWl0YSwgYXBlc2FyIGRvIGN1c3RvIGRlIG9wb3J0dW5pZGFkZSBmaW5hbmNlaXJvLiBPIGN1c3RvIGRlIG9wb3J0dW5pZGFkZSDDqSBtZWRpZG8gcGVsYSBkaWZlcmVuw6dhIGVudHJlIG8gcmV0b3JubyBxdWUgbyBjYXBpdGFsIGdlcmFyaWEgZG9tZXN0aWNhbWVudGUgZSBvIGJhaXhvIHJldG9ybm8gZG9zIGF0aXZvcyBkZSByZXNlcnZhLiBDb250dWRvLCBvIGN1c3RvIMOpIGp1c3RpZmljYWRvIHBlbG8gYmVuZWbDrWNpbyBzaXN0w6ptaWNvIGRlIHJlZHV6aXIgbyBSaXNjbyBQYcOtcyAobGltaXRhbmRvIG8gc3ByZWFkIGRhIGTDrXZpZGEgZXh0ZXJuYSkuIE8gY2hvcXVlIGRlIDIwMjAgdmFsaWRvdSBvIGN1c3RvIGRlc3NlICJzZWd1cm8iLiBFbSBsaW5oYSBjb20gYSB0ZW5kw6puY2lhIGdsb2JhbCwgbyBCcmFzaWwsIGFzc2ltIGNvbW8gYSBtYWlvcmlhIGRhcyBFY29ub21pYXMgZGUgTWVyY2Fkb3MgRW1lcmdlbnRlcyAoRU1FcyksIHV0aWxpem91IHN1YXMgcmVzZXJ2YXMgY29tIGVxdWlsw61icmlvLCBwZXJtaXRpbmRvIHF1ZSBhIGRlc3ZhbG9yaXphw6fDo28gY2FtYmlhbCBmb3NzZSBhIHByaW5jaXBhbCB2YXJpw6F2ZWwgZGUgYWp1c3RlIHBhcmEgYWJzb3J2ZXIgbyBjaG9xdWUsIHJlYWZpcm1hbmRvIG8gQnJhc2lsIGNvbW8gdW0gY3JlZG9yIGludGVybmFjaW9uYWwgKHJlc2VydmFzIGzDrXF1aWRhcyBzdXBlcmlvcmVzIMOgIGTDrXZpZGEgZXh0ZXJuYSBicnV0YSkuDQoNCiMjICoqVGVzb3VybyBOYWNpb25hbCBlIFRlc291cm8gQW1lcmljYW5vKioNCg0KQSBnZXN0w6NvIGRhIETDrXZpZGEgUMO6YmxpY2EgRmVkZXJhbCAoRFBGKSwgcXVlIHRvdGFsaXphIDcsOTM5IHRyaWxow7VlcyBkZSByZWFpcywgb3BlcmEgc29iIGZvcnRlIGRlcGVuZMOqbmNpYSBkYSBwb2zDrXRpY2EgbW9uZXTDoXJpYSBleHRlcm5hLiBFc3NhIHZ1bG5lcmFiaWxpZGFkZSBuYXNjZSBkYSBwcsOzcHJpYSBjb21wb3Npw6fDo28gZGFzIFJlc2VydmFzIEludGVybmFjaW9uYWlzIChSSSksIGN1am8gZXN0b3F1ZSwgZW0gdG9ybm8gZGUgVVMkMzQ1LDcgYmlsaMO1ZXMsIMOpIG1ham9yaXRhcmlhbWVudGUgYXBsaWNhZG8gZW0gdMOtdHVsb3MgZGUgYmFpeG8gcmlzY28gZG8gVGVzb3VybyBkb3MgRXN0YWRvcyBVbmlkb3MuIFF1YW5kbyBvIEZlZGVyYWwgUmVzZXJ2ZSAoRmVkKSBlbGV2YSBzdWFzIHRheGFzIGRlIGp1cm9zLCBvIGNlbsOhcmlvIGdsb2JhbCBzZSB0cmFuc2Zvcm1hLCBvY29ycmVuZG8gdW0gYXVtZW50byBkYSBhdHJhdGl2aWRhZGUgZG9zIGF0aXZvcyBhbWVyaWNhbm9zIGUgcmV2ZXJzw6NvIGRvcyBmbHV4b3MgZGUgY2FwaXRhbCwgcHJlc3Npb25hbmRvIG8gcmVhbCBlIGVsZXZhbmRvIG8gY3VzdG8gZGUgZmluYW5jaWFtZW50byBleHRlcm5vIHBhcmEgbyBCcmFzaWwuDQpJbnRlcm5hbWVudGUsIG8gQmFuY28gQ2VudHJhbCDDqSBmb3LDp2FkbyBhIG1hbnRlciBhIHRheGEgU2VsaWMgZW0gcGF0YW1hcmVzIGVsZXZhZG9zIHBhcmEgY29udGVyIGEgZGVzdmFsb3JpemHDp8OjbyBjYW1iaWFsIGUgbyBhdmFuw6dvIGRhIGluZmxhw6fDo28uIENvbnR1ZG8sIGVzc2EgdGF4YSBhbHRhIHRhbWLDqW0gZW5jYXJlY2UgYSByZW11bmVyYcOnw6NvIGRhIGTDrXZpZGEgaW50ZXJuYSB1c2FkYSBwYXJhIG9wZXJhw6fDtWVzIGRlIGVzdGVyaWxpemHDp8OjbyBjYW1iaWFsLCBhbXBsaWFuZG8gbyBjdXN0byBkZSBjYXJyZWdhbWVudG8gKGNhcnJ5IGNvc3QpIGRhcyByZXNlcnZhcyBpbnRlcm5hY2lvbmFpcy4NCk5lc3NlIGNvbnRleHRvLCBhcyByZXNlcnZhcyBhdHVhbSBjb21vIG8gcHJpbmNpcGFsIOKAnHNlZ3VybyBzb2JlcmFub+KAnSBkbyBwYcOtcy4gRWxhcyBzZXJ2ZW0gcGFyYSBhbW9ydGVjZXIgY2hvcXVlcyBkZSBsaXF1aWRleiBlIGdhcmFudGlyIGEgY3JlZGliaWxpZGFkZSBqdW50byDDoHMgYWfDqm5jaWFzIGRlIGNsYXNzaWZpY2HDp8OjbyBkZSByaXNjby4gSGlzdG9yaWNhbWVudGUsIG8gcGFwZWwgZXN0YWJpbGl6YWRvciBkYXMgcmVzZXJ2YXMgZmljb3UgZXZpZGVudGUgZW0gcGVyw61vZG9zIGRlIGNyaXNlLiBFbSAyMDA4LCBkdXJhbnRlIG8gY29sYXBzbyBmaW5hbmNlaXJvIGdsb2JhbCwgcGFydGUgZGVsYXMgZm9pIHV0aWxpemFkYSBwYXJhIGdhcmFudGlyIGxpcXVpZGV6IGFvIHNpc3RlbWEgZmluYW5jZWlybyBlIGV2aXRhciBkZXN2YWxvcml6YcOnw7VlcyBhYnJ1cHRhcyBkbyByZWFsLiBKw6EgZW0gMjAyMCwgZGlhbnRlIGRhIHBhbmRlbWlhIGRlIENvdmlkLTE5LCBvIEJhbmNvIENlbnRyYWwgdm9sdG91IGEgcmVjb3JyZXIgw6BzIHJlc2VydmFzIHBhcmEgY29udGVyIGEgdm9sYXRpbGlkYWRlIGNhbWJpYWwgZSBhc3NlZ3VyYXIgYSBjb25maWFuw6dhIGRvcyBpbnZlc3RpZG9yZXMgZW0gbWVpbyDDoCBmdWdhIGdsb2JhbCBkZSBjYXBpdGFpcy4NCkFwZXNhciBkbyBlbGV2YWRvIGN1c3RvIGZpc2NhbCBkZSBtYW50ZXIgZXNzZSBjb2xjaMOjbyBkZSBzZWd1cmFuw6dhIGVzcGVjaWFsbWVudGUgbnVtIGNlbsOhcmlvIGRlIGp1cm9zIGRvbcOpc3RpY29zIGFsdG9zLCBhIGF1c8OqbmNpYSBkZSByZXNlcnZhcyBzaWduaWZpY2F0aXZhcyBwb2RlcmlhIGV4cG9yIG8gcGHDrXMgYSBjcmlzZXMgY2FtYmlhaXMgbWFpcyBzZXZlcmFzIGUgcGVyZGEgZGUgY3JlZGliaWxpZGFkZSBpbnRlcm5hY2lvbmFsLiBPIGRlc2FmaW8sIHBvcnRhbnRvLCDDqSBlcXVpbGlicmFyIGEgc3VzdGVudGFiaWxpZGFkZSBkYSBkw612aWRhIGNvbSBhIHByb3Rlw6fDo28gZGEgZXN0YWJpbGlkYWRlIG1hY3JvZWNvbsO0bWljYSBlIGZpbmFuY2VpcmEuDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyAtLS0gVGVzb3Vyb3MgLS0tDQpsaWJyYXJ5KEdldEJDQkRhdGEpDQpsaWJyYXJ5KHF1YW50bW9kKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkocGxvdGx5KQ0KDQojIC0tLSBTw6lyaWVzIC0tLQ0KZGl2aWRhIDwtIGdiY2JkX2dldF9zZXJpZXMoNDUxMywgZmlyc3QuZGF0ZSA9ICIyMDA4LTAxLTAxIiwgbGFzdC5kYXRlID0gU3lzLkRhdGUoKSkgfD4NCiAgcmVuYW1lKGRhdGUgPSByZWYuZGF0ZSwgZGl2aWRhID0gdmFsdWUpDQoNCmludmlzaWJsZShnZXRTeW1ib2xzKCJER1MxMCIsIHNyYyA9ICJGUkVEIiwgZnJvbSA9ICIyMDA4LTAxLTAxIiwgdG8gPSBTeXMuRGF0ZSgpLCBhdXRvLmFzc2lnbiA9IFRSVUUpKQ0KanVyb3NfZXVhIDwtIGRhdGEuZnJhbWUoZGF0ZSA9IGluZGV4KERHUzEwKSwganVyb3NfMTBhbm9zID0gYXMubnVtZXJpYyhER1MxMCRER1MxMCkpDQoNCiMgLS0tIEp1bnRhIC0tLQ0KZGFkb3MgPC0gZnVsbF9qb2luKGRpdmlkYSwganVyb3NfZXVhLCBieSA9ICJkYXRlIikgfD4NCiAgYXJyYW5nZShkYXRlKSB8Pg0KICB0aWR5cjo6ZHJvcF9uYSgpDQoNCiMgLS0tIENvcmVzIHBhZHJvbml6YWRhcyAtLS0NCmNvbF9kaXZpZGEgPC0gIiMwMjAyM0MiICAjIGF6dWwgZXNjdXJvDQpjb2xfanVyb3MgIDwtICIjRkVCMDE1IiAgIyBhbWFyZWxvIG91cm8NCg0KIyAtLS0gR3LDoWZpY28gY29tIGRvaXMgZWl4b3MsIGxpbmhhcyBzw7NsaWRhcyAtLS0NCmZpZyA8LSBwbG90X2x5KCkNCg0KZmlnIDwtIGZpZyB8Pg0KICBhZGRfbGluZXMoDQogICAgZGF0YSA9IGRhZG9zLA0KICAgIHggPSB+ZGF0ZSwgeSA9IH5kaXZpZGEsDQogICAgbmFtZSA9ICJEw612aWRhIEzDrXF1aWRhICglIGRvIFBJQikiLA0KICAgIGxpbmUgPSBsaXN0KGNvbG9yID0gY29sX2RpdmlkYSwgd2lkdGggPSAxLjIpLA0KICAgIHlheGlzID0gInkiDQogICkgfD4NCiAgYWRkX2xpbmVzKA0KICAgIGRhdGEgPSBkYWRvcywNCiAgICB4ID0gfmRhdGUsIHkgPSB+anVyb3NfMTBhbm9zLA0KICAgIG5hbWUgPSAiSnVyb3MgRVVBICgxMCBhbm9zLCAlKSIsDQogICAgbGluZSA9IGxpc3QoY29sb3IgPSBjb2xfanVyb3MsIHdpZHRoID0gMS44KSwNCiAgICB5YXhpcyA9ICJ5MiINCiAgKSB8Pg0KICBsYXlvdXQoDQogICAgdGl0bGUgPSBsaXN0KA0KICAgICAgdGV4dCA9ICJEw612aWRhIEzDrXF1aWRhIGRvIFNldG9yIFDDumJsaWNvIGUgSnVyb3MgZG9zIEVVQSAoMjAwOCAtIGhvamUpIiwNCiAgICAgIHggPSAwLjUsIHhhbmNob3IgPSAiY2VudGVyIg0KICAgICksDQogICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIiIpLA0KICAgIHlheGlzID0gbGlzdCgNCiAgICAgIHRpdGxlID0gIkTDrXZpZGEgTMOtcXVpZGEgKCUgZG8gUElCKSIsDQogICAgICB6ZXJvbGluZSA9IEZBTFNFDQogICAgKSwNCiAgICB5YXhpczIgPSBsaXN0KA0KICAgICAgdGl0bGUgPSAiSnVyb3MgRVVBICgxMCBhbm9zLCAlKSIsDQogICAgICBvdmVybGF5aW5nID0gInkiLA0KICAgICAgc2lkZSA9ICJyaWdodCIsDQogICAgICBzaG93Z3JpZCA9IEZBTFNFDQogICAgKSwNCiAgICBsZWdlbmQgPSBsaXN0KA0KICAgICAgb3JpZW50YXRpb24gPSAiaCIsDQogICAgICB4ID0gMC41LCB5ID0gLTAuMTIsDQogICAgICB4YW5jaG9yID0gImNlbnRlciIsDQogICAgICBmb250ID0gbGlzdChzaXplID0gMTEpDQogICAgKSwNCiAgICBtYXJnaW4gPSBsaXN0KGwgPSA3MCwgciA9IDcwLCB0ID0gNjAsIGIgPSAxNDApLA0KICAgIGFubm90YXRpb25zID0gbGlzdCgNCiAgICAgIGxpc3QoDQogICAgICAgIHRleHQgPSAiRm9udGVzOiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCAoQkNCIOKAkyBTw6lyaWUgNDUxMykgwrcgRmVkZXJhbCBSZXNlcnZlIChGUkVEOiBER1MxMCkiLA0KICAgICAgICB4cmVmID0gInBhcGVyIiwgeXJlZiA9ICJwYXBlciIsDQogICAgICAgIHggPSAwLjUsIHkgPSAtMC4zMywNCiAgICAgICAgc2hvd2Fycm93ID0gRkFMU0UsDQogICAgICAgIHhhbmNob3IgPSAiY2VudGVyIiwNCiAgICAgICAgZm9udCA9IGxpc3Qoc2l6ZSA9IDEwLCBjb2xvciA9ICJncmF5NDAiKQ0KICAgICAgKQ0KICAgICkNCiAgKQ0KDQpmaWcNCg0KYGBgDQoNCk8gZ3LDoWZpY28gNSBbVGVzb3VybyBOYWNpb25hbCBlIFRlc291cm8gQW1lcmljYW5vXSBpbHVzdHJhIGEgaW50ZXJhw6fDo28gZW50cmUgZMOtdmlkYSBww7pibGljYSwgcmVzZXJ2YXMgaW50ZXJuYWNpb25haXMgZSB0YXhhIGRlIGp1cm9zIGRvcyBFc3RhZG9zIFVuaWRvcywgZGVzdGFjYW5kbyBjb21vIGFzIG11ZGFuw6dhcyBuYSBwb2zDrXRpY2EgbW9uZXTDoXJpYSBnbG9iYWwgYWZldGFtIGRpcmV0YW1lbnRlIGEgZGluw6JtaWNhIGZpc2NhbCBlIGNhbWJpYWwgYnJhc2lsZWlyYS4gT2JzZXJ2YS1zZSBxdWUgYSB2YXJpYcOnw6NvIGRhIGTDrXZpZGEgbMOtcXVpZGEgw6kgcHJvcG9yY2lvbmFsIMOgIHZhcmlhw6fDo28gZG9zIGp1cm9zIG5vcyBFVUEuDQoNCiMjICoqQ29tcG9zacOnw6NvIGRhcyBSZXNlcnZhcyoqDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShwbG90bHkpDQoNCmxpYnJhcnkocGxvdGx5KQ0KDQpkYWRvc18yMDI0IDwtIGRhdGEuZnJhbWUoDQogIG1vZWRhID0gYygiVVMkIiwgIkVVUiIsICJKUFkiLCAiR0JQIiwgIkNBRCIsICJBVUQiLCAiQ05ZIiwgIk91cm8iLCAiT3V0cmFzIiksDQogIHBlcmNlbnR1YWwgPSBjKDc4LjQ1LCA1LjIzLCAxLjczLCAzLjY5LCAxLjA1LCAwLjk5LCA1LjMxLCAzLjU1LCAwLjAwKQ0KKQ0KDQpwbG90X2x5KA0KICBkYXRhID0gZGFkb3NfMjAyNCwNCiAgbGFiZWxzID0gfm1vZWRhLA0KICB2YWx1ZXMgPSB+cGVyY2VudHVhbCwNCiAgdHlwZSA9ICJwaWUiLA0KICB0ZXh0aW5mbyA9ICJub25lIiwgICMg4pyFIHJlbW92ZSBvIHRleHRvIGRlbnRybyBkYSBwaXp6YQ0KICBob3ZlcnRlbXBsYXRlID0gIiV7bGFiZWx9OiAle3ZhbHVlOi4yZn0lPGV4dHJhPjwvZXh0cmE+IiwNCiAgc29ydCA9IEZBTFNFLA0KICBtYXJrZXIgPSBsaXN0KA0KICAgIGNvbG9ycyA9IGMoDQogICAgICAiIzAyMDIzQyIsICMgYXp1bCBlc2N1cm8NCiAgICAgICIjRkVCMDE1IiwgIyBhbWFyZWxvDQogICAgICAiIzZBNUFDRCIsICMgbGlsw6FzDQogICAgICAiIzAwQkZDNCIsICMgY2lhbm8NCiAgICAgICIjRTMxQTFDIiwgIyB2ZXJtZWxobw0KICAgICAgIiMzM0EwMkMiLCAjIHZlcmRlDQogICAgICAiI0ZGN0YwMCIsICMgbGFyYW5qYQ0KICAgICAgIiNCMTU5MjgiLCAjIG1hcnJvbQ0KICAgICAgIiM5OTk5OTkiICAjIGNpbnphDQogICAgKQ0KICApDQopICU+JQ0KICBsYXlvdXQoDQogICAgdGl0bGUgPSBsaXN0KA0KICAgICAgdGV4dCA9ICJEaXN0cmlidWnDp8OjbyBwb3IgbW9lZGFzIGRhcyByZXNlcnZhcyBpbnRlcm5hY2lvbmFpcyDigJQgMjAyNCIsDQogICAgICB4ID0gMC41LA0KICAgICAgZm9udCA9IGxpc3Qoc2l6ZSA9IDE2LCBmYW1pbHkgPSAiQXJpYWwiLCBjb2xvciA9ICIjMDAwMDAwIikNCiAgICApLA0KICAgIG1hcmdpbiA9IGxpc3QodCA9IDcwLCByID0gMjAsIGIgPSAyMCwgbCA9IDIwKSwNCiAgICBzaG93bGVnZW5kID0gVFJVRSwNCiAgICBhbm5vdGF0aW9ucyA9IGxpc3QoDQogICAgICB4ID0gMCwgICAgICAgICAgICAgICAgICAgDQogICAgICB5ID0gLTAuMDUsICAgICAgICAgICAgICAgIA0KICAgICAgdGV4dCA9ICJGb250ZTogUmVsYXTDs3JpbyBkZSBHZXN0w6NvIGRhcyByZXNlcnZhcyBJbnRlcm5hY2lvbmFpcywgQmFuY28gQ2VudHJhbCBkbyBCcmFzaWwiLA0KICAgICAgc2hvd2Fycm93ID0gRkFMU0UsDQogICAgICB4cmVmID0gInBhcGVyIiwNCiAgICAgIHlyZWYgPSAicGFwZXIiLA0KICAgICAgYWxpZ24gPSAibGVmdCIsICAgICAgICAgICMgQWxpbmhlIG8gdGV4dG8gw6AgZXNxdWVyZGENCiAgICAgIGZvbnQgPSBsaXN0KHNpemUgPSAxMCwgY29sb3IgPSAiIzU1NTU1NSIpIA0KICAgICkpDQpgYGANCg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQojLS0tQ2xhc3NlcyBkb3MgQXRpdm9zLS0tDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHNjYWxlcykNCg0KIyAtLS0tIFRhYmVsYSAyMDI0IChVUyQgbWlsaMO1ZXMpIC0tLS0NCmRhZG9zX2F0aXZvc18yMDI0IDwtIHRpYmJsZTo6dGliYmxlKA0KICBjbGFzc2UgPSBjKCJTb2JlcmFub3MiLCAiQWfDqm5jaWFzIiwgIlN1cHJhbmFjaW9uYWlzIiwNCiAgICAgICAgICAgICAiRGVww7NzaXRvcyBiYW5jb3MiLCAiRGVww7NzaXRvcyBzdXByYW5hY2lvbmFpcyIsDQogICAgICAgICAgICAgIsONbmRpY2VzIGRlIEHDp8O1ZXMiLCAiQ29ycG9yYXRlcyIsICJPdXJvIiwgIk91dHJvcyIpLA0KICB2YWxvcl9taSA9IGMoMjU3NTY1Ljg3LCAzNzE5LjU4LCA2MDc5Ljc4LCAxMDUyLjUwLCAxNjg5MS43MiwNCiAgICAgICAgICAgICAgIDMwMzkuNjAsIDM5MjIuNzgsIDEwODc2Ljk4LCAzMTgyLjg0KSAgIyBVUyQgbWlsaMO1ZXMNCikgJT4lDQogIG11dGF0ZSgNCiAgICB0b3RhbF9taSAgID0gc3VtKHZhbG9yX21pKSwNCiAgICBwZXJjZW50dWFsID0gMTAwICogdmFsb3JfbWkgLyB0b3RhbF9taSwNCiAgICB2YWxvcl9mbXQgID0gbnVtYmVyKHZhbG9yX21pLCBhY2N1cmFjeSA9IDAuMDEsDQogICAgICAgICAgICAgICAgICAgICAgICBiaWcubWFyayA9ICIuIiwgZGVjaW1hbC5tYXJrID0gIiwiKSwNCiAgICBob3Zlcl90eHQgID0gcGFzdGUwKA0KICAgICAgIjxiPiIsIGNsYXNzZSwgIjwvYj48YnI+IiwNCiAgICAgICJQYXJ0aWNpcGHDp8OjbzogIiwgc3ByaW50ZigiJS4yZiIsIHBlcmNlbnR1YWwpLCAiJTxicj4iLA0KICAgICAgIlZhbG9yOiAiLCB2YWxvcl9mbXQsICIgbWkgVVMkIg0KICAgICkNCiAgKQ0KDQojIC0tLS0gQ29yZXMgKG1hbnTDqW0gc3VhIHBhbGV0YSkgLS0tLQ0KY29yZXMgPC0gYygiI0ZFQjAxNSIsICIjMDIwMjNDIiwgIiM2QTVBQ0QiLCAiIzAwQkZDNCIsICIjRTMxQTFDIiwNCiAgICAgICAgICAgIiMzM0EwMkMiLCAiI0ZGN0YwMCIsICIjQjE1OTI4IiwgIiM5OTk5OTkiKQ0KDQojIC0tLS0gUGl6emEgMjAyNCAoJSBjb20gdG9vbHRpcCB0cmF6ZW5kbyBvIHZhbG9yKSAtLS0tDQpwbG90X2x5KA0KICBkYXRhID0gZGFkb3NfYXRpdm9zXzIwMjQsDQogIGxhYmVscyA9IH5jbGFzc2UsDQogIHZhbHVlcyA9IH5wZXJjZW50dWFsLA0KICB0eXBlICAgPSAicGllIiwNCiAgdGV4dGluZm8gPSAibm9uZSIsDQogIHNvcnQgPSBGQUxTRSwNCiAgaG92ZXJpbmZvID0gInRleHQiLA0KICB0ZXh0ID0gfmhvdmVyX3R4dCwgICAgICAgICAgIyB0ZXh0byBwcsOpLWZvcm1hdGFkbyBwYXJhIG8gdG9vbHRpcA0KICBtYXJrZXIgPSBsaXN0KGNvbG9ycyA9IGNvcmVzKQ0KKSAlPiUNCiAgbGF5b3V0KA0KICAgIHRpdGxlID0gbGlzdCgNCiAgICAgIHRleHQgPSAiRGlzdHJpYnVpw6fDo28gcG9yIGNsYXNzZXMgZGUgYXRpdm8gZGFzIHJlc2VydmFzIGludGVybmFjaW9uYWlzIOKAlCAyMDI0IiwNCiAgICAgIHggPSAwLjUsDQogICAgICBmb250ID0gbGlzdChzaXplID0gMTYsIGZhbWlseSA9ICJBcmlhbCIsIGNvbG9yID0gIiMwMDAwMDAiKQ0KICAgICksDQogICAgbWFyZ2luID0gbGlzdCh0ID0gNzAsIHIgPSAyMCwgYiA9IDMwLCBsID0gMjApLA0KICAgIHVuaWZvcm10ZXh0ID0gbGlzdChtaW5zaXplID0gMTIsIG1vZGUgPSAiaGlkZSIpLA0KICAgIHNob3dsZWdlbmQgPSBUUlVFLA0KICAgIGFubm90YXRpb25zID0gbGlzdCgNCiAgICAgIHggPSAwLCB5ID0gLTAuMDYsDQogICAgICB0ZXh0ID0gIkZvbnRlOiBSZWxhdMOzcmlvIGRlIEdlc3TDo28gZGFzIFJlc2VydmFzIEludGVybmFjaW9uYWlzLCBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCIsDQogICAgICBzaG93YXJyb3cgPSBGQUxTRSwgeHJlZiA9ICJwYXBlciIsIHlyZWYgPSAicGFwZXIiLA0KICAgICAgYWxpZ24gPSAibGVmdCIsIGZvbnQgPSBsaXN0KHNpemUgPSAxMCwgY29sb3IgPSAiIzU1NTU1NSIpDQogICAgKQ0KICApDQpgYGANCkFzIFJlc2VydmFzIEludGVybmFjaW9uYWlzIGRvIEJyYXNpbCBjb25mZXJlbSB1bWEgcm9idXN0YSBnYXJhbnRpYSBkZSBzb2x2w6puY2lhIGUgdW0gYm9tIGluc3RydW1lbnRvIGRlIGVzdGFiaWxpemHDp8Ojby4gQ29uZm9ybWUgZXZpZGVuY2lhZG8gbm8gR3LDoWZpY28gNiwgYSBkZWNpc8OjbyBkZSBtYW50ZXIgYSByZXNlcnZhIG1ham9yaXRhcmlhbWVudGUgZW0gRMOzbGFyIEFtZXJpY2FubyAoVVMkKSBiYXNlaWEtc2UgbmEgYnVzY2EgcGVsYSBsaXF1aWRleiBtw6F4aW1hLCBwb2lzIG8gZMOzbGFyIMOpIGEgbW9lZGEgZG9taW5hbnRlIGRhcyBmaW5hbsOnYXMgZSBkbyBjb23DqXJjaW8gZ2xvYmFpcy4gQ29udHVkbywgYSBlc3RyYXTDqWdpYSBkZSBnZXN0w6NvIGluY2x1aSBhIGRpdmVyc2lmaWNhw6fDo28gZW0gbW9lZGFzIGNvbW8gbyBFdXJvLCBhIExpYnJhIEVzdGVybGluYSBlIHRhbWLDqW0gZW0gT3Vyby4gRXNzYSBkaXZlcnNpZmljYcOnw6NvIG7Do28gYXBlbmFzIHByb3RlZ2UgbyBlc3RvcXVlIGNvbnRyYSBhIGRlc3ZhbG9yaXphw6fDo28gZGUgdW1hIMO6bmljYSBkaXZpc2EsIG1hcyB0YW1iw6ltIGdhcmFudGUgcXVlIG8gQkMgcG9zc2EgYXRlbmRlciBhIGRpZmVyZW50ZXMgZGVtYW5kYXMgZGUgbGlxdWlkZXogZ2xvYmFsLiBFbSBtb21lbnRvcyBkZSBjcmlzZSwgbyBncmFuZGUgZXN0b3F1ZSBlbSBtb2VkYSBmb3J0ZSBmdW5jaW9uYSBjb21vIHVtIGFnZW50ZSB0cmFucXVpbGl6YWRvciwgZ2FyYW50aW5kbyBhb3MgY3JlZG9yZXMgaW50ZXJuYWNpb25haXMgcXVlIG8gQnJhc2lsIHBvZGUgaG9ucmFyIHNldXMgY29tcHJvbWlzc29zLiBBbMOpbSBkaXNzbywgbyBHcsOhZmljbyA3IGRlbW9uc3RyYSBxdWUgYSBtYWlvciBwYXJ0ZSBkb3MgYXRpdm9zIGVzdMOhIGVtIHTDrXR1bG9zIHNvYmVyYW5vcywgdMOtdHVsb3MgZGUgZMOtdmlkYSBlbWl0aWRvcyBwb3IgZ292ZXJub3MgZGUgb3V0cm9zIHBhw61zZXMgKHByaW5jaXBhbG1lbnRlIG8gVGVzb3VybyBBbWVyaWNhbm8pLiBFc3NhIGNsYXNzZSBkZSBhdGl2byByZXByZXNlbnRhIG8gbWVub3IgcmlzY28gZGUgY3LDqWRpdG8gZ2xvYmFsLCB1bWEgdmV6IHF1ZSB1bSBnb3Zlcm5vIHNvYmVyYW5vIHBvZGUgYWdpciBwYXJhIGxpcXVpZGFyIHN1YSBkw612aWRhLCBzZWphIGF1bWVudGFuZG8gaW1wb3N0b3MsIHZlbmRlbmRvIG91dHJvcyBhdGl2b3MsIG91IGF0w6kgZW1pdGluZG8gbW9lZGEgZsOtc2ljYSwgZSDDqSBmdW5kYW1lbnRhbCBwYXJhIHByZXNlcnZhciBvIHZhbG9yIGRvIGNvbGNow6NvIGRlIHJlc2VydmFzLiBBbyBmb2NhciBlbSBzZWd1cmFuw6dhIGUgbGlxdWlkZXosIG8gQkMgYXNzZWd1cmEgcXVlIG8gc2V1IHBvZGVyIHBhcmEgaW50ZXJ2aXIgbmEgZXN0YWJpbGlkYWRlIGNhbWJpYWwgZSBhbW9ydGVjZXIgY2hvcXVlcyBzZWphIG1hbnRpZG8uDQoNCiMjICoqQ29uY2x1c8OjbyoqDQpBIGFuw6FsaXNlIGRhcyBjcmlzZXMgZGUgMjAwOCBlIDIwMjAgZXZpZGVuY2lhIHF1ZSBhcyByZXNlcnZhcyBpbnRlcm5hY2lvbmFpcyBkZXNlbXBlbmhhbSB1bSBwYXBlbCBlc3RyYXTDqWdpY28gZnVuZGFtZW50YWwgbmEgZXN0YWJpbGlkYWRlIG1hY3JvZWNvbsO0bWljYSBkbyBCcmFzaWwuIEVsYXMgZnVuY2lvbmFtIGNvbW8gdW0gdmVyZGFkZWlybyBzZWd1cm8gc29iZXJhbm8sIHBlcm1pdGluZG8gYW8gQmFuY28gQ2VudHJhbCBhdHVhciBkZSBmb3JtYSByw6FwaWRhIGUgZWZpY2F6IHBhcmEgY29udGVyIGEgdm9sYXRpbGlkYWRlIGNhbWJpYWwsIGdhcmFudGlyIGxpcXVpZGV6IGFvIG1lcmNhZG8gZSBwcmVzZXJ2YXIgYSBjb25maWFuw6dhIGRvcyBpbnZlc3RpZG9yZXMuDQpFbSBhbWJvcyBvcyBlcGlzw7NkaW9zLCBvIHVzbyBwcnVkZW50ZSBlIGNvb3JkZW5hZG8gZGFzIHJlc2VydmFzIGRlbW9uc3Ryb3UgYSBjYXBhY2lkYWRlIGRvIHBhw61zIGRlIGVuZnJlbnRhciBjaG9xdWVzIGV4dGVybm9zIHNlbSBjb21wcm9tZXRlciBzdWEgc29sdsOqbmNpYSwgZGVzdGFjYW5kbyBhIGltcG9ydMOibmNpYSBkZSBtYW50ZXIgdW0gZXN0b3F1ZSByb2J1c3RvIG1lc21vIGRpYW50ZSBkbyBjdXN0byBmaXNjYWwgYXNzb2NpYWRvLiBBIHBvbMOtdGljYSBkZSBnZXN0w6NvIGRhcyByZXNlcnZhcywgY29uY2VudHJhZGEgZW0gYXRpdm9zIGRlIGFsdGEgbGlxdWlkZXogZSBiYWl4byByaXNjbywgcHJpbmNpcGFsbWVudGUgdMOtdHVsb3MgZG8gVGVzb3VybyBhbWVyaWNhbm8sIHJlZm9yw6dhIGEgY3JlZGliaWxpZGFkZSBkbyBCcmFzaWwgcGVyYW50ZSBvcyBtZXJjYWRvcyBpbnRlcm5hY2lvbmFpcyBlIGFzc2VndXJhIGEgY29udGludWlkYWRlIGRlIHN1YXMgb3BlcmHDp8O1ZXMgZXh0ZXJuYXMgZW0gY29udGV4dG9zIGFkdmVyc29zLg0KQXNzaW0sIG8gZGVzYWZpbyBxdWUgc2UgaW1ww7VlIMOgIHBvbMOtdGljYSBlY29uw7RtaWNhIGJyYXNpbGVpcmEgw6kgbyBkZSBlcXVpbGlicmFyIGEgbmVjZXNzaWRhZGUgZGUgcHJvdGVnZXIgbyBwYcOtcyBjb250cmEgY2hvcXVlcyBmaW5hbmNlaXJvcyBnbG9iYWlzIGNvbSBhIHN1c3RlbnRhYmlsaWRhZGUgZmlzY2FsIGludGVybmEuIE1hbnRlciByZXNlcnZhcyBlbGV2YWRhcyBpbXBsaWNhIGN1c3RvcywgbWFzIGEgYXVzw6puY2lhIGRlbGFzIHRlcmlhIGN1c3RvcyBtdWl0byBtYWlvcmVzOiBwZXJkYSBkZSBjcmVkaWJpbGlkYWRlLCBpbnN0YWJpbGlkYWRlIGNhbWJpYWwgZSByaXNjbyBkZSBjcmlzZSBkZSBjb25maWFuw6dhLiBOZXNzZSBzZW50aWRvLCBhcyByZXNlcnZhcyBpbnRlcm5hY2lvbmFpcyBzZSBjb25zb2xpZGFtIGNvbW8gdW0gcGlsYXIgZXNzZW5jaWFsIGRhIHBvbMOtdGljYSBlY29uw7RtaWNhIGUgZGEgcmVzaWxpw6puY2lhIGZpbmFuY2VpcmEgZG8gQnJhc2lsIGZyZW50ZSDDoHMgaW5jZXJ0ZXphcyBkbyBjZW7DoXJpbyBnbG9iYWwuDQoNCiMjICoqUmVmZXLDqm5jaWFzKioNCg0KQkFOQ08gQ0VOVFJBTCBETyBCUkFTSUwuIFPDqXJpZXMgdGVtcG9yYWlzIOKAkyBTaXN0ZW1hIEdlcmVuY2lhZG9yIGRlIFPDqXJpZXMgVGVtcG9yYWlzIChTR1MpLiBCcmFzw61saWE6IEJhbmNvIENlbnRyYWwgZG8gQnJhc2lsLiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly93d3cuYmNiLmdvdi5ici9lc3RhdGlzdGljYXMvc2dzLiBBY2Vzc28gZW06IDYgb3V0LiAyMDI1Lg0KDQpCQU5DTyBDRU5UUkFMIERPIEJSQVNJTC4gUmVsYXTDs3JpbyBBbnVhbCAyMDA4LiBCb2xldGltIGRvIEJhbmNvIENlbnRyYWwgZG8gQnJhc2lsLCB2LiA0NCwgMjAwOC4gQnJhc8OtbGlhOiBCQ0IuIERpc3BvbsOtdmVsIGVtOiBodHRwczovL3d3dy5iY2IuZ292LmJyL3BlYy9ib2xldGltL2JhbnVhbDIwMDgvcmVsMjAwOHAucGRmLiBBY2Vzc28gZW06IDYgb3V0LiAyMDI1LiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbA0KDQpCQU5DTyBDRU5UUkFMIERPIEJSQVNJTC4gUmVsYXTDs3JpbyBkZSBHZXN0w6NvIGRhcyBSZXNlcnZhcyBJbnRlcm5hY2lvbmFpcy4gdi4gMTcuIEJyYXPDrWxpYTogQkNCLCBtYXIuIDIwMjUuIERpc3BvbsOtdmVsIGVtOiBodHRwczovL3d3dy5iY2IuZ292LmJyL2NvbnRlbnQvcHVibGljYWNvZXMvcmVsZ2VzdGFvcmVzZXJ2YXMvR0VTVEFPUkVTRVJWQVMyMDI1MDMtcmVsYXRvcmlvX2FudWFsX3Jlc2VydmFzX2ludGVybmFjaW9uYWlzXzIwMjUucGRmLiBBY2Vzc28gZW06IDYgb3V0LiAyMDI1LiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbA0KDQpNRVNRVUlUQSwgTcOhcmlvOyBUT1LDk1MsIE3DoXJpby4gQ29uc2lkZXJhw6fDtWVzIHNvYnJlIGEgQXR1YcOnw6NvIGRvIEJhbmNvIENlbnRyYWwgbmEgQ3Jpc2UgZGUgMjAwOC4gVHJhYmFsaG9zIHBhcmEgRGlzY3Vzc8Ojbywgbi4gMjAyLiBCcmFzw61saWE6IEJhbmNvIENlbnRyYWwgZG8gQnJhc2lsLCBtYXIuIDIwMTAuIERpc3BvbsOtdmVsIGVtOiBodHRwczovL3d3dy5iY2IuZ292LmJyL3BlYy93cHMvcG9ydC93cHMyMDIucGRmLiBBY2Vzc28gZW06IDYgb3V0LiAyMDI1LiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbA0KDQpQRUxMRUdSSU5JLCBKb3N1w6kuIEN1c3RvIGRlIGNhcnJlZ2FtZW50byBlIG7DrXZlbCBkYXMgcmVzZXJ2YXMgaW50ZXJuYWNpb25haXMuIE5vdGEgVMOpY25pY2Egbi4gMzkuIEJyYXPDrWxpYTogU2VuYWRvIEZlZGVyYWwsIEluc3RpdHVpw6fDo28gRmlzY2FsIEluZGVwZW5kZW50ZSwgMjggb3V0LiAyMDE5LiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly93d3cyLnNlbmFkby5sZWcuYnIvYmRzZi9iaXRzdHJlYW0vaGFuZGxlL2lkLzU2MzgzNC9OVDM5X0N1c3RvX2NhcnJlZ2FtZW50b19uaXZlbF9yZXNlcnZhc19pbnRlcm5hY2lvbmFpcy5wZGYuIEFjZXNzbyBlbTogNiBvdXQuIDIwMjUuIFNlbmFkbw0KDQpST0RSSUdVRVMgREUgT0xJVkVJUkEsIENpbnRoaWE7IExFT05BUkRPIERFIEFSQVVKTywgVmljdG9yLiBFeGNlc3NvPyBPIGRlYmF0ZSBzb2JyZSBvIG7DrXZlbCBkYXMgcmVzZXJ2YXMgaW50ZXJuYWNpb25haXMgbm8gQnJhc2lsLiBCcmF6aWxpYW4gS2V5bmVzaWFuIFJldmlldywgdi4gNywgbi4gMSwgcC4gMTA34oCTMTU0LCAyMDIxLiBET0k6IDEwLjMzODM0L2Jrci52N2kxLjI0NS4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vYnJhemlsaWFua2V5bmVzaWFucmV2aWV3Lm9yZy9CS1IvYXJ0aWNsZS92aWV3LzI0NS4gQWNlc3NvIGVtOiA2IG91dC4gMjAyNS4gYnJhemlsaWFua2V5bmVzaWFucmV2aWV3Lm9yZw0KDQpTQU1QQUlPLCBBZHJpYW5vIFZpbGVsYTsgV0VJU1MsIE1hdXJpY2lvIEFuZHJhZGU7IFZBTiBOT0lKRSwgUGF1bG8uIFBhbmRlbWlhIGRhIENvdmlkLTE5IGUgcHJlc3PDo28gY2FtYmlhbDogdW1hIGFuw6FsaXNlIGRvcyBwYcOtc2VzIGVtZXJnZW50ZXMuIEVjb25vbWlhIGUgU29jaWVkYWRlLCBDYW1waW5hcywgdi4gMzEsIG4uIDEsIHAuIDE1OS0xODksIDIwMjIuIERpc3BvbsOtdmVsIGVtOiBodHRwczovL3BlcmlvZGljb3Muc2J1LnVuaWNhbXAuYnIvb2pzL2luZGV4LnBocC9lY29zL2FydGljbGUvdmlldy84NjgxMDk3LiBBY2Vzc28gZW06IDYgb3V0LiAyMDI1Lg0KDQpVTklWRVJTSURBREUgREUgU8ODTyBQQVVMTy4gTWFudWFsIGRlIE1hY3JvZWNvbm9taWEgQsOhc2ljbyBlIEludGVybWVkacOhcmlvLiBTw6NvIFBhdWxvOiBVU1AsIHMuZC4=