Apresentação

Introdução

O modo de vida contemporâneo está passando por mudanças estruturais, em diferentes dimensões. Parte dessas mudanças está ocorrendo em função da revolução tecnológica que permite interações entre os meios físico, biológico e digital, denominada Quarta Revolução Industrial (Schwab, 2017; Susskind e Susskind, 2015). Como resultado, diferentes competências funcionais e específicas estão sendo demandadas para atuação de egressos de instituições de ensino superior (IES) (Elmor Filho et al., 2019; Susskind e Susskind, 2015), a saber (i) competências funcionais: capacidade de geração e aplicação do conhecimento, superação de desafios, tomada de decisão, treinamento e preceptoria; e (ii) competências específicas: capacidade de concepção, inovação, análise e síntese, gestão, aplicação de métodos para caracterização e solução de problemas e a capacidade de relacionar o conhecimento apreendido de maneira transdisciplinar. As instituições de ensino superior (IES) enfrentam o desafio de se adequar a essas demandas. Para tanto, é necessário transformar a sala de aula em um ambiente que estimule o protagonismo do estudante, o desenvolvimento de autonomia permanente de aprendizagem e favoreça comportamentos proativos e adaptáveis nas atividades profissionais.

Além dessa necessidade de transformação do ensino para adaptação às mudanças supracitadas, no início deste ano nos deparamos com um novo e imediato desafio advindo das relações humanas com o ambiente natural: a pandemia provocada pela disseminação do novo coronavírus SARS-CoV-2 em escala global. Esse fenômeno resultou na implementação de distanciamento social, mudando de maneira significativa a forma como vivemos. A educação é uma das diversas atividades impactadas pela pandemia e o contato presencial no ambiente escolar está restrito devido ao distanciamento social. Assim, os colaboradores das IES precisam buscar formas de manter a interação entre discentes e docentes, mesmo que virtual, qualificando o processo de aprendizagem para as competências necessárias ao do mundo contemporâneo.

Dentre as dimensões de desafios que gestores públicos, profissionais, instituições privadas e cidadãos estão enfrentando para adaptação às mudanças provocadas pelo COVID-19, estão a estrutura econômica, a dinâmica urbana, os padrões de consumo, os deslocamentos, a liberdade dos indivíduos, a percepção de felicidade, a degradação do meio ambiente e as priorizações de atividades e escolhas cotidianas. O papel da universidade, além da formação de capital humano para os desafios contemporâneos, envolve a produção e transferência de conhecimento e pensamento crítico sobre problemas reais, com o objetivo de promoção de qualidade de vida para as pessoas. Nesse momento disruptivo, justifica-se esse projeto de ensino pela necessidade de formar capital humano, por meio de ambiente virtual, capaz de discutir processos sociais, econômicos e ambientais no contexto urbano atual.

Elaborar e desenvolver projetos com foco em problemas urbanos visando a apropriação de competências em métodos de econometria e análise espacial e respectiva implementação em ambiente computacional, por meio das plataformas R e QGIS. Para tanto, serão consideradas metodologias ativas para realização das atividades propostas, tutoria sobre técnicas específicas de análise de dados espaciais e tutoriais sobre as ferramentas quantitativas R e QGIS, visando o conhecimento dos ambientes de trabalho e bibliotecas próprias de análises de questões espaciais.

A proposta metodológica deste projeto de ensino está baseada em algumas práticas pedagógicas que se fundamentam na aprendizagem ativa. Dentre elas, consideraremos aprendizagem baseada em projetos e sala de aula invertida. Nesse site são disponibilizados conteúdos para serem explorados pelos alunos a priori dos minicursos, compostos por vídeos e situações-problema. Serão então realizados minicursos com duração diária de 2 horas e total de 4 horas, para discussão de cada tópico proposto no cronograma, a saber: (i) processos urbanos; (ii) introdução ao geoprocessamento; (iii) métodos estatísticos para análise exploratória de dados; (iv) introdução a métodos econométricos; (v) introdução à análise espacial. Serão ainda propostas atividades preliminares (vídeos e atividades práticas) aos minicursos.


Resultados esperados

  • construção do conhecimento acerca de problemas urbanos, tais como acessibilidade, mobilidade, estrutura espacial de funções urbanas e seu impacto na promoção de cidades equitativas e de qualidade de vida para a população, considerando tanto a organização social cotidiana como no momento de exceção promovido pelo COVID-19;
  • a disseminação do conhecimento da linguagem de programação do R e suas principais bibliotecas do R destinadas à manipulação e tratamento de dados espaciais;
  • a disseminação do conhecimento sobre ferramentas de análise quantitativa espacial, especialmente econometria espacial;
  • imersão de professores e alunos em uma metodologia ativa de ensino, gerando considerações críticas acerca das vantagens e desvantagens dos métodos aplicado e as possíveis melhorias;
  • difusão de conhecimento por meio da elaboração e possível publicação de artigos acerca dos itens de pesquisa propostos.

Instalação do R

Baixar e instalar o R: link

No link acima é apresentado o processo de instalação para Windows. No mesmo site é possível encontrar procedimentos de instalação para outros sistemas operacionais.

Links adicionais:
Visão geral e primeiros passos com R e RStudio


Instalação do RStudio

Baixar e instalar o RStudio: link

No link acima é apresentado o processo de instalação para Windows. No mesmo site é possível encontrar procedimentos de instalação para outros sistemas operacionais.


Instalação do QGIS

Baixar e Instalar o QGIS:

64 bits
32 bits


Minicursos

1: Introdução ao R e ao ambiente RStudio

Agenda

Como utilizar o Data Frame!

Introdução ao R


2: Processos Urbanos

“Os sentimentos mais genuinamente humanos logo se desumanizam na cidade.”
Eça de Queirós

Agenda

Competências a serem desenvolvidas

Ao final desse mini-curso, os alunos deverão ser capazes de discutir os seguintes conceitos:

  • Urbanização
  • Cidades - definição e origem
  • Cidade na região
  • Posição
    • Função
    • Tipologias
    • Hierarquias
    • Centralidade e redes urbanas
  • Cidade e as relações intraurbanas
    • Sítio
    • Estrutura morfológico funcional
  • Subsistemas urbanos
    • Transportes
    • Uso do solo
    • Funções/atividades

1. Cidades: definição

Os alunos deverão realizar as atividades disponíveis nos slides abaixo e explorar a documentação sugerida antes do nosso encontro virtual.

Abaixo segue o material que será explorado ao longo das aulas.

Urbanização

Diferenças entre urbano e rural

Cidade na região

Relações intraurbanas

Morfologia e função urbana


3: Métodos Econométricos (módulo I)

Agenda

4: Análise Espacial (módulo I)

O que diferencia dados espaciais e não espaciais?
O que existe em uma determinada localização?
Onde posso encontrar um determinado objeto?
O que mudou ao longo do tempo?
Qual o melhor caminho?
Como os objetos são distribuídos no espaço?
Como as condições serão alterada no futuro?

Agenda

Competências a serem desenvolvidas

Ao final desse mini-curso, os alunos deverão ser capazes de discutir os seguintes conceitos: - Ambiente e funcionalidades básicas do QGIS - Complementos: instalação e para que servem - tipos de arquivo - shapefiles - Mudança de datum e sistemas de coordenadas
- Tabela de atributos - Seleção por atributo - Join -

Pensamento espacial

Encontrar significado em formas, tamanho, orientação, localização, direção ou trajetória de objetos, processos e fenômenos

Encontrar significado na localização relativa de múltiplos objetos, processos e fenômenos.

Cartografia e GIS

Ambiente e dados (shapefiles)

  • Módulo 2: Informações geográficas - estrutura de dados, dados vetorias e dados matriciais

  • Módulo 3: Representação de fenômenos espaciais #### Geocodificação

  1. Instalem o complemento MMQGIS
  2. Abram o arquivo em .xlsx. Inclua quatro colunas com os seguintes nomes para cada atributo:
  1. ADDRESS – Endereço concatenado no formato: RUA GRÃO MOGOL 534, SION
  2. CITY – Belo Horizonte
  3. STATE – Minas Gerais
  4. COUNTRY - Brazil
  1. Salve o arquivo como .csv UTF8
  2. Faça a geocodificação no QGIS
  1. MMQGIS >> Geocode >> Geocode CVS with web service
  2. Utilize o web service do OpenStreetMap
  3. Escolha locais para salvar o shapefile e o cvs (lista de não encontrados) fora do diretório de sistema

Sistemas de coordenada e representação espacial

Dados espaciais: classificação, estrutura e interoperabilidade, geocodificação.

Mapas temáticos

Escolha de unidades espaciais e de forma de representação da informação espacial


5: Análise espacial (módulo II)

“Nossa existência no tempo nos é determinada, mas temos ampla liberdade de escolha de nossa localização, que é influenciada, embora não de todo, pelo nosso lugar de origem. Encontrar a localização correta é essencial para uma vida de sucesso, também para um empreendimento de sucesso e para um assentamento duradouro – em suma, para a sobrevivência do grupo. Adicionalmente, uma localização adequada tem que ser a localização dos acontecimentos certos. […]” (Lösch, 1954, p. 3)

Agenda

Competências a serem adquiridas

  • Entender o papel do estudo geográfico das cidades nas conexões intra e interurbanas.
  • Capacidade analítica para definição de unidades espaciais e áreas de influência.
    • Métodos de determinação de áreas de influência
      • Cobertura espacial
      • Voronoi
  • Estatística espacial descritiva
  • Cálculo de indicadores de padrões de uso do solo
  • Medidas de distância em rede
  • Medidas de centralidade de rede

Reflexão

Escala e estruturas espaciais urbanas

Análise espacial: fundamentos e relevância

Análise espacial: aplicações - determinação de unidades espaciais e área de influência

Processo decisório por meio de ferramentas de geoprocessamento para dados vetoriais

Processo decisório: suitability analysis


6: Métodos Econométricos (módulo II)

Agenda


Projeto

Temas

Proposição de projetos de pesquisa a serem desenvolvidos como principal elemento de avalição da disciplina:

  1. Geomarketing e comportamento do consumidor

    1. Identificar uma atividade econômica (produto ou serviço) para avaliação de localização e concorrência espacial
  2. Análise da Relação entre a Precariedade Habitacional e Renda na RMBH

    1. Identificar uma unidade espacial para obtenção dos dados
    2. Definir, à luz de uma revisão bibliográfica, como definir precariedade habitacional e quais as informações necessárias para que seja possível tratar essa temática (Domicílios sem Iluminação Pública; Domicílios sem Sanitário; Domicílios sem Coleta de Lixo; Domicílios sem Energia Elétrica; Domicílios sem Pavimentação; Domicílios sem Bueiro/Boca de Lobo; Domicílios com Esgoto a céu aberto; Domicílios sem abastecimento de água da Rede Geral.
  3. Relação entre Renda da População e a oferta/uso do Transporte em Belo Horizonte
    a. Identificar, à luz da revisão bibliográfica, indicadores de oferta/uso do transporte público de Belo Horizonte e pensar nos indicadores e fontes de dados para a informação selecionada.
    b. Analisar se o modo de utilização do transporte e o tempo de viagem está relacionado com a renda da população do Município de São Paulo
    c. Analisar diferentes recortes temporais

  4. Iniquidades na Qualidade de Vida na RMBH ou BH

    1. Identificar atributos e indicadores que reflitam qualidade de vida e levantar possíveis fontes de dados.
    2. Pensar em indicadores de desigualdade para tratar a qualidade de vida.
  5. Iniquidades quanto à segurança na cidade – RMBH ou BH

    1. Escolher atributos e indicadores que reflitam a segurança pública, como Taxa de Estupro; Taxa de Feminicídio. Pensem que os atributos podem ser estratificados conforme a população que sofreu a violência e, portanto, grupos mais vulneráveis (mulheres, crianças, idosos, população de baixa renda).
    2. Relacionar com algumas variáveis explicativas como educação e renda.
    3. Pensar em indicadores de desigualdade para tratar a segurança pública.
  6. Desigualdade de renda e da qualidade de vida e a localização de grupos raciais e étnicos na cidade

    1. Pense em indicadores como renda, IDHM, índices de violência para discutir as relações entre locais de moradia para da população por estrato de raça e etnia e indicadores de renda e qualidade de vida.
  7. Food Deserts
    a. Relacionais fatores como pobreza e obesidade, localização de supermercados e varejo de alimentos frescos, doenças relacionadas com a dieta
    b. Análise da estrutura espacial e da acessibilidade aos Food Systems da RMBH.

  8. Análise da evolução dos índices de gravidez na adolescência em Belo Horizonte
    a. Identificar variáveis que possam representar a população crítica para este estudo (Censo 2010; IDHM; educação).
    b. Explorar a localização de população formada por adolescentes mulheres com faixa etária entre 10 e 17 anos residentes no estado e Minas Gerais;
    c. Pode-se estabelecer correlação entre renda média domiciliar e gravidez precoce?
    d. A dimensão educação estão correlacionadas com aumento ou mesmo redução da taxa de gravidez na adolescência?

  9. Desigualdade de renda entre Mulheres e Homens no Estado de Minas Gerais e sua relação com o grau de urbanização e o nível educacional educação;

    1. Há diferença de renda entre gêneros no estado de Minas Gerais? Há concentração espacial dessa desigualdade?
    2. As diferenças são maiores ou menores nas regiões metropolitanas?
    3. Como os fatores de escolaridade das mulheres, índice de gravidez na adolescência, taxa de fecundidade e proporção mulheres responsáveis pelo domicílio, IDH e Renda per capita no município se relacionam com a renda média das mulheres?
    4. O grau de urbanização do município interfere na renda média feminina? E masculina? O grau de escolaridade interfere na renda média feminina da mesma forma que na masculina?

Grupos

Os alunos deverão se organizar em grupos de até 4 (quatro) alunos para desenvolvimento dos projetos.

Estrutura metodológica dos projetos

  1. Definição do problema em investigação
  2. Elaboração de hipóteses
  3. Seleção e fonte de dados para obtenção de variáveis
    1. Unidade espacial
    2. Composição de indicadores
  4. Análise exploratória das variáveis (R)
  5. Análise da relação entre variáveis (R)
    1. Matriz de correlação
    2. Regressão não espacial
  6. Mapas para representação das variáveis no recorte espacial definido (QGIS)
  7. Análise espacial (QGIS)
    1. Autocorrelação espacial
    2. Cluster
    3. Outras técnicas que sejam relevantes
  8. Econometria espacial
  9. Síntese e considerações gerais

Entregas do projeto

Data Etapa
29/06 Definição do problema em investigação, Elaboração de hipóteses e Seleção e fonte de dados para obtenção de variáveis
02/07 Análise exploratória das variáveis e análise das relações entre variáveis (R)
08/07 Mapas para representação das variáveis e análise espacial no recorte espacial definido (QGIS)
10/07 Econometria espacial
13/07 Síntese, considerações gerais e apresentação do

As entregas deverão ser feitas por ????????.

Cronograma de seções virtuais para acompanhamento dos projetos - grupos de discussão

A sala virtual será aberta conforme cronograma com professores disponíveis para esclarecimentos de dúvidas e orientação para desenvolvimento dos projetos.

Data Atividade
26/06 Encontro 1 - 08:00 às 12:00
03/07 Encontro 2 - 08:00 às 12:00
10/07 Encontro 3 - 08:00 às 12:00

Seminário final

13/07 - 18:00 às 21:00

A apresentação do semináro final será composta por:
- apresentação de cada grupo - máximo de 15 minutos
- mesa de discussão para fechamento da experiência promovida pelo projeto de ensino

Contatos

Renata Lúcia Magalhães de Oliveira
Patrick Mendes dos Santos
Lucélia Viviane Raad

LS0tDQp0aXRsZTogIkRlc2Vudm9sdmltZW50byBkZSBjb21wZXTDqm5jaWFzIHBhcmEgZGlzY3Vzc8OjbyBkZSBwcm9jZXNzb3MgdXJiYW5vcyBwb3IgbWVpbyBkZSBtw6l0b2RvcyBlc3BhY2lhaXMgcXVhbnRpdGF0aXZvcyINCmF1dGhvcjogIlJlbmF0YSBPbGl2ZWlyYSwgTHVjw6lsaWEgUmFhZCBlIFBhdHJpY2sgU2FudG9zIg0KZGF0ZTogIkxhc3QgdXBkYXRlZDogYHIgZm9ybWF0KFN5cy50aW1lKCksICclZCAlQiwgJVknKWAiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgY3NzOiBzdHlsZS5jc3MNCiAgICB0aGVtZTogc3BhY2VsYWINCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6DQogICAgICBjb2xsYXBzZWQ6IHRydWUNCiAgICAgIHNtb290aF9zY3JvbGw6IHRydWUNCiAgICB0b2NfZGVwdGg6IDMNCiAgICBudW1iZXJfc2VjdGlvbnM6IGZhbHNlDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KYmlibGlvZ3JhcGh5OiByZWZlcmVuY2VzLmJpYg0KbGluay1jaXRhdGlvbnM6IHRydWUNCi0tLQ0KDQojIEFwcmVzZW50YcOnw6NvDQoNCiMjIyBJbnRyb2R1w6fDo28gey19DQoNCk8gbW9kbyBkZSB2aWRhIGNvbnRlbXBvcsOibmVvIGVzdMOhIHBhc3NhbmRvIHBvciBtdWRhbsOnYXMgZXN0cnV0dXJhaXMsIGVtIGRpZmVyZW50ZXMgZGltZW5zw7Vlcy4gUGFydGUgZGVzc2FzIG11ZGFuw6dhcyBlc3TDoSBvY29ycmVuZG8gZW0gZnVuw6fDo28gZGEgcmV2b2x1w6fDo28gdGVjbm9sw7NnaWNhIHF1ZSBwZXJtaXRlIGludGVyYcOnw7VlcyBlbnRyZSBvcyBtZWlvcyBmw61zaWNvLCBiaW9sw7NnaWNvIGUgZGlnaXRhbCwgZGVub21pbmFkYSAqKlF1YXJ0YSBSZXZvbHXDp8OjbyBJbmR1c3RyaWFsKiogKFNjaHdhYiwgMjAxNzsgU3Vzc2tpbmQgZSBTdXNza2luZCwgMjAxNSkuIENvbW8gcmVzdWx0YWRvLCBkaWZlcmVudGVzIGNvbXBldMOqbmNpYXMgZnVuY2lvbmFpcyBlIGVzcGVjw61maWNhcyBlc3TDo28gc2VuZG8gZGVtYW5kYWRhcyBwYXJhIGF0dWHDp8OjbyBkZSBlZ3Jlc3NvcyBkZSBpbnN0aXR1acOnw7VlcyBkZSBlbnNpbm8gc3VwZXJpb3IgKElFUykgKEVsbW9yIEZpbGhvIGV0IGFsLiwgMjAxOTsgU3Vzc2tpbmQgZSBTdXNza2luZCwgMjAxNSksIGEgc2FiZXIgKGkpIGNvbXBldMOqbmNpYXMgZnVuY2lvbmFpczogY2FwYWNpZGFkZSBkZSBnZXJhw6fDo28gZSBhcGxpY2HDp8OjbyBkbyBjb25oZWNpbWVudG8sIHN1cGVyYcOnw6NvIGRlIGRlc2FmaW9zLCB0b21hZGEgZGUgZGVjaXPDo28sIHRyZWluYW1lbnRvIGUgcHJlY2VwdG9yaWE7IGUgKGlpKSBjb21wZXTDqm5jaWFzIGVzcGVjw61maWNhczogKipjYXBhY2lkYWRlIGRlIGNvbmNlcMOnw6NvLCBpbm92YcOnw6NvLCBhbsOhbGlzZSBlIHPDrW50ZXNlLCBnZXN0w6NvLCBhcGxpY2HDp8OjbyBkZSBtw6l0b2RvcyBwYXJhIGNhcmFjdGVyaXphw6fDo28gZSBzb2x1w6fDo28gZGUgcHJvYmxlbWFzIGUgYSBjYXBhY2lkYWRlIGRlIHJlbGFjaW9uYXIgbyBjb25oZWNpbWVudG8gYXByZWVuZGlkbyBkZSBtYW5laXJhIHRyYW5zZGlzY2lwbGluYXIqKi4gQXMgaW5zdGl0dWnDp8O1ZXMgZGUgZW5zaW5vIHN1cGVyaW9yIChJRVMpIGVuZnJlbnRhbSBvIGRlc2FmaW8gZGUgc2UgYWRlcXVhciBhIGVzc2FzIGRlbWFuZGFzLiBQYXJhIHRhbnRvLCDDqSBuZWNlc3PDoXJpbyB0cmFuc2Zvcm1hciBhIHNhbGEgZGUgYXVsYSBlbSB1bSBhbWJpZW50ZSBxdWUgZXN0aW11bGUgbyBwcm90YWdvbmlzbW8gZG8gZXN0dWRhbnRlLCBvIGRlc2Vudm9sdmltZW50byBkZSBhdXRvbm9taWEgcGVybWFuZW50ZSBkZSBhcHJlbmRpemFnZW0gZSBmYXZvcmXDp2EgY29tcG9ydGFtZW50b3MgcHJvYXRpdm9zIGUgYWRhcHTDoXZlaXMgbmFzIGF0aXZpZGFkZXMgcHJvZmlzc2lvbmFpcy4gICANCg0KQWzDqW0gZGVzc2EgbmVjZXNzaWRhZGUgZGUgdHJhbnNmb3JtYcOnw6NvIGRvIGVuc2lubyBwYXJhIGFkYXB0YcOnw6NvIMOgcyBtdWRhbsOnYXMgc3VwcmFjaXRhZGFzLCBubyBpbsOtY2lvIGRlc3RlIGFubyBub3MgZGVwYXJhbW9zIGNvbSB1bSBub3ZvIGUgaW1lZGlhdG8gZGVzYWZpbyBhZHZpbmRvIGRhcyByZWxhw6fDtWVzIGh1bWFuYXMgY29tIG8gYW1iaWVudGUgbmF0dXJhbDogYSBwYW5kZW1pYSBwcm92b2NhZGEgcGVsYSBkaXNzZW1pbmHDp8OjbyBkbyBub3ZvIGNvcm9uYXbDrXJ1cyBTQVJTLUNvVi0yIGVtIGVzY2FsYSBnbG9iYWwuIEVzc2UgZmVuw7RtZW5vIHJlc3VsdG91IG5hIGltcGxlbWVudGHDp8OjbyBkZSBkaXN0YW5jaWFtZW50byBzb2NpYWwsIG11ZGFuZG8gZGUgbWFuZWlyYSBzaWduaWZpY2F0aXZhIGEgZm9ybWEgY29tbyB2aXZlbW9zLiBBIGVkdWNhw6fDo28gw6kgdW1hIGRhcyBkaXZlcnNhcyBhdGl2aWRhZGVzIGltcGFjdGFkYXMgcGVsYSBwYW5kZW1pYSBlIG8gY29udGF0byBwcmVzZW5jaWFsIG5vIGFtYmllbnRlIGVzY29sYXIgZXN0w6EgcmVzdHJpdG8gZGV2aWRvIGFvIGRpc3RhbmNpYW1lbnRvIHNvY2lhbC4gQXNzaW0sIG9zIGNvbGFib3JhZG9yZXMgZGFzIElFUyBwcmVjaXNhbSBidXNjYXIgZm9ybWFzIGRlIG1hbnRlciBhIGludGVyYcOnw6NvIGVudHJlIGRpc2NlbnRlcyBlIGRvY2VudGVzLCBtZXNtbyBxdWUgdmlydHVhbCwgcXVhbGlmaWNhbmRvIG8gcHJvY2Vzc28gZGUgYXByZW5kaXphZ2VtIHBhcmEgYXMgY29tcGV0w6puY2lhcyBuZWNlc3PDoXJpYXMgYW8gZG8gbXVuZG8gY29udGVtcG9yw6JuZW8uIA0KDQpEZW50cmUgYXMgZGltZW5zw7VlcyBkZSBkZXNhZmlvcyBxdWUgZ2VzdG9yZXMgcMO6YmxpY29zLCBwcm9maXNzaW9uYWlzLCBpbnN0aXR1acOnw7VlcyBwcml2YWRhcyBlIGNpZGFkw6NvcyBlc3TDo28gZW5mcmVudGFuZG8gcGFyYSBhZGFwdGHDp8OjbyDDoHMgbXVkYW7Dp2FzIHByb3ZvY2FkYXMgcGVsbyBDT1ZJRC0xOSwgZXN0w6NvIGEgZXN0cnV0dXJhIGVjb27DtG1pY2EsIGEgZGluw6JtaWNhIHVyYmFuYSwgb3MgcGFkcsO1ZXMgZGUgY29uc3Vtbywgb3MgZGVzbG9jYW1lbnRvcywgYSBsaWJlcmRhZGUgZG9zIGluZGl2w61kdW9zLCBhIHBlcmNlcMOnw6NvIGRlIGZlbGljaWRhZGUsIGEgZGVncmFkYcOnw6NvIGRvIG1laW8gYW1iaWVudGUgZSBhcyBwcmlvcml6YcOnw7VlcyBkZSBhdGl2aWRhZGVzIGUgZXNjb2xoYXMgY290aWRpYW5hcy4gTyBwYXBlbCBkYSB1bml2ZXJzaWRhZGUsIGFsw6ltIGRhIGZvcm1hw6fDo28gZGUgY2FwaXRhbCBodW1hbm8gcGFyYSBvcyBkZXNhZmlvcyBjb250ZW1wb3LDom5lb3MsIGVudm9sdmUgYSBwcm9kdcOnw6NvIGUgdHJhbnNmZXLDqm5jaWEgZGUgY29uaGVjaW1lbnRvIGUgcGVuc2FtZW50byBjcsOtdGljbyBzb2JyZSBwcm9ibGVtYXMgcmVhaXMsIGNvbSBvIG9iamV0aXZvIGRlIHByb21vw6fDo28gZGUgcXVhbGlkYWRlIGRlIHZpZGEgcGFyYSBhcyBwZXNzb2FzLiBOZXNzZSBtb21lbnRvIGRpc3J1cHRpdm8sIGp1c3RpZmljYS1zZSBlc3NlIHByb2pldG8gZGUgZW5zaW5vIHBlbGEgbmVjZXNzaWRhZGUgZGUgZm9ybWFyIGNhcGl0YWwgaHVtYW5vLCBwb3IgbWVpbyBkZSBhbWJpZW50ZSB2aXJ0dWFsLCBjYXBheiBkZSBkaXNjdXRpciBwcm9jZXNzb3Mgc29jaWFpcywgZWNvbsO0bWljb3MgZSBhbWJpZW50YWlzIG5vIGNvbnRleHRvIHVyYmFubyBhdHVhbC4gDQoNCkVsYWJvcmFyIGUgZGVzZW52b2x2ZXIgcHJvamV0b3MgY29tIGZvY28gZW0gcHJvYmxlbWFzIHVyYmFub3MgdmlzYW5kbyBhIGFwcm9wcmlhw6fDo28gZGUgY29tcGV0w6puY2lhcyBlbSAqKm3DqXRvZG9zIGRlIGVjb25vbWV0cmlhIGUgYW7DoWxpc2UgZXNwYWNpYWwqKiBlIHJlc3BlY3RpdmEgaW1wbGVtZW50YcOnw6NvIGVtIGFtYmllbnRlIGNvbXB1dGFjaW9uYWwsIHBvciBtZWlvIGRhcyBwbGF0YWZvcm1hcyAqKlIqKiBlICoqUUdJUyoqLiBQYXJhIHRhbnRvLCBzZXLDo28gY29uc2lkZXJhZGFzIG1ldG9kb2xvZ2lhcyBhdGl2YXMgcGFyYSByZWFsaXphw6fDo28gZGFzIGF0aXZpZGFkZXMgcHJvcG9zdGFzLCB0dXRvcmlhIHNvYnJlIHTDqWNuaWNhcyBlc3BlY8OtZmljYXMgZGUgYW7DoWxpc2UgZGUgZGFkb3MgZXNwYWNpYWlzIGUgdHV0b3JpYWlzIHNvYnJlIGFzIGZlcnJhbWVudGFzIHF1YW50aXRhdGl2YXMgUiBlIFFHSVMsIHZpc2FuZG8gbyBjb25oZWNpbWVudG8gZG9zIGFtYmllbnRlcyBkZSB0cmFiYWxobyBlIGJpYmxpb3RlY2FzIHByw7NwcmlhcyBkZSBhbsOhbGlzZXMgZGUgcXVlc3TDtWVzIGVzcGFjaWFpcy4NCg0KQSBwcm9wb3N0YSBtZXRvZG9sw7NnaWNhIGRlc3RlIHByb2pldG8gZGUgZW5zaW5vIGVzdMOhIGJhc2VhZGEgZW0gYWxndW1hcyBwcsOhdGljYXMgcGVkYWfDs2dpY2FzIHF1ZSBzZSBmdW5kYW1lbnRhbSBuYSBhcHJlbmRpemFnZW0gYXRpdmEuIERlbnRyZSBlbGFzLCBjb25zaWRlcmFyZW1vcyBhcHJlbmRpemFnZW0gYmFzZWFkYSBlbSBwcm9qZXRvcyBlIHNhbGEgZGUgYXVsYSBpbnZlcnRpZGEuIE5lc3NlIHNpdGUgc8OjbyBkaXNwb25pYmlsaXphZG9zIGNvbnRlw7pkb3MgcGFyYSBzZXJlbSBleHBsb3JhZG9zIHBlbG9zIGFsdW5vcyBhIHByaW9yaSBkb3MgbWluaWN1cnNvcywgY29tcG9zdG9zIHBvciB2w61kZW9zIGUgc2l0dWHDp8O1ZXMtcHJvYmxlbWEuIFNlcsOjbyBlbnTDo28gcmVhbGl6YWRvcyBtaW5pY3Vyc29zIGNvbSBkdXJhw6fDo28gZGnDoXJpYSBkZSAyIGhvcmFzIGUgdG90YWwgZGUgNCBob3JhcywgcGFyYSBkaXNjdXNzw6NvIGRlIGNhZGEgdMOzcGljbyBwcm9wb3N0byBubyBjcm9ub2dyYW1hLCBhIHNhYmVyOiAqKihpKSBwcm9jZXNzb3MgdXJiYW5vczsgKGlpKSBpbnRyb2R1w6fDo28gYW8gZ2VvcHJvY2Vzc2FtZW50bzsgKGlpaSkgbcOpdG9kb3MgZXN0YXTDrXN0aWNvcyBwYXJhIGFuw6FsaXNlIGV4cGxvcmF0w7NyaWEgZGUgZGFkb3M7IChpdikgaW50cm9kdcOnw6NvIGEgbcOpdG9kb3MgZWNvbm9tw6l0cmljb3M7ICh2KSBpbnRyb2R1w6fDo28gw6AgYW7DoWxpc2UgZXNwYWNpYWwqKi4gU2Vyw6NvIGFpbmRhIHByb3Bvc3RhcyBhdGl2aWRhZGVzIHByZWxpbWluYXJlcyAodsOtZGVvcyBlIGF0aXZpZGFkZXMgcHLDoXRpY2FzKSBhb3MgbWluaWN1cnNvcy4NCg0KLS0tLQ0KICAgDQojIyMgUmVzdWx0YWRvcyBlc3BlcmFkb3MNCi0gY29uc3RydcOnw6NvIGRvIGNvbmhlY2ltZW50byBhY2VyY2EgZGUgcHJvYmxlbWFzIHVyYmFub3MsIHRhaXMgY29tbyBhY2Vzc2liaWxpZGFkZSwgbW9iaWxpZGFkZSwgZXN0cnV0dXJhIGVzcGFjaWFsIGRlIGZ1bsOnw7VlcyB1cmJhbmFzIGUgc2V1IGltcGFjdG8gbmEgcHJvbW/Dp8OjbyBkZSBjaWRhZGVzIGVxdWl0YXRpdmFzIGUgZGUgcXVhbGlkYWRlIGRlIHZpZGEgcGFyYSBhIHBvcHVsYcOnw6NvLCBjb25zaWRlcmFuZG8gdGFudG8gYSBvcmdhbml6YcOnw6NvIHNvY2lhbCBjb3RpZGlhbmEgY29tbyBubyBtb21lbnRvIGRlIGV4Y2XDp8OjbyBwcm9tb3ZpZG8gcGVsbyBDT1ZJRC0xOTsgIA0KLSBhIGRpc3NlbWluYcOnw6NvIGRvIGNvbmhlY2ltZW50byBkYSBsaW5ndWFnZW0gZGUgcHJvZ3JhbWHDp8OjbyBkbyBSIGUgc3VhcyBwcmluY2lwYWlzIGJpYmxpb3RlY2FzIGRvIFIgZGVzdGluYWRhcyDDoCBtYW5pcHVsYcOnw6NvIGUgdHJhdGFtZW50byBkZSBkYWRvcyBlc3BhY2lhaXM7ICANCi0gYSBkaXNzZW1pbmHDp8OjbyBkbyBjb25oZWNpbWVudG8gc29icmUgZmVycmFtZW50YXMgZGUgYW7DoWxpc2UgcXVhbnRpdGF0aXZhIGVzcGFjaWFsLCBlc3BlY2lhbG1lbnRlIGVjb25vbWV0cmlhIGVzcGFjaWFsOyAgDQotIGltZXJzw6NvIGRlIHByb2Zlc3NvcmVzIGUgYWx1bm9zIGVtIHVtYSBtZXRvZG9sb2dpYSBhdGl2YSBkZSBlbnNpbm8sIGdlcmFuZG8gY29uc2lkZXJhw6fDtWVzIGNyw610aWNhcyBhY2VyY2EgZGFzIHZhbnRhZ2VucyBlIGRlc3ZhbnRhZ2VucyBkb3MgbcOpdG9kb3MgYXBsaWNhZG8gZSBhcyBwb3Nzw612ZWlzIG1lbGhvcmlhczsgIA0KLSBkaWZ1c8OjbyBkZSBjb25oZWNpbWVudG8gcG9yIG1laW8gZGEgZWxhYm9yYcOnw6NvIGUgcG9zc8OtdmVsIHB1YmxpY2HDp8OjbyBkZSBhcnRpZ29zIGFjZXJjYSBkb3MgaXRlbnMgZGUgcGVzcXVpc2EgcHJvcG9zdG9zLg0KDQotLS0tDQogICANCiMjIyBJbnN0YWxhw6fDo28gZG8gUg0KDQo+IEJhaXhhciBlIGluc3RhbGFyIG8gUjogPGEgaHJlZj0iaHR0cHM6Ly9jcmFuLnItcHJvamVjdC5vcmcvYmluL3dpbmRvd3MvYmFzZS8iIHRhcmdldD0iX2JsYW5rIj5saW5rPC9hPg0KDQpObyBsaW5rIGFjaW1hIMOpIGFwcmVzZW50YWRvIG8gcHJvY2Vzc28gZGUgaW5zdGFsYcOnw6NvIHBhcmEgV2luZG93cy4gTm8gbWVzbW8gc2l0ZSDDqSBwb3Nzw612ZWwgZW5jb250cmFyIHByb2NlZGltZW50b3MgZGUgaW5zdGFsYcOnw6NvIHBhcmEgb3V0cm9zIHNpc3RlbWFzIG9wZXJhY2lvbmFpcy4gDQoNCkxpbmtzIGFkaWNpb25haXM6ICAgIA0KPGEgaHJlZj0iaHR0cHM6Ly9ycHVicy5jb20vY2Fzc2lvcmFtcGluZWxsaS80ODg5OTkiIHRhcmdldD0iX2JsYW5rIj5WaXPDo28gZ2VyYWwgZSBwcmltZWlyb3MgcGFzc29zIGNvbSBSIGUgUlN0dWRpbzwvYT4NCg0KLS0tLQ0KICAgDQojIyMgSW5zdGFsYcOnw6NvIGRvIFJTdHVkaW8NCg0KPiBCYWl4YXIgZSBpbnN0YWxhciBvIFJTdHVkaW86IDxhIGhyZWY9Imh0dHBzOi8vcnN0dWRpby5jb20vcHJvZHVjdHMvcnN0dWRpby9kb3dubG9hZC8iIHRhcmdldD0iX2JsYW5rIj5saW5rPC9hPg0KDQpObyBsaW5rIGFjaW1hIMOpIGFwcmVzZW50YWRvIG8gcHJvY2Vzc28gZGUgaW5zdGFsYcOnw6NvIHBhcmEgV2luZG93cy4gTm8gbWVzbW8gc2l0ZSDDqSBwb3Nzw612ZWwgZW5jb250cmFyIHByb2NlZGltZW50b3MgZGUgaW5zdGFsYcOnw6NvIHBhcmEgb3V0cm9zIHNpc3RlbWFzIG9wZXJhY2lvbmFpcy4gDQoNCi0tLS0NCiAgIA0KIyMjIEluc3RhbGHDp8OjbyBkbyBRR0lTDQoNCkJhaXhhciBlIEluc3RhbGFyIG8gUUdJUzogIA0KDQo+IDxhIGhyZWY9Imh0dHBzOi8vZG93bmxvYWQub3NnZW8ub3JnL29zZ2VvNHcvb3NnZW80dy1zZXR1cC14ODZfNjQuZXhlIiB0YXJnZXQ9Il9ibGFuayI+NjQgYml0czwvYT4gICAgDQo+IDxhIGhyZWY9Imh0dHBzOi8vZG93bmxvYWQub3NnZW8ub3JnL29zZ2VvNHcvb3NnZW80dy1zZXR1cC14ODYuZXhlIiB0YXJnZXQ9Il9ibGFuayI+MzIgYml0czwvYT4NCg0KLS0tLQ0KICAgDQojIE1pbmljdXJzb3MNCg0KIyMgMTogSW50cm9kdcOnw6NvIGFvIFIgZSBhbyBhbWJpZW50ZSBSU3R1ZGlvIA0KDQojIyMjIEFnZW5kYQ0KLSAqKmRhdGEqKjogMjMgZSAyNCBkZSBqdW5obw0KLSAqKmhvcsOhcmlvKio6IDE4OjAwIC0gMjA6MDANCi0gKipyZWN1cnNvcyoqOiAgIA0KPGEgaHJlZj0iaHR0cHM6Ly9jb25mZXJlbmNpYXdlYi5ybnAuYnIvd2ViY29uZi9yZW5hdGEtbHVjaWEtbWFnYWxoYWVzLWRlLW9saXZlaXJhIiB0YXJnZXQ9Il9ibGFuayI+U2FsYSBkZSBjb25mZXLDqm5jaWEgd2ViY29uZmVyw6puY2lhIFJOUDwvYT4NCg0KQ29tbyB1dGlsaXphciBvIERhdGEgRnJhbWUhICAgDQo8aWZyYW1lIHdpZHRoPSI1NjAiIGhlaWdodD0iMzE1IiBzcmM9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLzlmMmc3Uk41TjBJIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3c9ImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+DQoNCg0KDQo8YSBocmVmPSJodHRwczovL3JwdWJzLmNvbS9yaWNhcmRvX29saW5kYS9JSUlFTkVDVCIgdGFyZ2V0PSJfYmxhbmsiPkludHJvZHXDp8OjbyBhbyBSPC9hPg0KDQoNCi0tLS0NCiAgIA0KIyMgMjogUHJvY2Vzc29zIFVyYmFub3Mgey19DQoNCjo6OiB7I2JveDEgLmdyZWVuLWJveH0NCuKAnE9zIHNlbnRpbWVudG9zIG1haXMgZ2VudWluYW1lbnRlIGh1bWFub3MgbG9nbyBzZSBkZXN1bWFuaXphbSBuYSBjaWRhZGUu4oCdICAgDQpFw6dhIGRlIFF1ZWlyw7NzIA0KOjo6IA0KDQojIyMjIEFnZW5kYQ0KLSAqKmRhdGEqKjogMjUgZSAyNiBkZSBqdW5obw0KLSAqKmhvcsOhcmlvKio6IDE4OjAwIC0gMjA6MDANCi0gKipyZWN1cnNvcyoqOiAgIA0KPGEgaHJlZj0iaHR0cHM6Ly9jb25mZXJlbmNpYXdlYi5ybnAuYnIvd2ViY29uZi9yZW5hdGEtbHVjaWEtbWFnYWxoYWVzLWRlLW9saXZlaXJhIiB0YXJnZXQ9Il9ibGFuayI+U2FsYSBkZSBjb25mZXLDqm5jaWEgd2ViY29uZmVyw6puY2lhIFJOUDwvYT4NCg0KIyMjIENvbXBldMOqbmNpYXMgYSBzZXJlbSBkZXNlbnZvbHZpZGFzDQpBbyBmaW5hbCBkZXNzZSBtaW5pLWN1cnNvLCBvcyBhbHVub3MgZGV2ZXLDo28gc2VyIGNhcGF6ZXMgZGUgZGlzY3V0aXIgb3Mgc2VndWludGVzIGNvbmNlaXRvczogICANCg0KLSBVcmJhbml6YcOnw6NvICAgDQotIENpZGFkZXMgLSBkZWZpbmnDp8OjbyBlIG9yaWdlbSAgIA0KLSBDaWRhZGUgbmEgcmVnacOjbyAgIA0KLSBQb3Npw6fDo28gICANCiAgICAtIEZ1bsOnw6NvICAgDQogICAgLSBUaXBvbG9naWFzICAgDQogICAgLSBIaWVyYXJxdWlhcyAgIA0KICAgIC0gQ2VudHJhbGlkYWRlIGUgcmVkZXMgdXJiYW5hcyAgIA0KLSBDaWRhZGUgZSBhcyByZWxhw6fDtWVzIGludHJhdXJiYW5hcyAgIA0KICAgIC0gU8OtdGlvICAgDQogICAgLSBFc3RydXR1cmEgbW9yZm9sw7NnaWNvIGZ1bmNpb25hbCAgIA0KLSBTdWJzaXN0ZW1hcyB1cmJhbm9zICAgDQogICAgLSBUcmFuc3BvcnRlcyAgIA0KICAgIC0gVXNvIGRvIHNvbG8gICANCiAgICAtIEZ1bsOnw7Vlcy9hdGl2aWRhZGVzDQogICANCg0KIyMjIyAxLiBDaWRhZGVzOiBkZWZpbmnDp8OjbyAgIA0KT3MgYWx1bm9zIGRldmVyw6NvIHJlYWxpemFyIGFzIGF0aXZpZGFkZXMgZGlzcG9uw612ZWlzIG5vcyBzbGlkZXMgYWJhaXhvIGUgZXhwbG9yYXIgYSBkb2N1bWVudGHDp8OjbyBzdWdlcmlkYSBhbnRlcyBkbyBub3NzbyBlbmNvbnRybyB2aXJ0dWFsLiANCg0KYGBge3IgLCBlY2hvPUZBTFNFfQ0Ka25pdHI6OmluY2x1ZGVfdXJsKCJodHRwczovL3JldGFvbGl2ZWlyYS5naXRodWIuaW8vcHJvY191cmJhbm9zX2FjdGl2ZS9pbmRleCIpDQpgYGANCg0KDQpBYmFpeG8gc2VndWUgbyBtYXRlcmlhbCBxdWUgc2Vyw6EgZXhwbG9yYWRvIGFvIGxvbmdvIGRhcyBhdWxhcy4gDQpgYGB7ciAsIGVjaG89RkFMU0V9DQprbml0cjo6aW5jbHVkZV91cmwoImh0dHBzOi8vcmV0YW9saXZlaXJhLmdpdGh1Yi5pby9wcm9jX3VyYmFub3NfY2xhc3MvIzEiKQ0KYGBgDQoNCiMjIyMgVXJiYW5pemHDp8Ojbw0KDQojIyMjIERpZmVyZW7Dp2FzIGVudHJlIHVyYmFubyBlIHJ1cmFsDQoNCiMjIyMgQ2lkYWRlIG5hIHJlZ2nDo28NCg0KIyMjIyBSZWxhw6fDtWVzIGludHJhdXJiYW5hcw0KDQojIyMjIE1vcmZvbG9naWEgZSBmdW7Dp8OjbyB1cmJhbmENCg0KLS0tLQ0KICAgDQojIyAzOiBNw6l0b2RvcyBFY29ub23DqXRyaWNvcyAobcOzZHVsbyBJKXstfQ0KDQojIyMjIEFnZW5kYQ0KLSAqKmRhdGEqKjogMjkgZSAzMCBkZSBqdW5obw0KLSAqKmhvcsOhcmlvKio6IDE4OjAwIC0gMjA6MDANCi0gKipyZWN1cnNvcyoqOiAgIA0KPGEgaHJlZj0iaHR0cHM6Ly9jb25mZXJlbmNpYXdlYi5ybnAuYnIvd2ViY29uZi9yZW5hdGEtbHVjaWEtbWFnYWxoYWVzLWRlLW9saXZlaXJhIiB0YXJnZXQ9Il9ibGFuayI+U2FsYSBkZSBjb25mZXLDqm5jaWEgd2ViY29uZmVyw6puY2lhIFJOUDwvYT4NCiAgIA0KICAgDQpodHRwczovL3Rvd2FyZHNkYXRhc2NpZW5jZS5jb20vZGVzY3JpcHRpdmUtc3RhdGlzdGljcy1pbi1yLThlMWNhZDIwYmYzYQ0KLS0tLQ0KICAgDQojIyA0OiBBbsOhbGlzZSBFc3BhY2lhbCAobcOzZHVsbyBJKSB7LX0NCg0KOjo6IHsjYm94MSAuZ3JlZW4tYm94fQ0KTyBxdWUgZGlmZXJlbmNpYSBkYWRvcyBlc3BhY2lhaXMgZSBuw6NvIGVzcGFjaWFpcz8gICAgDQpPIHF1ZSBleGlzdGUgZW0gdW1hIGRldGVybWluYWRhIGxvY2FsaXphw6fDo28/ICAgDQpPbmRlIHBvc3NvIGVuY29udHJhciB1bSBkZXRlcm1pbmFkbyBvYmpldG8/ICAgDQpPIHF1ZSBtdWRvdSBhbyBsb25nbyBkbyB0ZW1wbz8gICANClF1YWwgbyBtZWxob3IgY2FtaW5obz8gICANCkNvbW8gb3Mgb2JqZXRvcyBzw6NvIGRpc3RyaWJ1w61kb3Mgbm8gZXNwYcOnbz8gICANCkNvbW8gYXMgY29uZGnDp8O1ZXMgc2Vyw6NvIGFsdGVyYWRhIG5vIGZ1dHVybz8gICANCjo6Og0KDQojIyMjIEFnZW5kYQ0KLSAqKmRhdGEqKjogMDEgZSAwMiBkZSBqdWxobw0KLSAqKmhvcsOhcmlvKio6IDE4OjAwIC0gMjA6MDANCi0gKipyZWN1cnNvcyoqOiAgIA0KPGEgaHJlZj0iaHR0cHM6Ly9jb25mZXJlbmNpYXdlYi5ybnAuYnIvd2ViY29uZi9yZW5hdGEtbHVjaWEtbWFnYWxoYWVzLWRlLW9saXZlaXJhIiB0YXJnZXQ9Il9ibGFuayI+U2FsYSBkZSBjb25mZXLDqm5jaWEgd2ViY29uZmVyw6puY2lhIFJOUDwvYT4NCiAgIA0KDQojIyMgQ29tcGV0w6puY2lhcyBhIHNlcmVtIGRlc2Vudm9sdmlkYXMNCkFvIGZpbmFsIGRlc3NlIG1pbmktY3Vyc28sIG9zIGFsdW5vcyBkZXZlcsOjbyBzZXIgY2FwYXplcyBkZSBkaXNjdXRpciBvcyBzZWd1aW50ZXMgY29uY2VpdG9zOg0KLSBBbWJpZW50ZSBlIGZ1bmNpb25hbGlkYWRlcyBiw6FzaWNhcyBkbyBRR0lTDQotIENvbXBsZW1lbnRvczogaW5zdGFsYcOnw6NvIGUgcGFyYSBxdWUgc2VydmVtDQotIHRpcG9zIGRlIGFycXVpdm8NCiAgLSBzaGFwZWZpbGVzDQotIE11ZGFuw6dhIGRlIGRhdHVtIGUgc2lzdGVtYXMgZGUgY29vcmRlbmFkYXMgIA0KLSBUYWJlbGEgZGUgYXRyaWJ1dG9zDQogIC0gU2VsZcOnw6NvIHBvciBhdHJpYnV0bw0KICAtIEpvaW4NCiAgLSANCg0KIyMjIyBQZW5zYW1lbnRvIGVzcGFjaWFsDQoNCkVuY29udHJhciBzaWduaWZpY2FkbyBlbSBmb3JtYXMsIHRhbWFuaG8sIG9yaWVudGHDp8OjbywgbG9jYWxpemHDp8OjbywgZGlyZcOnw6NvIG91IHRyYWpldMOzcmlhIGRlIG9iamV0b3MsIHByb2Nlc3NvcyBlIGZlbsO0bWVub3MNCg0KRW5jb250cmFyIHNpZ25pZmljYWRvIG5hIGxvY2FsaXphw6fDo28gcmVsYXRpdmEgZGUgbcO6bHRpcGxvcyBvYmpldG9zLCBwcm9jZXNzb3MgZSBmZW7DtG1lbm9zLg0KDQojIyMjIENhcnRvZ3JhZmlhIGUgR0lTDQogIA0KICANCiMjIyMgQW1iaWVudGUgZSBkYWRvcyAoc2hhcGVmaWxlcykNCg0KLSBNw7NkdWxvIDI6IEluZm9ybWHDp8O1ZXMgZ2VvZ3LDoWZpY2FzIC0gZXN0cnV0dXJhIGRlIGRhZG9zLCBkYWRvcyB2ZXRvcmlhcyBlIGRhZG9zIG1hdHJpY2lhaXMNCg0KLSBNw7NkdWxvIDM6IFJlcHJlc2VudGHDp8OjbyBkZSBmZW7DtG1lbm9zIGVzcGFjaWFpcw0KIyMjIyBHZW9jb2RpZmljYcOnw6NvDQoxLglJbnN0YWxlbSBvIGNvbXBsZW1lbnRvIE1NUUdJUw0KMi4JQWJyYW0gbyBhcnF1aXZvIGVtIC54bHN4LiBJbmNsdWEgcXVhdHJvIGNvbHVuYXMgY29tIG9zIHNlZ3VpbnRlcyBub21lcyBwYXJhIGNhZGEgYXRyaWJ1dG86DQogIGEuCUFERFJFU1Mg4oCTIEVuZGVyZcOnbyBjb25jYXRlbmFkbyBubyBmb3JtYXRvOiBSVUEgR1LDg08gTU9HT0wgNTM0LCBTSU9ODQogIGIuCUNJVFkg4oCTIEJlbG8gSG9yaXpvbnRlDQogIGMuCVNUQVRFIOKAkyBNaW5hcyBHZXJhaXMNCiAgZC4JQ09VTlRSWSAtIEJyYXppbA0KMy4JIFNhbHZlIG8gYXJxdWl2byBjb21vIC5jc3YgVVRGOA0KNC4JRmHDp2EgYSBnZW9jb2RpZmljYcOnw6NvIG5vIFFHSVMNCiAgYS4JTU1RR0lTID4+IEdlb2NvZGUgPj4gR2VvY29kZSBDVlMgd2l0aCB3ZWIgc2VydmljZQ0KICBiLglVdGlsaXplIG8gd2ViIHNlcnZpY2UgZG8gT3BlblN0cmVldE1hcA0KICBjLglFc2NvbGhhIGxvY2FpcyBwYXJhIHNhbHZhciBvIHNoYXBlZmlsZSBlIG8gY3ZzIChsaXN0YSBkZSBuw6NvIGVuY29udHJhZG9zKSBmb3JhIGRvIGRpcmV0w7NyaW8gZGUgc2lzdGVtYQ0KDQoNCiMjIyMgU2lzdGVtYXMgZGUgY29vcmRlbmFkYSBlIHJlcHJlc2VudGHDp8OjbyBlc3BhY2lhbA0KPGlmcmFtZSB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgc3JjPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9ZVzhsd244TDZyQSIgZnJhbWVib3JkZXI9IjAiIGFsbG93PSJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg0KDQojIyMjIERhZG9zIGVzcGFjaWFpczogY2xhc3NpZmljYcOnw6NvLCBlc3RydXR1cmEgZSBpbnRlcm9wZXJhYmlsaWRhZGUsIGdlb2NvZGlmaWNhw6fDo28uIA0KDQoNCiMjIyMgTWFwYXMgdGVtw6F0aWNvcw0KDQoNCiMjIyMgRXNjb2xoYSBkZSB1bmlkYWRlcyBlc3BhY2lhaXMgZSBkZSBmb3JtYSBkZSByZXByZXNlbnRhw6fDo28gZGEgaW5mb3JtYcOnw6NvIGVzcGFjaWFsDQoNCg0KDQotLS0tDQogICANCiMjIDU6IEFuw6FsaXNlIGVzcGFjaWFsIChtw7NkdWxvIElJKSB7LX0NCg0KOjo6IHsjYm94MSAuZ3JlZW4tYm94fQ0K4oCcTm9zc2EgZXhpc3TDqm5jaWEgbm8gdGVtcG8gbm9zIMOpIGRldGVybWluYWRhLCBtYXMgdGVtb3MgYW1wbGEgbGliZXJkYWRlIGRlIGVzY29saGEgZGUgbm9zc2EgbG9jYWxpemHDp8OjbywgcXVlIMOpIGluZmx1ZW5jaWFkYSwgZW1ib3JhIG7Do28gZGUgdG9kbywgcGVsbyBub3NzbyBsdWdhciBkZSBvcmlnZW0uIEVuY29udHJhciBhIGxvY2FsaXphw6fDo28gY29ycmV0YSDDqSBlc3NlbmNpYWwgcGFyYSB1bWEgdmlkYSBkZSBzdWNlc3NvLCB0YW1iw6ltIHBhcmEgdW0gZW1wcmVlbmRpbWVudG8gZGUgc3VjZXNzbyBlIHBhcmEgdW0gYXNzZW50YW1lbnRvIGR1cmFkb3VybyDigJMgZW0gc3VtYSwgcGFyYSBhIHNvYnJldml2w6puY2lhIGRvIGdydXBvLiBBZGljaW9uYWxtZW50ZSwgdW1hIGxvY2FsaXphw6fDo28gYWRlcXVhZGEgdGVtIHF1ZSBzZXIgYSBsb2NhbGl6YcOnw6NvIGRvcyBhY29udGVjaW1lbnRvcyBjZXJ0b3MuIFsuLi5dIiAoTMO2c2NoLCAxOTU0LCBwLiAzKQ0KOjo6DQoNCg0KIyMjIyBBZ2VuZGENCi0gKipkYXRhKio6IDAzIGUgMDYgZGUganVsaG8NCi0gKipob3LDoXJpbyoqOiAxODowMCAtIDIwOjAwDQotICoqcmVjdXJzb3MqKjogICANCjxhIGhyZWY9Imh0dHBzOi8vY29uZmVyZW5jaWF3ZWIucm5wLmJyL3dlYmNvbmYvcmVuYXRhLWx1Y2lhLW1hZ2FsaGFlcy1kZS1vbGl2ZWlyYSIgdGFyZ2V0PSJfYmxhbmsiPlNhbGEgZGUgY29uZmVyw6puY2lhIHdlYmNvbmZlcsOqbmNpYSBSTlA8L2E+DQogIA0KDQogICANCiMjIyBDb21wZXTDqm5jaWFzIGEgc2VyZW0gYWRxdWlyaWRhcw0KLSBFbnRlbmRlciBvIHBhcGVsIGRvIGVzdHVkbyBnZW9ncsOhZmljbyBkYXMgY2lkYWRlcyBuYXMgY29uZXjDtWVzIGludHJhIGUgaW50ZXJ1cmJhbmFzLg0KLSBDYXBhY2lkYWRlIGFuYWzDrXRpY2EgcGFyYSBkZWZpbmnDp8OjbyBkZSB1bmlkYWRlcyBlc3BhY2lhaXMgZSDDoXJlYXMgZGUgaW5mbHXDqm5jaWEuDQogIC0gTcOpdG9kb3MgZGUgZGV0ZXJtaW5hw6fDo28gZGUgw6FyZWFzIGRlIGluZmx1w6puY2lhDQogICAgLSBDb2JlcnR1cmEgZXNwYWNpYWwNCiAgICAtIFZvcm9ub2kNCi0gRXN0YXTDrXN0aWNhIGVzcGFjaWFsIGRlc2NyaXRpdmENCi0gQ8OhbGN1bG8gZGUgaW5kaWNhZG9yZXMgZGUgcGFkcsO1ZXMgZGUgdXNvIGRvIHNvbG8NCi0gTWVkaWRhcyBkZSBkaXN0w6JuY2lhIGVtIHJlZGUNCi0gTWVkaWRhcyBkZSBjZW50cmFsaWRhZGUgZGUgcmVkZQ0KDQoNCiMjIyMgUmVmbGV4w6NvDQoNCg0KIyMjIyBFc2NhbGEgZSBlc3RydXR1cmFzIGVzcGFjaWFpcyB1cmJhbmFzDQojIyMjIEFuw6FsaXNlIGVzcGFjaWFsOiBmdW5kYW1lbnRvcyBlIHJlbGV2w6JuY2lhDQojIyMjIEFuw6FsaXNlIGVzcGFjaWFsOiBhcGxpY2HDp8O1ZXMgLSBkZXRlcm1pbmHDp8OjbyBkZSB1bmlkYWRlcyBlc3BhY2lhaXMgZSDDoXJlYSBkZSBpbmZsdcOqbmNpYQ0KIyMjIyBQcm9jZXNzbyBkZWNpc8OzcmlvIHBvciBtZWlvIGRlIGZlcnJhbWVudGFzIGRlIGdlb3Byb2Nlc3NhbWVudG8gcGFyYSBkYWRvcyB2ZXRvcmlhaXMNCiMjIyMgUHJvY2Vzc28gZGVjaXPDs3Jpbzogc3VpdGFiaWxpdHkgYW5hbHlzaXMNCg0KLS0tLQ0KICAgDQojIyA2OiBNw6l0b2RvcyBFY29ub23DqXRyaWNvcyAobcOzZHVsbyBJSSkgey19DQojIyMjIEFnZW5kYQ0KLSAqKmRhdGEqKjogMDcgZSAwOCBkZSBqdWxobw0KLSAqKmhvcsOhcmlvKio6IDE4OjAwIC0gMjA6MDANCi0gKipyZWN1cnNvcyoqOiAgIA0KPGEgaHJlZj0iaHR0cHM6Ly9jb25mZXJlbmNpYXdlYi5ybnAuYnIvd2ViY29uZi9yZW5hdGEtbHVjaWEtbWFnYWxoYWVzLWRlLW9saXZlaXJhIiB0YXJnZXQ9Il9ibGFuayI+U2FsYSBkZSBjb25mZXLDqm5jaWEgd2ViY29uZmVyw6puY2lhIFJOUDwvYT4NCiAgDQoNCg0KICAgDQogICANCg0KLS0tLQ0KICAgDQojIFByb2pldG8gey19ICAgDQojIyMgVGVtYXMgICANClByb3Bvc2nDp8OjbyBkZSBwcm9qZXRvcyBkZSBwZXNxdWlzYSBhIHNlcmVtIGRlc2Vudm9sdmlkb3MgY29tbyBwcmluY2lwYWwgZWxlbWVudG8gZGUgYXZhbGnDp8OjbyBkYSBkaXNjaXBsaW5hOiAgIA0KDQppLglHZW9tYXJrZXRpbmcgZSBjb21wb3J0YW1lbnRvIGRvIGNvbnN1bWlkb3INCiAgICBhLglJZGVudGlmaWNhciB1bWEgYXRpdmlkYWRlIGVjb27DtG1pY2EgKHByb2R1dG8gb3Ugc2VydmnDp28pIHBhcmEgYXZhbGlhw6fDo28gZGUgbG9jYWxpemHDp8OjbyBlIGNvbmNvcnLDqm5jaWEgZXNwYWNpYWwgICAgIA0KICAgICAgICAgICANCiAgICAgICAgDQppaS4JQW7DoWxpc2UgZGEgUmVsYcOnw6NvIGVudHJlIGEgUHJlY2FyaWVkYWRlIEhhYml0YWNpb25hbCBlIFJlbmRhIG5hIFJNQkggICANCiAgICBhLglJZGVudGlmaWNhciB1bWEgdW5pZGFkZSBlc3BhY2lhbCBwYXJhIG9idGVuw6fDo28gZG9zIGRhZG9zICAgDQogICAgYi4JRGVmaW5pciwgw6AgbHV6IGRlIHVtYSByZXZpc8OjbyBiaWJsaW9ncsOhZmljYSwgY29tbyBkZWZpbmlyIHByZWNhcmllZGFkZSBoYWJpdGFjaW9uYWwgZSBxdWFpcyBhcyBpbmZvcm1hw6fDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHF1ZSBzZWphIHBvc3PDrXZlbCB0cmF0YXIgZXNzYSB0ZW3DoXRpY2EgKERvbWljw61saW9zIHNlbSBJbHVtaW5hw6fDo28gUMO6YmxpY2E7IERvbWljw61saW9zIHNlbSBTYW5pdMOhcmlvOyBEb21pY8OtbGlvcyBzZW0gQ29sZXRhIGRlIExpeG87IERvbWljw61saW9zIHNlbSBFbmVyZ2lhIEVsw6l0cmljYTsgRG9taWPDrWxpb3Mgc2VtIFBhdmltZW50YcOnw6NvOyBEb21pY8OtbGlvcyBzZW0gQnVlaXJvL0JvY2EgZGUgTG9ibzsgRG9taWPDrWxpb3MgY29tIEVzZ290byBhIGPDqXUgYWJlcnRvOyBEb21pY8OtbGlvcyBzZW0gYWJhc3RlY2ltZW50byBkZSDDoWd1YSBkYSBSZWRlIEdlcmFsLiAgICAgDQogICAgICAgICAgIA0KICAgICAgICAgICANCmlpaS4JUmVsYcOnw6NvIGVudHJlIFJlbmRhIGRhIFBvcHVsYcOnw6NvIGUgYSBvZmVydGEvdXNvIGRvIFRyYW5zcG9ydGUgZW0gQmVsbyBIb3Jpem9udGUgICANCiAgICBhLglJZGVudGlmaWNhciwgw6AgbHV6IGRhIHJldmlzw6NvIGJpYmxpb2dyw6FmaWNhLCBpbmRpY2Fkb3JlcyBkZSBvZmVydGEvdXNvIGRvIHRyYW5zcG9ydGUgcMO6YmxpY28gZGUgQmVsbyBIb3Jpem9udGUgZSBwZW5zYXIgbm9zIGluZGljYWRvcmVzIGUgZm9udGVzIGRlIGRhZG9zIHBhcmEgYSBpbmZvcm1hw6fDo28gc2VsZWNpb25hZGEuICAgIA0KICAgIGIuCUFuYWxpc2FyIHNlIG8gbW9kbyBkZSB1dGlsaXphw6fDo28gZG8gdHJhbnNwb3J0ZSBlIG8gdGVtcG8gZGUgdmlhZ2VtIGVzdMOhIHJlbGFjaW9uYWRvIGNvbSBhIHJlbmRhIGRhIHBvcHVsYcOnw6NvIGRvIE11bmljw61waW8gZGUgU8OjbyBQYXVsbyAgIA0KICAgIGMuCUFuYWxpc2FyIGRpZmVyZW50ZXMgcmVjb3J0ZXMgdGVtcG9yYWlzICAgIA0KDQogICAgICAgDQppdi4JSW5pcXVpZGFkZXMgbmEgUXVhbGlkYWRlIGRlIFZpZGEgbmEgUk1CSCBvdSBCSCAgIA0KICAgIGEuCUlkZW50aWZpY2FyIGF0cmlidXRvcyBlIGluZGljYWRvcmVzIHF1ZSByZWZsaXRhbSBxdWFsaWRhZGUgZGUgdmlkYSBlIGxldmFudGFyIHBvc3PDrXZlaXMgZm9udGVzIGRlIGRhZG9zLiAgICANCiAgICBiLglQZW5zYXIgZW0gaW5kaWNhZG9yZXMgZGUgZGVzaWd1YWxkYWRlIHBhcmEgdHJhdGFyIGEgcXVhbGlkYWRlIGRlIHZpZGEuICAgICAgDQoNCiAgICAgICAgDQp2LglJbmlxdWlkYWRlcyBxdWFudG8gw6Agc2VndXJhbsOnYSBuYSBjaWRhZGUg4oCTIFJNQkggb3UgQkggICANCiAgICBhLglFc2NvbGhlciBhdHJpYnV0b3MgZSBpbmRpY2Fkb3JlcyBxdWUgcmVmbGl0YW0gYSBzZWd1cmFuw6dhIHDDumJsaWNhLCBjb21vIFRheGEgZGUgRXN0dXBybzsgVGF4YSBkZSBGZW1pbmljw61kaW8uIFBlbnNlbSBxdWUgb3MgYXRyaWJ1dG9zIHBvZGVtIHNlciBlc3RyYXRpZmljYWRvcyBjb25mb3JtZSBhIHBvcHVsYcOnw6NvIHF1ZSBzb2ZyZXUgYSB2aW9sw6puY2lhIGUsIHBvcnRhbnRvLCBncnVwb3MgbWFpcyB2dWxuZXLDoXZlaXMgKG11bGhlcmVzLCBjcmlhbsOnYXMsIGlkb3NvcywgcG9wdWxhw6fDo28gZGUgYmFpeGEgcmVuZGEpLiAgICANCiAgICBiLglSZWxhY2lvbmFyIGNvbSBhbGd1bWFzIHZhcmnDoXZlaXMgZXhwbGljYXRpdmFzIGNvbW8gZWR1Y2HDp8OjbyBlIHJlbmRhLiAgIA0KICAgIGMuCVBlbnNhciBlbSBpbmRpY2Fkb3JlcyBkZSBkZXNpZ3VhbGRhZGUgcGFyYSB0cmF0YXIgYSBzZWd1cmFuw6dhIHDDumJsaWNhLiAgICAgIA0KDQogICAgICAgDQp2aS4JRGVzaWd1YWxkYWRlIGRlIHJlbmRhIGUgZGEgcXVhbGlkYWRlIGRlIHZpZGEgZSBhIGxvY2FsaXphw6fDo28gZGUgZ3J1cG9zIHJhY2lhaXMgZSDDqXRuaWNvcyBuYSBjaWRhZGUgICANCiAgICBhLglQZW5zZSBlbSBpbmRpY2Fkb3JlcyBjb21vIHJlbmRhLCBJREhNLCDDrW5kaWNlcyBkZSB2aW9sw6puY2lhIHBhcmEgZGlzY3V0aXIgYXMgcmVsYcOnw7VlcyBlbnRyZSBsb2NhaXMgZGUgbW9yYWRpYSBwYXJhIGRhIHBvcHVsYcOnw6NvIHBvciBlc3RyYXRvIGRlIHJhw6dhIGUgZXRuaWEgZSBpbmRpY2Fkb3JlcyBkZSByZW5kYSBlIHF1YWxpZGFkZSBkZSB2aWRhLiAgICAgICANCiAgIA0KICAgICAgIA0KdmlpLglGb29kIERlc2VydHMgICANCiAgICBhLglSZWxhY2lvbmFpcyBmYXRvcmVzIGNvbW8gcG9icmV6YSBlIG9iZXNpZGFkZSwgbG9jYWxpemHDp8OjbyBkZSBzdXBlcm1lcmNhZG9zIGUgdmFyZWpvIGRlIGFsaW1lbnRvcyBmcmVzY29zLCBkb2Vuw6dhcyByZWxhY2lvbmFkYXMgY29tIGEgZGlldGEgICAgDQogICAgYi4JQW7DoWxpc2UgZGEgZXN0cnV0dXJhIGVzcGFjaWFsIGUgZGEgYWNlc3NpYmlsaWRhZGUgYW9zIEZvb2QgU3lzdGVtcyBkYSBSTUJILiAgICAgDQoNCiAgIA0KdmlpaS4JQW7DoWxpc2UgZGEgZXZvbHXDp8OjbyBkb3Mgw61uZGljZXMgZGUgZ3JhdmlkZXogbmEgYWRvbGVzY8OqbmNpYSBlbSBCZWxvIEhvcml6b250ZSAgIA0KICAgIGEuCUlkZW50aWZpY2FyIHZhcmnDoXZlaXMgcXVlIHBvc3NhbSByZXByZXNlbnRhciBhIHBvcHVsYcOnw6NvIGNyw610aWNhIHBhcmEgZXN0ZSBlc3R1ZG8gKENlbnNvIDIwMTA7IElESE07IGVkdWNhw6fDo28pLiAgICANCiAgICBiLglFeHBsb3JhciBhIGxvY2FsaXphw6fDo28gZGUgcG9wdWxhw6fDo28gZm9ybWFkYSBwb3IgYWRvbGVzY2VudGVzIG11bGhlcmVzIGNvbSBmYWl4YSBldMOhcmlhIGVudHJlIDEwIGUgMTcgYW5vcyByZXNpZGVudGVzIG5vIGVzdGFkbyBlIE1pbmFzIEdlcmFpczsgICANCiAgICBjLglQb2RlLXNlIGVzdGFiZWxlY2VyIGNvcnJlbGHDp8OjbyBlbnRyZSByZW5kYSBtw6lkaWEgZG9taWNpbGlhciBlIGdyYXZpZGV6IHByZWNvY2U/ICAgDQogICAgZC4JQSBkaW1lbnPDo28gZWR1Y2HDp8OjbyBlc3TDo28gY29ycmVsYWNpb25hZGFzIGNvbSBhdW1lbnRvIG91IG1lc21vIHJlZHXDp8OjbyBkYSB0YXhhIGRlIGdyYXZpZGV6IG5hIGFkb2xlc2PDqm5jaWE/ICAgIA0KICAgICAgIA0KDQppeC4JRGVzaWd1YWxkYWRlIGRlIHJlbmRhIGVudHJlIE11bGhlcmVzIGUgSG9tZW5zIG5vIEVzdGFkbyBkZSBNaW5hcyBHZXJhaXMgZSBzdWEgcmVsYcOnw6NvIGNvbSBvIGdyYXUgZGUgdXJiYW5pemHDp8OjbyBlIG8gbsOtdmVsIGVkdWNhY2lvbmFsIGVkdWNhw6fDo2/NviAgIA0KICAgIGEuCUjDoSBkaWZlcmVuw6dhIGRlIHJlbmRhIGVudHJlIGfDqm5lcm9zIG5vIGVzdGFkbyBkZSBNaW5hcyBHZXJhaXM/IEjDoSBjb25jZW50cmHDp8OjbyBlc3BhY2lhbCBkZXNzYSBkZXNpZ3VhbGRhZGU/ICAgDQogICAgYi4JQXMgZGlmZXJlbsOnYXMgc8OjbyBtYWlvcmVzIG91IG1lbm9yZXMgbmFzIHJlZ2nDtWVzIG1ldHJvcG9saXRhbmFzPyAgICANCiAgICBjLglDb21vIG9zIGZhdG9yZXMgZGUgZXNjb2xhcmlkYWRlIGRhcyBtdWxoZXJlcywgw61uZGljZSBkZSBncmF2aWRleiBuYSBhZG9sZXNjw6puY2lhLCB0YXhhIGRlIGZlY3VuZGlkYWRlIGUgcHJvcG9yw6fDo28gbXVsaGVyZXMgcmVzcG9uc8OhdmVpcyBwZWxvIGRvbWljw61saW8sIElESCBlIFJlbmRhIHBlciBjYXBpdGEgbm8gbXVuaWPDrXBpbyBzZSByZWxhY2lvbmFtIGNvbSBhIHJlbmRhIG3DqWRpYSBkYXMgbXVsaGVyZXM/ICAgIA0KICAgIGQuCU8gZ3JhdSBkZSB1cmJhbml6YcOnw6NvIGRvIG11bmljw61waW8gaW50ZXJmZXJlIG5hIHJlbmRhIG3DqWRpYSBmZW1pbmluYT8gRSBtYXNjdWxpbmE/IE8gZ3JhdSBkZSBlc2NvbGFyaWRhZGUgaW50ZXJmZXJlIG5hIHJlbmRhIG3DqWRpYSBmZW1pbmluYSBkYSBtZXNtYSBmb3JtYSBxdWUgbmEgbWFzY3VsaW5hPyAgICAgICANCg0KIyMjIEdydXBvcw0KDQpPcyBhbHVub3MgZGV2ZXLDo28gc2Ugb3JnYW5pemFyIGVtIGdydXBvcyBkZSBhdMOpIDQgKHF1YXRybykgYWx1bm9zIHBhcmEgZGVzZW52b2x2aW1lbnRvIGRvcyBwcm9qZXRvcy4NCg0KIyMjIEVzdHJ1dHVyYSBtZXRvZG9sw7NnaWNhIGRvcyBwcm9qZXRvcyAgIA0KYS4JRGVmaW5pw6fDo28gZG8gcHJvYmxlbWEgZW0gaW52ZXN0aWdhw6fDo28gICANCmIuCUVsYWJvcmHDp8OjbyBkZSBoaXDDs3Rlc2VzICAgDQpjLglTZWxlw6fDo28gZSBmb250ZSBkZSBkYWRvcyBwYXJhIG9idGVuw6fDo28gZGUgdmFyacOhdmVpcyAgDQogICAgaS4JVW5pZGFkZSBlc3BhY2lhbCAgIA0KICAgIGlpLglDb21wb3Npw6fDo28gZGUgaW5kaWNhZG9yZXMgICANCmQuCUFuw6FsaXNlIGV4cGxvcmF0w7NyaWEgZGFzIHZhcmnDoXZlaXMgKFIpICAgDQplLglBbsOhbGlzZSBkYSByZWxhw6fDo28gZW50cmUgdmFyacOhdmVpcyAoUikgICANCiAgICBpLglNYXRyaXogZGUgY29ycmVsYcOnw6NvCSAgDQogICAgaWkuCVJlZ3Jlc3PDo28gbsOjbyBlc3BhY2lhbCAgIA0KZi4JTWFwYXMgcGFyYSByZXByZXNlbnRhw6fDo28gZGFzIHZhcmnDoXZlaXMgbm8gcmVjb3J0ZSBlc3BhY2lhbCBkZWZpbmlkbyAoUUdJUykgICANCmcuCUFuw6FsaXNlIGVzcGFjaWFsIChRR0lTKSAgIA0KICAgIGkuCUF1dG9jb3JyZWxhw6fDo28gZXNwYWNpYWwgIA0KICAgIGlpLglDbHVzdGVyICAgDQogICAgaWlpLglPdXRyYXMgdMOpY25pY2FzIHF1ZSBzZWphbSByZWxldmFudGVzICAgDQpoLglFY29ub21ldHJpYSBlc3BhY2lhbCAgIA0KaS4gIFPDrW50ZXNlIGUgY29uc2lkZXJhw6fDtWVzIGdlcmFpcyAgIA0KDQoNCiMjIyBFbnRyZWdhcyBkbyBwcm9qZXRvDQoNCkRhdGF8ICBFdGFwYQ0KLS0tLXwtLS0tLS0tDQoyOS8wNnxEZWZpbmnDp8OjbyBkbyBwcm9ibGVtYSBlbSBpbnZlc3RpZ2HDp8OjbywgRWxhYm9yYcOnw6NvIGRlIGhpcMOzdGVzZXMgZSBTZWxlw6fDo28gZSBmb250ZSBkZSBkYWRvcyBwYXJhIG9idGVuw6fDo28gZGUgdmFyacOhdmVpcyAgDQowMi8wN3xBbsOhbGlzZSBleHBsb3JhdMOzcmlhIGRhcyB2YXJpw6F2ZWlzIGUgYW7DoWxpc2UgZGFzIHJlbGHDp8O1ZXMgZW50cmUgdmFyacOhdmVpcyAoUikgICANCjA4LzA3fE1hcGFzIHBhcmEgcmVwcmVzZW50YcOnw6NvIGRhcyB2YXJpw6F2ZWlzIGUgYW7DoWxpc2UgZXNwYWNpYWwgbm8gcmVjb3J0ZSBlc3BhY2lhbCBkZWZpbmlkbyAoUUdJUykgICANCjEwLzA3fEVjb25vbWV0cmlhIGVzcGFjaWFsICAgDQoxMy8wN3xTw61udGVzZSwgY29uc2lkZXJhw6fDtWVzIGdlcmFpcyBlIGFwcmVzZW50YcOnw6NvIGRvIA0KDQoNCkFzIGVudHJlZ2FzIGRldmVyw6NvIHNlciBmZWl0YXMgcG9yID8/Pz8/Pz8/LiANCg0KDQojIyMgQ3Jvbm9ncmFtYSBkZSBzZcOnw7VlcyB2aXJ0dWFpcyBwYXJhIGFjb21wYW5oYW1lbnRvIGRvcyBwcm9qZXRvcyAtIGdydXBvcyBkZSBkaXNjdXNzw6NvDQotICoqUmVjdXJzb3MqKjogW1dlYmNvbmZlcsOqbmNpYSBSTlBdKGh0dHBzOi8vY29uZmVyZW5jaWF3ZWIucm5wLmJyL3dlYmNvbmYvcmVuYXRhLWx1Y2lhLW1hZ2FsaGFlcy1kZS1vbGl2ZWlyYSkNCiAgICANCkEgc2FsYSB2aXJ0dWFsIHNlcsOhIGFiZXJ0YSBjb25mb3JtZSBjcm9ub2dyYW1hIGNvbSBwcm9mZXNzb3JlcyBkaXNwb27DrXZlaXMgcGFyYSBlc2NsYXJlY2ltZW50b3MgZGUgZMO6dmlkYXMgZSBvcmllbnRhw6fDo28gcGFyYSBkZXNlbnZvbHZpbWVudG8gZG9zIHByb2pldG9zLiANCiAgICANCkRhdGF8QXRpdmlkYWRlDQotLS0tfC0tLS0tLS0tLQ0KMjYvMDZ8RW5jb250cm8gMSAtIDA4OjAwIMOgcyAxMjowMCAgIA0KMDMvMDd8RW5jb250cm8gMiAtIDA4OjAwIMOgcyAxMjowMCAgDQoxMC8wN3xFbmNvbnRybyAzIC0gMDg6MDAgw6BzIDEyOjAwICAgDQoNCi0tLS0NCiAgIA0KIyBTZW1pbsOhcmlvIGZpbmFsDQoxMy8wNyAtIDE4OjAwIMOgcyAyMTowMA0KDQotICoqUmVjdXJzb3MqKjogW1dlYmNvbmZlcsOqbmNpYSBSTlBdKGh0dHBzOi8vY29uZmVyZW5jaWF3ZWIucm5wLmJyL3dlYmNvbmYvcmVuYXRhLWx1Y2lhLW1hZ2FsaGFlcy1kZS1vbGl2ZWlyYSkgICANCg0KQSBhcHJlc2VudGHDp8OjbyBkbyBzZW1pbsOhcm8gZmluYWwgc2Vyw6EgY29tcG9zdGEgcG9yOiAgIA0KICAtIGFwcmVzZW50YcOnw6NvIGRlIGNhZGEgZ3J1cG8gLSBtw6F4aW1vIGRlIDE1IG1pbnV0b3MgICANCiAgLSBtZXNhIGRlIGRpc2N1c3PDo28gcGFyYSBmZWNoYW1lbnRvIGRhIGV4cGVyacOqbmNpYSBwcm9tb3ZpZGEgcGVsbyBwcm9qZXRvIGRlIGVuc2lubyAgIA0KICANCiMgQ29udGF0b3MNClJlbmF0YSBMw7pjaWEgTWFnYWxow6NlcyBkZSBPbGl2ZWlyYSAgIA0KUGF0cmljayBNZW5kZXMgZG9zIFNhbnRvcyAgIA0KTHVjw6lsaWEgVml2aWFuZSBSYWFkICAg