Este material tem como objetivo revisar conceitos introdutórios sobre Estatística e que são importantes para o curso de Econometria de Séries Temporais. Ele compreende os seguintes pontos:

  1. PROBABILIDADE

A teoria das probabilidades é o ramo da Matemática que cria, desenvolve e pesquisa modelos que podem ser utilizados para estudar experimentos ou fenômenos aleatórios.

Podemos definir a probabilidade como uma medida que quantifica a sua incerteza frente a um possível acontecimento futuro. O modelo utilizado para estudar um fenômeno aleatório pode variar em complexidade, mas todos eles possuem ingredientes básicos comuns. Eles são: experimento aleatório, espaço amostral e eventos.

Nesta seção vamos entender sobre experimento aleatório, espaço amostral e eventos. Além disso, como calcular a probabilidade clássica.

EXPERIMENTO ALEATÓRIO

Todo processo de realizar observações e obter dados é denominado experimento. O mesmo pode ser classificado em determinístico e aleatório. Basicamente, temos:

Como vimos, o resultado de um experimento aleatório depende do acaso, ou seja, mesmo repetido várias vezes sob condições semelhantes, o experimento apresenta resultados imprevisíveis. Assim, nosso objetivo é construir um modelo matemático que represente experimentos aleatórios e permita o cálculo de probabilidades.

ESPAÇO AMOSTRAL

A cada experimento aleatório correspondem, em geral, vários resultados possíveis. Por exemplo, ao lançarmos uma moeda, há dois resultados possíveis (ocorrer cara ou ocorrer coroa) enquanto para um dado há seis resultados possíveis (1, 2, 3, 4, 5, 6).

Ao conjunto formado por todos os possíveis e diferentes resultados de um experimento aleatório dá-se o nome de espaço amostral ou conjunto universo, representado por \(S\).

Os dois experimentos aleatórios citados anteriormente têm os seguintes espaços amostrais:

Outros dois exemplos são:

EVENTOS

Chamamos de evento qualquer subconjunto do espaço amostral \(S\) de um experimento aleatório. Assim, qualquer que seja \(E\), se \(E \subset S\) (\(E\) está contido em \(S\)), então \(E\) é um evento de \(S\). Alguns conceitos importantes:

No lançamento de um dado, onde \(S=\left\{1,2,3,4,5,6\right\}\), temos:

Um evento é sempre definido por uma sentença. Assim, os eventos acima podem ser definidos pelas sentenças:

DEFINIÇÃO CLÁSSICA DE PROBABILIDADE

Dado um experimento aleatório, sendo \(S\) o seu espaço amostral, vamos admitir que todos os elementos de \(S\) tenham a mesma chance de acontecer. Chamamos de probabilidade de um evento \(A\) (\(A\subset S\)) o número real \(P(A)\), tal que:

\[ P(A)=\frac{n(A)}{n(S)} \] onde \(n(A)\) é o número de elementos de \(A\) e \(n(S)\) é o número de elementos de \(S\).

Exemplos:

  1. Considerando o lançamento de uma moeda e o evento \(A\):obter cara, temos:

\[ \begin{aligned} S=\left\{Ca,Co \right\} \Rightarrow n\left(S\right)=2 \\ A = \left\{Ca \right\} \Rightarrow n\left(A\right)=1 \\ P\left(A\right)=\frac{1}{2}=50\% \end{aligned} \]

  1. Considerando o lançamento de um dado e o evento \(A\):obter um número par na face superior, temos:

\[ \begin{aligned} S=\left\{1,2,3,4,5,6 \right\} \Rightarrow n\left(S\right)=6 \\ A = \left\{2,4,6 \right\} \Rightarrow n\left(A\right)=3 \\ P\left(A\right)=\frac{3}{6}=\frac{1}{2}=50\% \end{aligned} \]

O resultado para o primeiro exemplo nos permite afirmar que, ao lançarmos uma moeda equilibrada, temos \(50\%\) de chance de que apareça cara na face superior.

REGRA DA ADIÇÃO EM PROBABILIDADE

A probabilidade da união entre dois eventos quaisquer, \(A\) e \(B\), é dada pela regra da adição de probabilidade, como segue:

\[ P\left(A \cup B\right) = P\left(A\right) + P\left(B\right) - P\left(A \cap B\right) \]

Alt text

Note que a regra da adição pode ser simplificada, se e somente se os eventos \(A\) e \(B\) forem mutuamente exclusivos, pois neste caso \(P\left(A \cap B\right) = \emptyset\):

\[ P\left(A \cup B\right) = P\left(A\right) + P\left(B\right) \]

Alt text

Exemplo: Considerando o lançamento de um dado e os eventos \(A\):obter um número par na face superior e \(B\):sair resultado inferior a 3, encontre \(P\left(A \cup B\right)\):

\[ \begin{aligned} S=\left\{1,2,3,4,5,6 \right\} \Rightarrow n\left(S\right)=6 \\ A = \left\{2,4,6 \right\} \Rightarrow n\left(A\right)=3 \\ B = \left\{1,2 \right\} \Rightarrow n\left(B\right)=2 \\ A \cap B = \left\{2 \right\} \Rightarrow n\left(A \cap B\right)=1 \\ P\left(A\right)=\frac{n\left(A\right)}{n\left(S\right)} = \frac{3}{6}=\frac{1}{2} \\ P\left(B\right)=\frac{n\left(B\right)}{n\left(S\right)} = \frac{2}{6}=\frac{1}{3} \\ P\left(A \cap B\right)=\frac{n\left(A \cap B\right)}{n\left(S\right)} = \frac{1}{6} \\ P\left(A \cup B\right) = P\left(A\right) + P\left(B\right) - P\left(A \cap B\right)=\frac{1}{2}+\frac{1}{3}-\frac{1}{6} = \frac{2}{3} \end{aligned} \]

PROBABILIDADE CONDICIONAL

Em muitas situações práticas, o fenômeno aleatório com o qual trabalhamos pode ser separado em etapas. A informação do que ocorreu em uma determinada etapa pode influenciar nas probabilidades de ocorrências das etapas sucessivas.

Nestes casos, dizemos que ganhamos informação, e podemos recalcular as probabilidades de interesse. Tais probabilidades recebem o nome de probabilidade condicional.

Para entender a ideia de probabilidade condicional, considere o seguinte exemplo:

DEFINIÇÃO: Para dois eventos \(A\) e \(B\) de um mesmo espaço amostral, o termo \(P\left(A | B\right)\) denota a probabilidade de \(A\) ocorrer, dado que \(B\) ocorreu, e é definido como:

\[ P\left(A | B\right) = \frac{P\left(A \cap B\right)}{P\left(B\right)} \]

da mesma forma que a probabilidade de \(B\) ocorrer, dado que \(A\) ocorreu, é definida como:

\[ P\left(B | A\right) = \frac{P\left(B \cap A\right)}{P\left(A\right)} \]

Exemplo: Considerando o lançamento de um dado e os evento \(A\): obter o número 4 na face superior e \(B\): obter um número par na face superior, encontre \(P\left(A | B\right)\):

\[ \begin{aligned} S=\left\{1,2,3,4,5,6 \right\} \Rightarrow n\left(S\right)=6 \\ A = \left\{4 \right\} \Rightarrow n\left(A\right)=1 \\ B = \left\{2,4,6 \right\} \Rightarrow n\left(B\right)=3 \\ A \cap B = \left\{4 \right\} \Rightarrow n\left(A \cap B\right)=1 \\ P\left(A\right)=\frac{n\left(A\right)}{n\left(S\right)} = \frac{1}{6} \\ P\left(B\right)=\frac{n\left(B\right)}{n\left(S\right)} = \frac{3}{6}=\frac{1}{2} \\ P\left(A \cap B\right)=\frac{n\left(A \cap B\right)}{n\left(S\right)} = \frac{1}{6} \\ P\left(A | B\right) = \frac{P\left(A \cap B\right)}{P\left(B\right)}=\frac{\frac{1}{6}}{\frac{1}{2}} = \frac{1}{3} \end{aligned} \]

INDEPENDÊNCIA DE EVENTOS

Existem algumas situações nas quais saber que o evento \(B\) ocorreu, não tem qualquer interferência na ocorrência ou não de \(A\). Nestes casos, podemos dizer os eventos são independentes.

Os eventos \(A\) e \(B\) são eventos independentes se: \(P\left(A | B\right)=P\left(A \right)\) e \(P\left(B | A\right)=P\left(B \right)\). Com isso, temos que:

\[ \begin{aligned} P\left(A \cap B\right) = P\left(A \right) \times P\left(A | B\right) = P\left(B \right) \times P\left(A \right) \\ P\left(B \cap A\right) = P\left(A \right) \times P\left(B | A\right) = P\left(A \right) \times P\left(B \right) \end{aligned} \]

Isso significa que se dois eventos são independentes, a probabilidade de ocorrência simultânea é o produto das probabilidades de cada evento.

  1. VARIÁVEIS ALEATÓRIAS

Frequentemente estamos interessados em resumir o resultado de um experimento aleatório através de um número dado que o espaço amostral é apenas uma descrição dos resultados possíveis do mesmo. Por exemplo, suponha que realizamos o experimento de lançar três moedas e observamos o número de caras que aparecem e que tal número (quantidade de caras) será armazenado em uma variável qualquer. Como não sabemos de ante-mão qual será o resultado, o valor da variável resultante também não é conhecido.

Assim, a função que confere um número real a cada resultado no espaço amostral do experimento aleatório é conhecida como variável aleatória, pois aleatoriamente pode assumir qualquer valor do espaço amostral.

Geralmente, uma variável aleatória é denotada por letra maiúscula, tal como \(X\) enquanto que após o experimento ser conduzido, o valor observado da variável aleatória é denotado por letra minúscula (por exemplo, \(x=2\) para o lançamento de 3 moedas e observar 2 caras).

As variáveis aleatórias podem ser discretas e contínuas. Dizemos que uma variável aleatória \(X\) é discreta se toma um número finito ou enumerável de valores. Por outro lado, a variável aleatória \(X\) será contínua se assume valores em um intervalo de números reais. Abaixo, exemplos de experimentos que geram variáveis aleatórias de cada tipo:

MOMENTOS

Os momentos são muito importantes em estatística para caracterizar distribuições de probabilidade. Por exemplo, a distribuição normal é caracterizada apenas pelo primeiro e pelo segundo momentos. O primeiro, segundo, terceiro e quarto momentos caracterizam a tendência central, dispersão, assimetria e curtose, respectivamente, de uma distribuição de probabilidade.

O k-ésimo momento não central de uma variável aleatória discreta notado por \({M}_{k}^{'}\), é definido por:

\[ {M}_{k}^{'}=\sum_{x}{{x}^{k}} p\left( x \right) \]

Assim, o primeiro momento não central de uma variável aleatória discreta será \({M}_{1}^{'}=\sum _{x}{{x}} p\left(x \right)\) que é a esperança de \(X\), notada por \(E\left[X \right]\).

O k-ésimo momento central de uma variável aleatória contínua notado por \({M}_{k}^{'}\), é definido por:

\[ {M}_{k}=\int _{\mathbb{R}}{{\left(x-E\left[x \right] \right)}^{k}f\left(x \right)dx} \] Assim, o segundo momento central de uma variável aleatória contínua será \({M}_{k}=\int _{\mathbb{R}}{{\left(x-E\left[x \right] \right)}^{2}f\left(x \right)dx}\) que é a variância de \(X\), notada por \(\sigma_{x}^{2}\).

  1. DISTRIBUIÇÕES DE PROBABILIDADE

Uma distribuição de probabilidade é um modelo matemático que relaciona um certo valor da variável aleatória em estudo com a sua probabilidade de ocorrência.

Nesta seção vamos estudar as principais distribuições de probabilidade contínuas (quando a variável aleatória que está sendo medida é expressa em uma escala contínua) e discretas (quando a variável aleatória que está sendo medida só pode assumir certos valores, como por exemplo valores inteiros). Além disso, vamos aprender como calcular a valor médio esperado e a variância de uma variável aleatória.

DISCRETAS

Suponha que temos o experimento aleatório de lançar um dado e observar qual o número da face superior. O espaço amostral pode ser expressado em uma variável aleatória discreta \(X\) que assume os valores \(1,2,3,4,5,6\) com a probabilidade \(\frac{1}{6}\). Abaixo, o gráfico da distribuição de probabilidade para a variável aleatória em análise. Observe que podemos obter a probabilidade de ocorrência de qualquer valor da variável aleatória e que ela é sempre a mesma, ou seja, \(\frac{1}{6}\).

Porém, nem sempre temos a facilidade de detalhar o espaço amostral de um experimento aleatório e especificar uma variável aleatória discreta para o mesmo. Em função disso, existem algumas distribuições de probabilidade discretas definidas a priori e que podemos usar para descrever uma variável aleatória discreta em análise.

Observe que neste caso, estamos assumindo que nossa variável aleatória discreta segue uma destas distribuições de probabilidade discreta. Na sequência, mostramos as principais distribuições de probabilidade discretas.

BERNOULLI

Na prática muitos experimentos admitem apenas dois resultados. Esses experimentos recebem o nome de Ensaios de Bernoulli. Por exemplo, o resultado de um exame médico para detecção de uma doença pode ser positivo ou negativo. Nestes casos, temos dois eventos mutuamente exclusivos que podemos denominar de sucesso e fracasso.

Assim, uma variável aleatória \(X\) de Bernoulli é aquela que assume apenas dois valores discretos:

\[ X=\begin{cases} 1~\text{se sucesso} \\ 0~\text{se fracasso} \end{cases} \] e a distribuição de probabilidade é dada por:

Para tais variáveis o valor esperado e a variância podem ser dados por:

\[ \begin{aligned} && E\left[ X \right] = p \\ && Var\left( X \right) = p\left( 1-p \right) \end{aligned} \] * Exemplo: um paciente, ao dar entrada na terapia intensiva, tem 25% de probabilidade de óbito (risco de morte). Se associamos \(p=0.25\), a probabilidade de sucesso (óbito) e \(1-p\) a probabilidade de fracasso (sem óbito), podemos criar uma variável aleatória discreta \(X\) que pode assumir apenas dois valores (\(x=0\) para fracasso e \(x=1\) para sucesso) e a distribuição de probabilidade pode ser desenhada no seguinte formato:

BINOMIAL

A distribuição binomial nada mais é que a generalização da distribuição de Bernoulli. Continuamos com um sucesso, com probabilidade \(p\), e um fracasso, com probabilidade \(1−p\), mas o experimento é repetido \(n\) vezes sendo estas independentes, ou seja, o resultado de uma repetição não é influenciado por outros resultados.

Para tanto, fazemos uso da seguinte fórmula:

\[ P\left( X=k \right) =\left( \begin{matrix} n \\ k \end{matrix} \right) { p }^{ k }{ \left( 1-p \right) }^{ n-k } \] onde:

  • \(n\): quantidade de repetições do experimento;
  • \(p\): probabilidade de sucesso;
  • \(1−p\): probabilidade de fracasso;
  • \(k\): quantidade de sucessos nas repetições;
  • \(\left( \begin{matrix} n \\ k \end{matrix} \right)\): representa o número de combinações de \(n\) elementos em grupos de \(k\) (quantidade de maneiras distintas de se obter o evento desejado), calculado como \(\left( \begin{matrix} n \\ k \end{matrix} \right) =\frac{n!}{k!\left(n-k \right)!}\)

Além disso, temos que o valor esperado e a variância serão:

\[ \begin{aligned} E\left[ X \right] =np \\ Var\left( X \right) =np\left( 1-p \right) \end{aligned} \]

Considere o exemplo anterior onde um paciente ao dar entrada na terapia intensiva tem 25% de probabilidade de óbito (risco de morte). Se 10 pacientes entrarem no CTI qual a probabilidade de óbito de 0 até 10 pacientes? É para este tipo de análise que podemos fazer uso da distribuição Binomial, como mostra o gráfico abaixo:

Outras aplicações para este tipo de variável aleatória são:

  • Número de itens defeituosos em \(n\) itens produzidos independentes
  • Amostra contaminada em \(n\) amostras independentes
  • Número de questões corretas em \(n\) questões respondidas independentes
POISSON

A distribuição de Poisson é adequada para descrever as probabilidades do número de ocorrências num intervalo contínuo (em geral tempo ou espaço). São exemplos de variáveis que podem ter como modelo a distribuição de Poisson:

  • Acidentes com automóveis em uma determinada estrada
  • Quantidade de pacientes que chegam num pronto socorro durante a madrugada

Note que a quantidade de valores possíveis que a variável aleatória pode assumir é infinita, entretanto enumerável. Além disso, observe que a variável aleatória é discreta (número de ocorrências), no entanto a unidade de medida é contínua (tempo, área).

Ainda, as falhas não são contáveis. Por exemplo, não é possível contar os acidentes que não ocorreram em um dia, nem tão pouco a quantidade de pacientes que não chegaram ao pronto socorro na madrugada.

A distribuição de Poisson fica completamente caracterizada por um único parâmetro \(\lambda\) que representa o número médio de ocorrências por unidade de tempo. A equação para calcular a probabilidade de \(k\) ocorrências num intervalo contínuo (em geral tempo ou espaço) é dada por:

\[ P\left(X=k\right)= \frac{e^{-\lambda}\lambda^{k}}{k!} \] onde:

  • \(e\): é a base do logaritmo natural;
  • \(k\): quantidade de ocorrências num intervalo contínuo;
  • \(k!\): é o fatorial de \(k\);
  • \(\lambda\): é um número real que representa a taxa de ocorrência. Por exemplo, se o evento ocorre a uma média de 4 minutos e estamos interessados no número de eventos que ocorrem num intervalo de 10 minutos, \(\lambda={10}/{4}=2.5\)

Além disso, temos que o valor esperado e a variância serão:

\[ \begin{aligned} E\left[X\right] =\lambda \\ Var\left(X\right) = \lambda \end{aligned} \]

  • Exemplo: O governo de uma ilha informou que durante 20 anos, 200 turistas faleceram (em média 10 turistas por ano). Qual a probabilidade de exatamente 5 turistas falecerem no próximo ano?

\[ \begin{aligned} &&& k =5~\text{(quantidade de turistas falecerem no intervalo de um ano)} \\ &&& \lambda =10~\text{(média de turistas que falecem no intervalo de um ano)} \\ && \\ &&& P\left(X=5\right)= \frac{e^{-10}10^{5}}{5!}=0,037=37\% \end{aligned} \] Como resultado, temos que a probabilidade de falecimento de exatamente 5 turistas no próximo ano é de \(3,5\%\). Agora, para diversos valores de \(k\) temos a seguinte distribuição de probabilidades:

CONTÍNUAS

Quando uma variável que está sendo medida é expressa em uma escala contínua, não se pode usar distribuições de probabilidaddes tais como Bernoulli, Binomial ou Poisson para obter probabilidades.

Imagine o ponteiro de um relógio. Uma vez que tenha sido posto a girar, o ponteiro pode parar em qualquer posição ao longo do cículo. Agora, imagine um círculo dividido em 8.000 partes iguais ao invés das 12 partes que tradicionalmente um relógio tem. Se cada posição constitui um ponto de parada tão provável quanto qualquer outra, somo levados à seguinte conclusão:

Como há tantos resultados possíveis, a probabilidade do ponteiro parar em qualquer valor particular é tão pequena que deve ser considerada aproximadamente zero.

Na verdade, temos ao menos 1 milhão de posições diferentes, de modo que a probabilidade do ponteito parar exatamente em uma delas seria de \(1/1.000.000 = 0.000001\)

Em face dessa peculiaridade, é realmente sem sentido falar-se da probabilidade de um resultado específico, tal como fizemos no estudo das distribuições discretas. Assim, a análise das variáveis contínuas tende a focalizar a probabilidade de uma variável aleatória tomar um valor num determinado intervalo (por exemplo, a probabilidade do ponteiro parar entre \(3\) ou \(4\)).

Distribuição Exponencial

De uma forma bastante resumida imagine uma variável aleatória de Poisson, onde temos a contagem do número de ocorrências de falhas em um intervalo. Suponha agora que estejamos interessados em verificar a probabilidade do tempo transcorrido entre duas ocorrências consecutivas de falhas. Essa última é considerada uma variável aleatória exponencial.

A distribuição exponencial é muito utilizada para modelar o tempo até que um evento se verifique. Por exemplo, o tempo entre falhas de equipamentos ou tempo entre a ocorrência de acidentes em uma rodovia.

Para tanto, usamos a fórmula:

\[ P\left(X>t\right) = \lambda e^{-\lambda t} \] onde:

  • \(\lambda\) representa a taxa de falha por unidade de tempo,
  • \(t\) é um tempo de falha

A partir dessa fórmula, podemos calcular a probabilidade de que o tempo antes da primeira ocorrência de falha seja maior que um dado tempo \(t\). Já a probabilidade de uma ocorrência em \(t\) ou antes de \(t\) é dada por:

\[ P\left(X \le t\right) = 1-e^{\lambda t} \] Além disso, temos que o valor esperado e a variância serão:

\[ \begin{aligned} E\left[X\right] = \frac{1}{\lambda} \\ Var\left(X\right) = \frac{1}{\lambda^2} \end{aligned} \] * Exemplo: Suponha que, em determinado período do dia, o tempo médio de atendimento em um caixa de banco seja de 5 minutos. Admitindo que o tempo para atendimento tenha distribuição exponencial, temos que a taxa de falha por minuto é de \(\lambda= \frac{1}{5}\). A partir disso, qual a probabilidade de um cliente esperar mais do que 5 minutos?

O gráfico abaixo apresenta a distribuição de probabilidades exponencial para \(\lambda= \frac{1}{5}\). Como estamos buscando a probabilidade de um cliente esperar mais do que 5 minutos, temos que fazer 1 menos a probabilidade de ele esperar até 5 minutos.

Distribuição Normal

A distribuição Normal ou gaussiana é a mais familiar das distribuições de probabilidade e uma das mais importantes em estatística. Muitas variáveis aleatórias podem ser descritas pela distribuição Normal.

A equação da curva Normal é especificada usando 2 parâmetros: a média \(\mu\) e o desvio padrão \(\sigma\). A média refere-se ao centro da distribuição e o desvio padrão ao espalhamento (ou achatamento) da curva. Para referência, a equação da curva é:

\[ f\left(x\right) = \frac{1}{\sqrt{2\pi \sigma^2}}exp \left\{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2 \right\},~~~-\infty<x<\infty~~\text{e}~\sigma>0 \]

Geralmente, quando dizemos que uma variável aleatória \(X\) segue uma distribuição Normal, podemos escrever \(X \sim N\left(\mu,\sigma^2\right)\). Além disso, temos que o valor esperado e a variância serão:

\[ \begin{aligned} E\left[X\right] = \mu \\ Var\left(X\right) = \sigma^2 \end{aligned} \] O gráfico abaixo mostra como mudar a média \(\mu\) e/ou variância \(\sigma^2\) impacta na forma da curva Normal.

Para o cálculo de probabilidade, usamos:

\[ P\left(a<X<b\right)=\int_{a}^{b}{\frac{1}{\sqrt{2\pi \sigma^2}}exp \left\{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2 \right\}dx} \]

Cabe notar que a integral da função densidade de probabilidade Normal não possui solução analítica, sendo neste caso o seu cálculo deve ser realizado por método numérico. Para sanar tal dificuldade a função pode ser padronizada com a substituição dos parâmetros por \(\mu=0\) e \(\sigma^2=1\). Essa abordagem é dada pela definição de uma nova variável aleatória \(Z\), chamada de variável aleatória Normal padronizada.

Alt

Distribuição Lognormal

Ao contrário da distribuição Normal e outras distribuições de probabilidade simétricas, em que as medidas de tendência central convergem para um mesmo valor, na distribuição Lognormal, moda, média e mediana apresentam localizações distintas.

A função densidade de probabilidade de uma variável aleatória \(X\) que segue uma distribuição Lognormal com média \(\mu\) e desvio \(\sigma\) é:

\[ f\left(x\right) = \frac{1}{\sqrt{2\pi \sigma^2}}exp \left\{-\frac{1}{2}\left(\frac{ln(x)-\mu}{\sigma}\right)^2 \right\},~~~-\infty<x<\infty~~\text{e}~\sigma>0 \]

Observe como o gráfico da distribuição se alterna na medida que temos valores diversos para

Distribuição t de Student

A distribuição t de Student é uma das distribuições mais utilizadas na estatística, com aplicações que vão desde a modelagem estatística até teste de hipóteses.

Uma variável aleatória contínua \(X\) tem distribuição t de Student com \(\upsilon\) graus de liberdade, denotada por \(t\left(\upsilon\right)\), se sua função de densidade de probabilidade for dada por:

\[ f\left(x\right)=\frac{1}{\sqrt{\upsilon \pi}}\frac{\Gamma\left(\frac{\upsilon+1}{2}\right) }{\Gamma \left(\frac{\upsilon}{2}\right)}\left(1+\frac{x^2}{\upsilon}\right)^{-\left(\frac{\upsilon+1}{2}\right)},~~~-\infty<x<\infty \] Na verdade, a distribuição t de Student é a divisão entre uma variável aleatória com distribuição Normal padronizada e uma variável aleatória com distribuição Qui-Quadrado. Além disso, temos que o valor esperado e a variância serão:

\[ \begin{aligned} E\left[X\right] = 0 \\ Var\left(X\right) = \frac{\upsilon}{\upsilon-2} \end{aligned} \] Observe que \(\upsilon >2\) para que a variância exista. Fazendo diversos valores para \(\upsilon\) percebemos que a densidade da distribuição t de Student se aproxima bastante de uma distribuição Normal padronizada (média nula e variância igual a 1) quando \(\upsilon\) é grande.

Distribuição de Cauchy

A distribuição de Cauchy tem sua importância em diversas áreas do conhecimento (física, matemática, finanças, …). Uma variável aleatória contínua \(X\) tem distribuição de Cauchy com parâmetros \(\alpha\) e \(\beta\) se sua função densidade de probabilidade for definida por:

\[ f\left(x\right) = \frac{1}{\pi\beta\left[1+\left[\frac{x-\alpha}{\beta}\right]^2\right]},~~~-\infty<x<\infty \] onde \(\alpha\) e \(\beta\) são os parâmetros de locação e escala, respectivamente.

O gráfico abaixo mostra como a densidade de probabilidade da distribuição Cauchy se comporta na medida que alteramos os valores dos seus parâmetros:

  1. VETORES ALEATÓRIOS

Para facilitar o entendimento sobre vetores aleatórios (também conhecidos como amostras aleatórias), vamos voltar ao exemplo de lançar um dado.

Porém, suponha que estamos lançando \(n\) dados não viciados. Isto significa que estamos interessados no resultado da variável aleatória \(Y_i\), \(i=1,...,n\) que representará os resultados para cada um dos \(n\) dados.

Uma vez que os resultados são selecionados aleatoriamente, eles são variáveis aleatórias por si só e suas realizações serão diferentes em cada vez que lançarmos os \(n\) dados. Além disso, cada observação é retirada aleatóriamente da mesma população (os números de \(1\) a \(6\)) com a mesma distribuição de probabilidades. Assim, \(Y_1\), \(Y_2\), …, \(Y_n\) são identicamente distribuídos.

Ainda, sabemos que os valores de cada \(Y_i\) não fornece qualquer informação sobre os resultados dos outros dados. Em nosso exemplo, encontrar \(6\) como a primeira observação em nossa amostra não altera a distribuição de \(Y_2\), …, \(Y_n\). Isto significa que todos \(Y_i\) são tabmém independemente distribuídos. Assim, \(Y_1\), …, \(Y_n\) são independente e identicamente distribuídos (iid)

REFERÊNCIAS

James, Barry R. 2011. Probabilidade Um Curso Em Nível Intermediário. Coleção Projeto Euclides.

Morettin, Pedro Alberto, and Wilton Oliveira BUSSAB. 2017. Estatística Básica. Editora Saraiva.

LS0tCnRpdGxlOiA8Y2VudGVyPiA8aDI+IDxiPlJldmlzw6NvIEVzdGF0w61zdGljYSA8L2I+IDwvaDI+IDwvY2VudGVyPiAKYXV0aG9yOiA8Y2VudGVyPiBIdWRzb24gQ2hhdmVzIENvc3RhIDwvY2VudGVyPgpncmFwaGljczogeWVzCmxpbmtjb2xvcjogYmx1ZQpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6CiAgICBmaWdfY2FwdGlvbjogeWVzCiAgICB0aGVtZTogY2VydWxlYW4KcmVmZXJlbmNlczoKLSBpZDogamFtZXMxOTk2cHJvYmFiaWxpZGFkZQogIHRpdGxlOiBQcm9iYWJpbGlkYWRlIHVtIGN1cnNvIGVtIG7DrXZlbCBpbnRlcm1lZGnDoXJpbwogIGF1dGhvcjoKICAtIGZhbWlseTogSmFtZXMKICAgIGdpdmVuOiBCYXJyeSBSCiAgcHVibGlzaGVyOiBDb2xlw6fDo28gUHJvamV0byBFdWNsaWRlcwogIHR5cGU6IGJvb2sKICBpc3N1ZWQ6CiAgICB5ZWFyOiAyMDExCi0gaWQ6IG1vcmV0dGluMjAxN2VzdGF0aXN0aWNhCiAgdGl0bGU6IEVzdGF0w61zdGljYSBCw6FzaWNhCiAgYXV0aG9yOgogIC0gZmFtaWx5OiBNb3JldHRpbgogICAgZ2l2ZW46IFBlZHJvIEFsYmVydG8KICAtIGZhbWlseTogQlVTU0FCCiAgICBnaXZlbjogV2lsdG9uIE9saXZlaXJhCiAgcHVibGlzaGVyOiBFZGl0b3JhIFNhcmFpdmEKICB0eXBlOiBib29rCiAgaXNzdWVkOgogICAgeWVhcjogMjAxNwpub2NpdGU6IHwgCiAgQGphbWVzMTk5NnByb2JhYmlsaWRhZGUsIEBtb3JldHRpbjIwMTdlc3RhdGlzdGljYQotLS0KCkVzdGUgbWF0ZXJpYWwgdGVtIGNvbW8gb2JqZXRpdm8gcmV2aXNhciBjb25jZWl0b3MgaW50cm9kdXTDs3Jpb3Mgc29icmUgKipFc3RhdMOtc3RpY2EqKiBlIHF1ZSBzw6NvIGltcG9ydGFudGVzIHBhcmEgbyBjdXJzbyBkZSBFY29ub21ldHJpYSBkZSBTw6lyaWVzIFRlbXBvcmFpcy4gRWxlIGNvbXByZWVuZGUgb3Mgc2VndWludGVzIHBvbnRvczoKCiogUHJvYmFiaWxpZGFkZSAKICAgICogRXhwZXJpbWVudG8gQWxlYXTDs3JpbwogICAgKiBFc3Bhw6dvIEFtb3N0cmFsCiAgICAqIEV2ZW50bwogICAgKiBQcm9iYWJpbGlkYWRlIENsw6Fzc2ljYQogICAgKiBSZWdyYSBkYSBhZGnDp8OjbyBlbSBwcm9iYWJpbGlkYWRlCiogVmFyacOhdmVpcyBBbGVhdMOzcmlhcyAKICAgICogRGlzY3JldGFzCiAgICAqIENvbnTDrW51YXMKKiBEaXN0cmlidWnDp8O1ZXMgZGUgUHJvYmFiaWxpZGFkZQogICAgKiBEaXNjcmV0YXMKICAgICogQ29udMOtbnVhcyAKKiBWZXRvcmVzIEFsZWF0w7NyaW9zCiAgICAqIERpc3RyaWJ1acOnw7VlcyBkZSBQcm9iYWJpbGlkYWRlIENvbmp1bnRhLCBNYXJnaW5hbCBlIENvbmRpY2lvbmFsCgpgYGB7ciwgZWNobz1GQUxTRX0KIyBQYWNvdGVzIG5lY2Vzc2FyaW9zCnN1cHByZXNzTWVzc2FnZXMocmVxdWlyZShxdWFudG1vZCkpCnN1cHByZXNzTWVzc2FnZXMocmVxdWlyZShEVCkpCnN1cHByZXNzTWVzc2FnZXMocmVxdWlyZShkcGx5cikpCnN1cHByZXNzTWVzc2FnZXMocmVxdWlyZShtYWdyaXR0cikpCnN1cHByZXNzTWVzc2FnZXMocmVxdWlyZShoaWdoY2hhcnRlcikpCnN1cHByZXNzTWVzc2FnZXMocmVxdWlyZShQZXJmb3JtYW5jZUFuYWx5dGljcykpCnN1cHByZXNzTWVzc2FnZXMocmVxdWlyZShrbml0cikpCnN1cHByZXNzTWVzc2FnZXMocmVxdWlyZShkaXNjcmV0ZVJWKSkKYGBgCgo8b2w+CjxsaT4gPGg0PiA8Yj4gUFJPQkFCSUxJREFERSA8L2I+IDwvaDI+IDwvbGk+Cjwvb2w+CgpBIHRlb3JpYSBkYXMgcHJvYmFiaWxpZGFkZXMgw6kgbyByYW1vIGRhIE1hdGVtw6F0aWNhIHF1ZSBjcmlhLCBkZXNlbnZvbHZlIGUgcGVzcXVpc2EgbW9kZWxvcyBxdWUgcG9kZW0gc2VyIHV0aWxpemFkb3MgcGFyYSBlc3R1ZGFyIGV4cGVyaW1lbnRvcyBvdSBmZW7DtG1lbm9zIGFsZWF0w7NyaW9zLiAgCgpQb2RlbW9zIGRlZmluaXIgYSBwcm9iYWJpbGlkYWRlIGNvbW8gdW1hIG1lZGlkYSBxdWUgcXVhbnRpZmljYSBhIHN1YSBpbmNlcnRlemEgZnJlbnRlIGEgdW0gcG9zc8OtdmVsIGFjb250ZWNpbWVudG8gZnV0dXJvLiBPIG1vZGVsbyB1dGlsaXphZG8gcGFyYSBlc3R1ZGFyIHVtIGZlbsO0bWVubyBhbGVhdMOzcmlvIHBvZGUgdmFyaWFyIGVtIGNvbXBsZXhpZGFkZSwgbWFzIHRvZG9zIGVsZXMgcG9zc3VlbSBpbmdyZWRpZW50ZXMgYsOhc2ljb3MgY29tdW5zLiBFbGVzIHPDo286ICoqZXhwZXJpbWVudG8gYWxlYXTDs3JpbywgZXNwYcOnbyBhbW9zdHJhbCBlIGV2ZW50b3MqKi4gCgpOZXN0YSBzZcOnw6NvIHZhbW9zIGVudGVuZGVyIHNvYnJlIGV4cGVyaW1lbnRvIGFsZWF0w7NyaW8sIGVzcGHDp28gYW1vc3RyYWwgZSBldmVudG9zLiBBbMOpbSBkaXNzbywgY29tbyBjYWxjdWxhciBhIHByb2JhYmlsaWRhZGUgY2zDoXNzaWNhLiAKCiMjIyMjICoqRVhQRVJJTUVOVE8gQUxFQVTDk1JJTyoqCgpUb2RvIHByb2Nlc3NvIGRlIHJlYWxpemFyIG9ic2VydmHDp8O1ZXMgZSBvYnRlciBkYWRvcyDDqSBkZW5vbWluYWRvIGV4cGVyaW1lbnRvLiBPIG1lc21vIHBvZGUgc2VyIGNsYXNzaWZpY2FkbyBlbSBkZXRlcm1pbsOtc3RpY28gZSBhbGVhdMOzcmlvLiBCYXNpY2FtZW50ZSwgdGVtb3M6IAoKICAqICoqRXhwZXJpbWVudG8gZGV0ZXJtaW7DrXN0aWNvOioqIHPDo28gYXF1ZWxlcyBjdWpvcyByZXN1bHRhZG9zIHBvZGVtIHNlciBkZXRlcm1pbmFkb3MgYW50ZXMgZGUgc3VhIHJlYWxpemHDp8Ojby4gUG9yIGV4ZW1wbG86IHF1YW50byB0ZW1wbyBsZXZhcsOhIHVtIGNhcnJvIHBhcmEgcGVyY29ycmVyIHVtIHRyYWpldG8gZGUgMjAwIGttIG51bWEgdmVsb2NpZGFkZSBtw6lkaWEgZGUgMTAwIGttL2g/IAogICogKipFeHBlcmltZW50byBBbGVhdMOzcmlvOioqIGVtIHF1YXNlIHRvZGFzIGFzIG9ic2VydmHDp8O1ZXMsIGVtIG1haW9yIG91IG1lbm9yIGdyYXUsIHZpc2x1bWJyYW1vcyBvIGFjYXNvLiBBc3NpbSwgZGEgYWZpcm1hw6fDo28g4oCcw6kgcHJvdsOhdmVsIHF1ZSBvIG1ldSB0aW1lIGdhbmhlIGEgcGFydGlkYSBkZSBob2pl4oCdIHBvZGUgcmVzdWx0YXI6IAogICAgICAqIFF1ZSwgYXBlc2FyIGRvIGZhdm9yaXRpc21vLCBlbGUgcGVyY2E7IAogICAgICAqIFF1ZSwgY29tbyBwZW5zYW1vcywgZWxlIGdhbmhlOyAKICAgICAgKiBRdWUgZW1wYXRlIAoKQ29tbyB2aW1vcywgbyByZXN1bHRhZG8gZGUgdW0gZXhwZXJpbWVudG8gYWxlYXTDs3JpbyBkZXBlbmRlIGRvIGFjYXNvLCBvdSBzZWphLCBtZXNtbyByZXBldGlkbyB2w6FyaWFzIHZlemVzIHNvYiBjb25kacOnw7VlcyBzZW1lbGhhbnRlcywgbyBleHBlcmltZW50byBhcHJlc2VudGEgcmVzdWx0YWRvcyBpbXByZXZpc8OtdmVpcy4gQXNzaW0sIG5vc3NvIG9iamV0aXZvIMOpIGNvbnN0cnVpciB1bSBtb2RlbG8gbWF0ZW3DoXRpY28gcXVlIHJlcHJlc2VudGUgZXhwZXJpbWVudG9zIGFsZWF0w7NyaW9zIGUgcGVybWl0YSBvIGPDoWxjdWxvIGRlIHByb2JhYmlsaWRhZGVzLiAKCiMjIyMjICoqRVNQQcOHTyBBTU9TVFJBTCoqCgpBIGNhZGEgZXhwZXJpbWVudG8gYWxlYXTDs3JpbyBjb3JyZXNwb25kZW0sIGVtIGdlcmFsLCB2w6FyaW9zIHJlc3VsdGFkb3MgcG9zc8OtdmVpcy4gUG9yIGV4ZW1wbG8sIGFvIGxhbsOnYXJtb3MgdW1hIG1vZWRhLCBow6EgZG9pcyByZXN1bHRhZG9zIHBvc3PDrXZlaXMgKG9jb3JyZXIgY2FyYSBvdSBvY29ycmVyIGNvcm9hKSBlbnF1YW50byBwYXJhIHVtIGRhZG8gaMOhIHNlaXMgcmVzdWx0YWRvcyBwb3Nzw612ZWlzICgxLCAyLCAzLCA0LCA1LCA2KS4gCgpBbyBjb25qdW50byBmb3JtYWRvIHBvciB0b2RvcyBvcyBwb3Nzw612ZWlzIGUgZGlmZXJlbnRlcyByZXN1bHRhZG9zIGRlIHVtIGV4cGVyaW1lbnRvIGFsZWF0w7NyaW8gZMOhLXNlIG8gbm9tZSBkZSAqKmVzcGHDp28gYW1vc3RyYWwgb3UgY29uanVudG8gdW5pdmVyc28qKiwgcmVwcmVzZW50YWRvIHBvciAkUyQuIAoKT3MgZG9pcyBleHBlcmltZW50b3MgYWxlYXTDs3Jpb3MgY2l0YWRvcyBhbnRlcmlvcm1lbnRlIHTDqm0gb3Mgc2VndWludGVzIGVzcGHDp29zIGFtb3N0cmFpczogCgogICogTGFuw6dhbWVudG8gZGUgdW1hIG1vZWRhOiAkUz1cbGVmdFx7Q2EsQ29ccmlnaHRcfSQ7CiAgKiBMYW7Dp2FtZW50byBkZSB1bSBkYWRvOiAkUz1cbGVmdFx7MSwyLDMsNCw1LDZccmlnaHRcfSQKCk91dHJvcyBkb2lzIGV4ZW1wbG9zIHPDo286IAogIAogICogRHVhcyBtb2VkYXM6ICRTPVxsZWZ0XHsoQ2EsQ28pLChDYSxDbyksKENvLENhKSwoQ28sQ28pXHJpZ2h0XH0kCiAgKiBEb2lzIGRhZG9zOiAkUz1cbGVmdFx7KDEsMSksKDEsMiksKDEsMyksKDEsNCksKDEsNSksKDEsNiksKDIsMSks4oCmLCg2LDYpXHJpZ2h0XH0kCiAKIyMjIyMgKipFVkVOVE9TKioKCkNoYW1hbW9zIGRlIGV2ZW50byBxdWFscXVlciBzdWJjb25qdW50byBkbyBlc3Bhw6dvIGFtb3N0cmFsICRTJCBkZSB1bSBleHBlcmltZW50byBhbGVhdMOzcmlvLiBBc3NpbSwgcXVhbHF1ZXIgcXVlIHNlamEgJEUkLCBzZSAkRSBcc3Vic2V0IFMkICgkRSQgZXN0w6EgY29udGlkbyBlbSAkUyQpLCBlbnTDo28gJEUkIMOpIHVtIGV2ZW50byBkZSAkUyQuIEFsZ3VucyBjb25jZWl0b3MgaW1wb3J0YW50ZXM6CgogICogU2UgJEU9UyQsICRFJCDDqSBjaGFtYWRvIGRlIGV2ZW50byBjZXJ0by4KICAqIFNlICRFPSBcZW1wdHlzZXQkLCAkRSQgw6kgY2hhbWFkbyBkZSBldmVudG8gaW1wb3Nzw612ZWwuIAoKTm8gbGFuw6dhbWVudG8gZGUgdW0gZGFkbywgb25kZSAkUz1cbGVmdFx7MSwyLDMsNCw1LDZccmlnaHRcfSQsIHRlbW9zOiAKCiAgKiAkQT1cbGVmdFx7Miw0LDZccmlnaHRcfSBcc3Vic2V0IFMkLiBMb2dvLCAkQSQgw6kgdW0gZXZlbnRvIGRlICRTJAogICogJEI9XGxlZnRcezEsMiwzLDQsNSw2XHJpZ2h0XH0gXHN1YnNldCBTJC4gTG9nbywgJEIkIMOpIHVtIGV2ZW50byBjZXJ0byBkZSAkUyQsIHBvaXMgJEI9UyQKICAqICRDPVxlbXB0eXNldCBcc3Vic2V0IFMkLiBMb2dvLCAkQyQgw6kgdW0gZXZlbnRvIGltcG9zc8OtdmVsIGRlICRTJAoKVW0gZXZlbnRvIMOpIHNlbXByZSBkZWZpbmlkbyBwb3IgdW1hIHNlbnRlbsOnYS4gQXNzaW0sIG9zIGV2ZW50b3MgYWNpbWEgcG9kZW0gc2VyIGRlZmluaWRvcyBwZWxhcyBzZW50ZW7Dp2FzOiAKCiAgKiAqT2J0ZXIgdW0gbsO6bWVybyBwYXIgbmEgZmFjZSBzdXBlcmlvciogCiAgKiAqT2J0ZXIgdW0gbsO6bWVybyBtZW5vciBvdSBpZ3VhbCBhIDYgbmEgZmFjZSBzdXBlcmlvciogCiAgKiAqT2J0ZXIgdW0gbsO6bWVybyBtYWlvciBxdWUgNiBuYSBmYWNlIHN1cGVyaW9yKiAKCiMjIyMjICoqREVGSU5Jw4fDg08gQ0zDgVNTSUNBIERFIFBST0JBQklMSURBREUqKgoKRGFkbyB1bSBleHBlcmltZW50byBhbGVhdMOzcmlvLCBzZW5kbyAkUyQgbyBzZXUgZXNwYcOnbyBhbW9zdHJhbCwgdmFtb3MgYWRtaXRpciBxdWUgdG9kb3Mgb3MgZWxlbWVudG9zIGRlICRTJCB0ZW5oYW0gYSBtZXNtYSBjaGFuY2UgZGUgYWNvbnRlY2VyLiBDaGFtYW1vcyBkZSBwcm9iYWJpbGlkYWRlIGRlIHVtIGV2ZW50byAkQSQgKCRBXHN1YnNldCBTJCkgbyBuw7ptZXJvIHJlYWwgJFAoQSkkLCB0YWwgcXVlOiAKCiQkClAoQSk9XGZyYWN7bihBKX17bihTKX0KJCQgCm9uZGUgJG4oQSkkIMOpIG8gbsO6bWVybyBkZSBlbGVtZW50b3MgZGUgJEEkIGUgJG4oUykkIMOpIG8gbsO6bWVybyBkZSBlbGVtZW50b3MgZGUgJFMkLiAKCioqRXhlbXBsb3M6KiogCgogIDEuIENvbnNpZGVyYW5kbyBvIGxhbsOnYW1lbnRvIGRlIHVtYSBtb2VkYSBlIG8gZXZlbnRvICRBJDoqb2J0ZXIgY2FyYSosIHRlbW9zOiAKCiQkClxiZWdpbnthbGlnbmVkfQpTPVxsZWZ0XHtDYSxDbyAgXHJpZ2h0XH0gXFJpZ2h0YXJyb3cgblxsZWZ0KFNccmlnaHQpPTIgXFwKQSA9IFxsZWZ0XHtDYSBccmlnaHRcfSBcUmlnaHRhcnJvdyBuXGxlZnQoQVxyaWdodCk9MSBcXApQXGxlZnQoQVxyaWdodCk9XGZyYWN7MX17Mn09NTBcJQpcZW5ke2FsaWduZWR9CiQkCiAgCiAgMi4gQ29uc2lkZXJhbmRvIG8gbGFuw6dhbWVudG8gZGUgdW0gZGFkbyBlIG8gZXZlbnRvICRBJDoqb2J0ZXIgdW0gbsO6bWVybyBwYXIgbmEgZmFjZSBzdXBlcmlvciosIHRlbW9zOiAKCiQkClxiZWdpbnthbGlnbmVkfQpTPVxsZWZ0XHsxLDIsMyw0LDUsNiAgXHJpZ2h0XH0gXFJpZ2h0YXJyb3cgblxsZWZ0KFNccmlnaHQpPTYgXFwKQSA9IFxsZWZ0XHsyLDQsNiBccmlnaHRcfSBcUmlnaHRhcnJvdyBuXGxlZnQoQVxyaWdodCk9MyBcXApQXGxlZnQoQVxyaWdodCk9XGZyYWN7M317Nn09XGZyYWN7MX17Mn09NTBcJQpcZW5ke2FsaWduZWR9CiQkCgpPIHJlc3VsdGFkbyBwYXJhIG8gcHJpbWVpcm8gZXhlbXBsbyBub3MgcGVybWl0ZSBhZmlybWFyIHF1ZSwgYW8gbGFuw6dhcm1vcyB1bWEgbW9lZGEgZXF1aWxpYnJhZGEsIHRlbW9zICQ1MFwlJCBkZSBjaGFuY2UgZGUgcXVlIGFwYXJlw6dhIGNhcmEgbmEgZmFjZSBzdXBlcmlvci4gIAoKIyMjIyMgKipSRUdSQSBEQSBBREnDh8ODTyBFTSBQUk9CQUJJTElEQURFKioKCkEgcHJvYmFiaWxpZGFkZSBkYSB1bmnDo28gZW50cmUgZG9pcyBldmVudG9zIHF1YWlzcXVlciwgJEEkIGUgJEIkLCDDqSBkYWRhIHBlbGEgcmVncmEgZGEgYWRpw6fDo28gZGUgcHJvYmFiaWxpZGFkZSwgY29tbyBzZWd1ZTogCgokJApQXGxlZnQoQSBcY3VwIEJccmlnaHQpID0gUFxsZWZ0KEFccmlnaHQpICsgUFxsZWZ0KEJccmlnaHQpIC0gUFxsZWZ0KEEgXGNhcCBCXHJpZ2h0KQokJAoKPHAgYWxpZ249ImNlbnRlciI+CiFbQWx0IHRleHRdKC4uLy4uL2ZpZ3VyZXMvdmVubi5wbmcpCjwvcD4KCk5vdGUgcXVlIGEgcmVncmEgZGEgYWRpw6fDo28gcG9kZSBzZXIgc2ltcGxpZmljYWRhLCBzZSBlIHNvbWVudGUgc2Ugb3MgZXZlbnRvcyAkQSQgZSAkQiQgZm9yZW0gbXV0dWFtZW50ZSBleGNsdXNpdm9zLCBwb2lzIG5lc3RlIGNhc28gJFBcbGVmdChBIFxjYXAgQlxyaWdodCkgPSBcZW1wdHlzZXQkOgoKJCQKUFxsZWZ0KEEgXGN1cCBCXHJpZ2h0KSA9IFBcbGVmdChBXHJpZ2h0KSArIFBcbGVmdChCXHJpZ2h0KQokJAoKPHAgYWxpZ249ImNlbnRlciI+CiFbQWx0IHRleHRdKC4uLy4uL2ZpZ3VyZXMvdmVubjIucG5nKQo8L3A+CiAKKipFeGVtcGxvOioqIENvbnNpZGVyYW5kbyBvIGxhbsOnYW1lbnRvIGRlIHVtIGRhZG8gZSBvcyBldmVudG9zICRBJDoqb2J0ZXIgdW0gbsO6bWVybyBwYXIgbmEgZmFjZSBzdXBlcmlvciogZSAkQiQ6KnNhaXIgcmVzdWx0YWRvIGluZmVyaW9yIGEgMyosIGVuY29udHJlICRQXGxlZnQoQSBcY3VwIEJccmlnaHQpJDogCgokJApcYmVnaW57YWxpZ25lZH0KUz1cbGVmdFx7MSwyLDMsNCw1LDYgIFxyaWdodFx9IFxSaWdodGFycm93IG5cbGVmdChTXHJpZ2h0KT02IFxcCkEgPSBcbGVmdFx7Miw0LDYgXHJpZ2h0XH0gXFJpZ2h0YXJyb3cgblxsZWZ0KEFccmlnaHQpPTMgXFwKQiA9IFxsZWZ0XHsxLDIgXHJpZ2h0XH0gXFJpZ2h0YXJyb3cgblxsZWZ0KEJccmlnaHQpPTIgXFwKQSBcY2FwIEIgPSBcbGVmdFx7MiBccmlnaHRcfSBcUmlnaHRhcnJvdyBuXGxlZnQoQSBcY2FwIEJccmlnaHQpPTEgXFwKUFxsZWZ0KEFccmlnaHQpPVxmcmFje25cbGVmdChBXHJpZ2h0KX17blxsZWZ0KFNccmlnaHQpfSA9IFxmcmFjezN9ezZ9PVxmcmFjezF9ezJ9IFxcClBcbGVmdChCXHJpZ2h0KT1cZnJhY3tuXGxlZnQoQlxyaWdodCl9e25cbGVmdChTXHJpZ2h0KX0gPSBcZnJhY3syfXs2fT1cZnJhY3sxfXszfSBcXApQXGxlZnQoQSBcY2FwIEJccmlnaHQpPVxmcmFje25cbGVmdChBIFxjYXAgQlxyaWdodCl9e25cbGVmdChTXHJpZ2h0KX0gPSBcZnJhY3sxfXs2fSBcXApQXGxlZnQoQSBcY3VwIEJccmlnaHQpID0gUFxsZWZ0KEFccmlnaHQpICsgUFxsZWZ0KEJccmlnaHQpIC0gUFxsZWZ0KEEgXGNhcCBCXHJpZ2h0KT1cZnJhY3sxfXsyfStcZnJhY3sxfXszfS1cZnJhY3sxfXs2fSA9IFxmcmFjezJ9ezN9ClxlbmR7YWxpZ25lZH0KJCQKCiMjIyMjICoqUFJPQkFCSUxJREFERSBDT05ESUNJT05BTCoqCgpFbSBtdWl0YXMgc2l0dWHDp8O1ZXMgcHLDoXRpY2FzLCBvIGZlbsO0bWVubyBhbGVhdMOzcmlvIGNvbSBvIHF1YWwgdHJhYmFsaGFtb3MgcG9kZSBzZXIgc2VwYXJhZG8gZW0gZXRhcGFzLiBBIGluZm9ybWHDp8OjbyBkbyBxdWUgb2NvcnJldSBlbSB1bWEgZGV0ZXJtaW5hZGEgZXRhcGEgcG9kZSBpbmZsdWVuY2lhciBuYXMgcHJvYmFiaWxpZGFkZXMgZGUgb2NvcnLDqm5jaWFzIGRhcyBldGFwYXMgc3VjZXNzaXZhcy4gIAoKTmVzdGVzIGNhc29zLCBkaXplbW9zIHF1ZSBnYW5oYW1vcyBpbmZvcm1hw6fDo28sIGUgcG9kZW1vcyByZWNhbGN1bGFyIGFzIHByb2JhYmlsaWRhZGVzIGRlIGludGVyZXNzZS4gVGFpcyBwcm9iYWJpbGlkYWRlcyByZWNlYmVtIG8gbm9tZSBkZSAqKnByb2JhYmlsaWRhZGUgY29uZGljaW9uYWwqKi4gCgpQYXJhIGVudGVuZGVyIGEgaWRlaWEgZGUgcHJvYmFiaWxpZGFkZSBjb25kaWNpb25hbCwgY29uc2lkZXJlIG8gc2VndWludGUgZXhlbXBsbzogCgogICogVW0gZGFkbyBmb2kgbGFuw6dhZG8sIHF1YWwgw6kgYSBwcm9iYWJpbGlkYWRlIGRlIHRlciBvY29ycmlkbyBmYWNlIDQ/IAogICogU3Vwb25oYSBxdWUgbyBkYWRvIGZvaSBqb2dhZG8sIGUsIHNlbSBzYWJlciBvIHJlc3VsdGFkbywgdm9jw6ogcmVjZWJlIGEgaW5mb3JtYcOnw6NvIGRlIHF1ZSBvY29ycmV1IGZhY2UgcGFyLiBRdWFsIMOpIGEgcHJvYmFiaWxpZGFkZSBkZSB0ZXIgc2HDrWRvIGZhY2UgNCBjb20gZXNzYSAqKm5vdmEgaW5mb3JtYcOnw6NvKio/IAoKKipERUZJTknDh8ODTyoqOiBQYXJhIGRvaXMgZXZlbnRvcyAkQSQgZSAkQiQgZGUgdW0gbWVzbW8gZXNwYcOnbyBhbW9zdHJhbCwgbyB0ZXJtbyAkUFxsZWZ0KEEgfCBCXHJpZ2h0KSQgZGVub3RhIGEgcHJvYmFiaWxpZGFkZSBkZSAkQSQgb2NvcnJlciwgZGFkbyBxdWUgJEIkIG9jb3JyZXUsIGUgw6kgZGVmaW5pZG8gY29tbzoKCiQkClBcbGVmdChBIHwgQlxyaWdodCkgPSBcZnJhY3tQXGxlZnQoQSBcY2FwIEJccmlnaHQpfXtQXGxlZnQoQlxyaWdodCl9CiQkCgpkYSBtZXNtYSBmb3JtYSBxdWUgYSBwcm9iYWJpbGlkYWRlIGRlICRCJCBvY29ycmVyLCBkYWRvIHF1ZSAkQSQgb2NvcnJldSwgw6kgZGVmaW5pZGEgY29tbzoKCiQkClBcbGVmdChCIHwgQVxyaWdodCkgPSBcZnJhY3tQXGxlZnQoQiBcY2FwIEFccmlnaHQpfXtQXGxlZnQoQVxyaWdodCl9CiQkCgoqKkV4ZW1wbG86KiogQ29uc2lkZXJhbmRvIG8gbGFuw6dhbWVudG8gZGUgdW0gZGFkbyBlIG9zIGV2ZW50byAkQSQ6ICpvYnRlciBvIG7Dum1lcm8gNCBuYSBmYWNlIHN1cGVyaW9yKiBlICRCJDogKm9idGVyIHVtIG7Dum1lcm8gcGFyIG5hIGZhY2Ugc3VwZXJpb3IqLCBlbmNvbnRyZSAkUFxsZWZ0KEEgfCBCXHJpZ2h0KSQ6CgokJApcYmVnaW57YWxpZ25lZH0KUz1cbGVmdFx7MSwyLDMsNCw1LDYgIFxyaWdodFx9IFxSaWdodGFycm93IG5cbGVmdChTXHJpZ2h0KT02IFxcCkEgPSBcbGVmdFx7NCBccmlnaHRcfSBcUmlnaHRhcnJvdyBuXGxlZnQoQVxyaWdodCk9MSBcXApCID0gXGxlZnRcezIsNCw2IFxyaWdodFx9IFxSaWdodGFycm93IG5cbGVmdChCXHJpZ2h0KT0zIFxcCkEgXGNhcCBCID0gXGxlZnRcezQgXHJpZ2h0XH0gXFJpZ2h0YXJyb3cgblxsZWZ0KEEgXGNhcCBCXHJpZ2h0KT0xIFxcClBcbGVmdChBXHJpZ2h0KT1cZnJhY3tuXGxlZnQoQVxyaWdodCl9e25cbGVmdChTXHJpZ2h0KX0gPSBcZnJhY3sxfXs2fSBcXApQXGxlZnQoQlxyaWdodCk9XGZyYWN7blxsZWZ0KEJccmlnaHQpfXtuXGxlZnQoU1xyaWdodCl9ID0gXGZyYWN7M317Nn09XGZyYWN7MX17Mn0gXFwKUFxsZWZ0KEEgXGNhcCBCXHJpZ2h0KT1cZnJhY3tuXGxlZnQoQSBcY2FwIEJccmlnaHQpfXtuXGxlZnQoU1xyaWdodCl9ID0gXGZyYWN7MX17Nn0gXFwKUFxsZWZ0KEEgfCBCXHJpZ2h0KSA9IFxmcmFje1BcbGVmdChBIFxjYXAgQlxyaWdodCl9e1BcbGVmdChCXHJpZ2h0KX09XGZyYWN7XGZyYWN7MX17Nn19e1xmcmFjezF9ezJ9fSA9IFxmcmFjezF9ezN9ClxlbmR7YWxpZ25lZH0KJCQKCiMjIyMjICoqSU5ERVBFTkTDik5DSUEgREUgRVZFTlRPUyoqCgpFeGlzdGVtIGFsZ3VtYXMgc2l0dWHDp8O1ZXMgbmFzIHF1YWlzIHNhYmVyIHF1ZSBvIGV2ZW50byAkQiQgb2NvcnJldSwgbsOjbyB0ZW0gcXVhbHF1ZXIgaW50ZXJmZXLDqm5jaWEgbmEgb2NvcnLDqm5jaWEgb3UgbsOjbyBkZSAkQSQuIE5lc3RlcyBjYXNvcywgcG9kZW1vcyBkaXplciBvcyBldmVudG9zIHPDo28gaW5kZXBlbmRlbnRlcy4gIAoKT3MgZXZlbnRvcyAkQSQgZSAkQiQgc8OjbyBldmVudG9zIGluZGVwZW5kZW50ZXMgc2U6ICRQXGxlZnQoQSB8IEJccmlnaHQpPVBcbGVmdChBIFxyaWdodCkkIGUgJFBcbGVmdChCIHwgQVxyaWdodCk9UFxsZWZ0KEIgXHJpZ2h0KSQuIENvbSBpc3NvLCB0ZW1vcyBxdWU6IAoKJCQKXGJlZ2lue2FsaWduZWR9ClBcbGVmdChBIFxjYXAgQlxyaWdodCkgPSBQXGxlZnQoQSBccmlnaHQpIFx0aW1lcyBQXGxlZnQoQSB8IEJccmlnaHQpID0gUFxsZWZ0KEIgXHJpZ2h0KSBcdGltZXMgUFxsZWZ0KEEgXHJpZ2h0KSAgXFwKUFxsZWZ0KEIgXGNhcCBBXHJpZ2h0KSA9IFBcbGVmdChBIFxyaWdodCkgXHRpbWVzIFBcbGVmdChCIHwgQVxyaWdodCkgPSBQXGxlZnQoQSBccmlnaHQpIFx0aW1lcyBQXGxlZnQoQiBccmlnaHQpClxlbmR7YWxpZ25lZH0KJCQKCklzc28gc2lnbmlmaWNhIHF1ZSBzZSBkb2lzIGV2ZW50b3Mgc8OjbyBpbmRlcGVuZGVudGVzLCBhIHByb2JhYmlsaWRhZGUgZGUgb2NvcnLDqm5jaWEgc2ltdWx0w6JuZWEgw6kgbyBwcm9kdXRvIGRhcyBwcm9iYWJpbGlkYWRlcyBkZSBjYWRhIGV2ZW50by4KCjxvbCBzdGFydD0iMiI+CjxsaT4gPGg0PiA8Yj4gVkFSScOBVkVJUyBBTEVBVMOTUklBUyA8L2I+IDwvaDI+IDwvbGk+Cjwvb2w+CgpGcmVxdWVudGVtZW50ZSBlc3RhbW9zIGludGVyZXNzYWRvcyBlbSByZXN1bWlyIG8gcmVzdWx0YWRvIGRlIHVtIGV4cGVyaW1lbnRvIGFsZWF0w7NyaW8gYXRyYXbDqXMgZGUgdW0gbsO6bWVybyBkYWRvIHF1ZSBvIGVzcGHDp28gYW1vc3RyYWwgw6kgYXBlbmFzIHVtYSBkZXNjcmnDp8OjbyBkb3MgcmVzdWx0YWRvcyBwb3Nzw612ZWlzIGRvIG1lc21vLiBQb3IgZXhlbXBsbywgc3Vwb25oYSBxdWUgcmVhbGl6YW1vcyBvIGV4cGVyaW1lbnRvIGRlIGxhbsOnYXIgdHLDqnMgbW9lZGFzIGUgb2JzZXJ2YW1vcyBvIG7Dum1lcm8gZGUgY2FyYXMgcXVlIGFwYXJlY2VtIGUgcXVlIHRhbCBuw7ptZXJvIChxdWFudGlkYWRlIGRlIGNhcmFzKSBzZXLDoSBhcm1hemVuYWRvIGVtIHVtYSB2YXJpw6F2ZWwgcXVhbHF1ZXIuIENvbW8gbsOjbyBzYWJlbW9zIGRlIGFudGUtbcOjbyBxdWFsIHNlcsOhIG8gcmVzdWx0YWRvLCBvIHZhbG9yIGRhIHZhcmnDoXZlbCByZXN1bHRhbnRlIHRhbWLDqW0gbsOjbyDDqSBjb25oZWNpZG8uIAoKQXNzaW0sIGEgZnVuw6fDo28gcXVlIGNvbmZlcmUgdW0gbsO6bWVybyByZWFsIGEgY2FkYSByZXN1bHRhZG8gbm8gZXNwYcOnbyBhbW9zdHJhbCBkbyBleHBlcmltZW50byBhbGVhdMOzcmlvIMOpIGNvbmhlY2lkYSBjb21vICoqdmFyacOhdmVsIGFsZWF0w7NyaWEqKiwgcG9pcyBhbGVhdG9yaWFtZW50ZSBwb2RlIGFzc3VtaXIgcXVhbHF1ZXIgdmFsb3IgZG8gZXNwYcOnbyBhbW9zdHJhbC4KCkdlcmFsbWVudGUsIHVtYSB2YXJpw6F2ZWwgYWxlYXTDs3JpYSDDqSBkZW5vdGFkYSBwb3IgbGV0cmEgbWFpw7pzY3VsYSwgdGFsIGNvbW8gJFgkIGVucXVhbnRvIHF1ZSBhcMOzcyBvIGV4cGVyaW1lbnRvIHNlciBjb25kdXppZG8sIG8gdmFsb3Igb2JzZXJ2YWRvIGRhIHZhcmnDoXZlbCBhbGVhdMOzcmlhIMOpIGRlbm90YWRvIHBvciBsZXRyYSBtaW7DunNjdWxhIChwb3IgZXhlbXBsbywgJHg9MiQgcGFyYSBvIGxhbsOnYW1lbnRvIGRlIDMgbW9lZGFzIGUgb2JzZXJ2YXIgMiBjYXJhcykuCgpBcyAqKnZhcmnDoXZlaXMgYWxlYXTDs3JpYXMqKiBwb2RlbSBzZXIgKipkaXNjcmV0YXMqKiBlICoqY29udMOtbnVhcyoqLiBEaXplbW9zIHF1ZSB1bWEgdmFyacOhdmVsIGFsZWF0w7NyaWEgJFgkIMOpIGRpc2NyZXRhIHNlIHRvbWEgdW0gbsO6bWVybyBmaW5pdG8gb3UgZW51bWVyw6F2ZWwgZGUgdmFsb3Jlcy4gUG9yIG91dHJvIGxhZG8sIGEgdmFyacOhdmVsIGFsZWF0w7NyaWEgJFgkIHNlcsOhIGNvbnTDrW51YSBzZSBhc3N1bWUgdmFsb3JlcyBlbSB1bSBpbnRlcnZhbG8gZGUgbsO6bWVyb3MgcmVhaXMuIEFiYWl4bywgZXhlbXBsb3MgZGUgZXhwZXJpbWVudG9zIHF1ZSBnZXJhbSB2YXJpw6F2ZWlzIGFsZWF0w7NyaWFzIGRlIGNhZGEgdGlwbzoKCiAgKiBEaXNjcmV0YXMKICAgICAgKiBMYW7Dp2FyIHVtYSBtb2VkYSByZXBldGlkYW1lbnRlIGF0w6kgb2JzZXJ2YXIgY2FyYS4gU3Vwb25kbyAkQ2EkIHBhcmEgY2FyYSBlICRDbyQgcGFyYSBjb3JvYSwgbyBlc3Bhw6dvIGFtb3N0cmFsIGRlc3RlIGV4cGVyaW1lbnRvIHNlcsOhICRTPVxsZWZ0XHtDYSxDb0NhLENvQ29DYSxDb0NvQ29DYSwuLi5ccmlnaHRcfSQuIEFnb3JhLCBkZWZpbmluZG8gYSB2YXJpw6F2ZWwgYWxlYXTDs3JpYSAkWCQgY29tbyBvIG7Dum1lcm8gZGUgY29yb2FzIGFudGVzIGRlIG9jb3JyZXIgYSBwcmltZWlyYSBjYXJhLCBlbnTDo28gJFgkIHBvZGUgYXNzdW1pciAkUz1cbGVmdFx7MCwxLDIsLi4uXHJpZ2h0XH0kCiAgKiBDb250w61udWFzCiAgICAgICogTGFuw6dhciB1bWEgbW9lZGEgbm8gYXIuIGUgbWVkaXIgbyB0ZW1wbyBhdMOpIGF0aW5naXIgbyBjaMOjby4gUGVyY2ViYSBxdWUgw6kgZGlmw61jaWwgZGVmaW5pciBvIGVzcGHDp28gYW1vc3RyYWwgZGVzdGUgZXhwZXJpbWVudG8sIHBvaXMgdGVtb3MgaW5maW5pdG9zIHZhbG9yZXMgY29tbyBwb3Nzw612ZWlzIHJlc3VsdGFkb3MuIEFzc2ltLCBwb2RlbW9zIGVzdGFiZWxlY2VyIGEgdmFyacOhdmVsIGFsZWF0w7NyaWEgJFokIGNvbW8gbyB0ZW1wbyBhdMOpIGEgbW9lZGEgYXRpbmdpciBvIGNow6NvIHF1ZSBwb2RlIGFzc3VtaXIgdmFsb3JlcyBubyBpbnRlcnZhbG8gJFxsZWZ0KDAsIFxpbmZ0eVxyaWdodCkkCgojIyMjIyAqKk1PTUVOVE9TKioKCk9zIG1vbWVudG9zIHPDo28gbXVpdG8gaW1wb3J0YW50ZXMgZW0gZXN0YXTDrXN0aWNhIHBhcmEgY2FyYWN0ZXJpemFyIGRpc3RyaWJ1acOnw7VlcyBkZSBwcm9iYWJpbGlkYWRlLiBQb3IgZXhlbXBsbywgYSBkaXN0cmlidWnDp8OjbyBub3JtYWwgw6kgY2FyYWN0ZXJpemFkYSBhcGVuYXMgcGVsbyBwcmltZWlybyBlIHBlbG8gc2VndW5kbyBtb21lbnRvcy4gTyBwcmltZWlybywgc2VndW5kbywgdGVyY2Vpcm8gZSBxdWFydG8gbW9tZW50b3MgY2FyYWN0ZXJpemFtIGEgdGVuZMOqbmNpYSBjZW50cmFsLCBkaXNwZXJzw6NvLCBhc3NpbWV0cmlhIGUgY3VydG9zZSwgcmVzcGVjdGl2YW1lbnRlLCBkZSB1bWEgZGlzdHJpYnVpw6fDo28gZGUgcHJvYmFiaWxpZGFkZS4gCgpPIGstw6lzaW1vIG1vbWVudG8gbsOjbyBjZW50cmFsIGRlIHVtYSB2YXJpw6F2ZWwgYWxlYXTDs3JpYSBkaXNjcmV0YSBub3RhZG8gcG9yICR7TX1fe2t9XnsnfSQsIMOpIGRlZmluaWRvIHBvcjoKCiQkCntNfV97a31eeyd9PVxzdW1fe3h9e3t4fV57a319IHBcbGVmdCggeCBccmlnaHQpIAokJAoKQXNzaW0sIG8gcHJpbWVpcm8gbW9tZW50byBuw6NvIGNlbnRyYWwgZGUgdW1hIHZhcmnDoXZlbCBhbGVhdMOzcmlhIGRpc2NyZXRhIHNlcsOhICR7TX1fezF9XnsnfT1cc3VtIF97eH17e3h9fSBwXGxlZnQoeCBccmlnaHQpJCBxdWUgw6kgYSBlc3BlcmFuw6dhIGRlICRYJCwgbm90YWRhIHBvciAkRVxsZWZ0W1ggXHJpZ2h0XSQuCgoKTyBrLcOpc2ltbyBtb21lbnRvIGNlbnRyYWwgZGUgdW1hIHZhcmnDoXZlbCBhbGVhdMOzcmlhIGNvbnTDrW51YSBub3RhZG8gcG9yICR7TX1fe2t9XnsnfSQsIMOpIGRlZmluaWRvIHBvcjoKCiQkCntNfV97a309XGludCBfe1xtYXRoYmJ7Un19e3tcbGVmdCh4LUVcbGVmdFt4IFxyaWdodF0gXHJpZ2h0KX1ee2t9ZlxsZWZ0KHggXHJpZ2h0KWR4fSAKJCQKQXNzaW0sIG8gc2VndW5kbyBtb21lbnRvIGNlbnRyYWwgZGUgdW1hIHZhcmnDoXZlbCBhbGVhdMOzcmlhIGNvbnTDrW51YSBzZXLDoSAke019X3trfT1caW50IF97XG1hdGhiYntSfX17e1xsZWZ0KHgtRVxsZWZ0W3ggXHJpZ2h0XSBccmlnaHQpfV57Mn1mXGxlZnQoeCBccmlnaHQpZHh9JCBxdWUgw6kgYSB2YXJpw6JuY2lhIGRlICRYJCwgbm90YWRhIHBvciAkXHNpZ21hX3t4fV57Mn0kLgoKPG9sIHN0YXJ0PSIzIiA+CjxsaT4gPGg0PiA8Yj4gRElTVFJJQlVJw4fDlUVTIERFIFBST0JBQklMSURBREUgPC9iPiA8L2gyPiA8L2xpPgo8L29sPgoKVW1hIGRpc3RyaWJ1acOnw6NvIGRlIHByb2JhYmlsaWRhZGUgw6kgdW0gbW9kZWxvIG1hdGVtw6F0aWNvIHF1ZSByZWxhY2lvbmEgdW0gY2VydG8gdmFsb3IgZGEgdmFyacOhdmVsIGFsZWF0w7NyaWEgZW0gZXN0dWRvIGNvbSBhIHN1YSBwcm9iYWJpbGlkYWRlIGRlIG9jb3Jyw6puY2lhLiAgCgpOZXN0YSBzZcOnw6NvIHZhbW9zIGVzdHVkYXIgYXMgcHJpbmNpcGFpcyBkaXN0cmlidWnDp8O1ZXMgZGUgcHJvYmFiaWxpZGFkZSBjb250w61udWFzIChxdWFuZG8gYSB2YXJpw6F2ZWwgYWxlYXTDs3JpYSBxdWUgZXN0w6Egc2VuZG8gbWVkaWRhIMOpIGV4cHJlc3NhIGVtIHVtYSBlc2NhbGEgY29udMOtbnVhKSBlIGRpc2NyZXRhcyAocXVhbmRvIGEgdmFyacOhdmVsIGFsZWF0w7NyaWEgcXVlIGVzdMOhIHNlbmRvIG1lZGlkYSBzw7MgcG9kZSBhc3N1bWlyIGNlcnRvcyB2YWxvcmVzLCBjb21vIHBvciBleGVtcGxvIHZhbG9yZXMgaW50ZWlyb3MpLiBBbMOpbSBkaXNzbywgdmFtb3MgYXByZW5kZXIgY29tbyBjYWxjdWxhciBhIHZhbG9yIG3DqWRpbyBlc3BlcmFkbyBlIGEgdmFyacOibmNpYSBkZSB1bWEgdmFyacOhdmVsIGFsZWF0w7NyaWEuIAoKIyMjIyMgKipESVNDUkVUQVMqKgoKU3Vwb25oYSBxdWUgdGVtb3MgbyBleHBlcmltZW50byBhbGVhdMOzcmlvIGRlIGxhbsOnYXIgdW0gZGFkbyBlIG9ic2VydmFyIHF1YWwgbyBuw7ptZXJvIGRhIGZhY2Ugc3VwZXJpb3IuIE8gZXNwYcOnbyBhbW9zdHJhbCBwb2RlIHNlciBleHByZXNzYWRvIGVtIHVtYSB2YXJpw6F2ZWwgYWxlYXTDs3JpYSBkaXNjcmV0YSAkWCQgcXVlIGFzc3VtZSBvcyB2YWxvcmVzICQxLDIsMyw0LDUsNiQgY29tIGEgcHJvYmFiaWxpZGFkZSAkXGZyYWN7MX17Nn0kLiBBYmFpeG8sIG8gZ3LDoWZpY28gZGEgZGlzdHJpYnVpw6fDo28gZGUgcHJvYmFiaWxpZGFkZSBwYXJhIGEgdmFyacOhdmVsIGFsZWF0w7NyaWEgZW0gYW7DoWxpc2UuIE9ic2VydmUgcXVlIHBvZGVtb3Mgb2J0ZXIgYSBwcm9iYWJpbGlkYWRlIGRlIG9jb3Jyw6puY2lhIGRlIHF1YWxxdWVyIHZhbG9yIGRhIHZhcmnDoXZlbCBhbGVhdMOzcmlhIGUgcXVlIGVsYSDDqSBzZW1wcmUgYSBtZXNtYSwgb3Ugc2VqYSwgJFxmcmFjezF9ezZ9JC4gCgpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZyA9IEZBTFNFLCBmaWcuYWxpZ249J2NlbnRlcicsIGZpZy5oZWlnaHQ9N30KIyBHZXJhciBhIHZhcmnDoWJlbCBhbGVhdMOzcmlhIGRvIGV4cGVyaW1lbnRvIGUgYXNzb2NpYXIgYXMgcHJvYmFiaWxpZGFkZXMKRCA8LSBkaXNjcmV0ZVJWOjpSVigxOjYsIHByb2JzID0gcmVwKDEvNiwgdGltZXMgPSA2KSkKCiMgR3LDoWZpY28gZGEgZGlzdHJpYnVpw6fDo28gZGUgcHJvYmFiaWxpZGFkZQpwbG90KEQsIHlsYWIgPSAicHJvYmFiaWxpZGFkZSIsIHhsYWIgPSAiUG9zc8OtdmVpcyB2YWxvcmVzIHBhcmEgYSB2YXJpw6F2ZWwgYWxlYXTDs3JpYSIsIG1haW4gPSAiRGlzdHJpYnVpw6fDo28gZGUgUHJvYmFiaWxpZGFkZSBwYXJhIG8gZXhwZXJpbWVudG8iKQpgYGAKClBvcsOpbSwgbmVtIHNlbXByZSB0ZW1vcyBhIGZhY2lsaWRhZGUgZGUgZGV0YWxoYXIgbyBlc3Bhw6dvIGFtb3N0cmFsIGRlIHVtIGV4cGVyaW1lbnRvIGFsZWF0w7NyaW8gZSBlc3BlY2lmaWNhciB1bWEgdmFyacOhdmVsIGFsZWF0w7NyaWEgZGlzY3JldGEgcGFyYSBvIG1lc21vLiBFbSBmdW7Dp8OjbyBkaXNzbywgZXhpc3RlbSBhbGd1bWFzIGRpc3RyaWJ1acOnw7VlcyBkZSBwcm9iYWJpbGlkYWRlIGRpc2NyZXRhcyBkZWZpbmlkYXMgYSBwcmlvcmkgZSBxdWUgcG9kZW1vcyB1c2FyIHBhcmEgZGVzY3JldmVyIHVtYSB2YXJpw6F2ZWwgYWxlYXTDs3JpYSBkaXNjcmV0YSBlbSBhbsOhbGlzZS4gCgoqKk9ic2VydmUgcXVlIG5lc3RlIGNhc28sIGVzdGFtb3MgYXNzdW1pbmRvIHF1ZSBub3NzYSB2YXJpw6F2ZWwgYWxlYXTDs3JpYSBkaXNjcmV0YSBzZWd1ZSB1bWEgZGVzdGFzIGRpc3RyaWJ1acOnw7VlcyBkZSBwcm9iYWJpbGlkYWRlIGRpc2NyZXRhKiouIE5hIHNlcXXDqm5jaWEsIG1vc3RyYW1vcyBhcyBwcmluY2lwYWlzIGRpc3RyaWJ1acOnw7VlcyBkZSBwcm9iYWJpbGlkYWRlIGRpc2NyZXRhcy4KCiMjIyMjIyAqKkJFUk5PVUxMSSoqCgpOYSBwcsOhdGljYSBtdWl0b3MgZXhwZXJpbWVudG9zIGFkbWl0ZW0gYXBlbmFzIGRvaXMgcmVzdWx0YWRvcy4gRXNzZXMgZXhwZXJpbWVudG9zIHJlY2ViZW0gbyBub21lIGRlIEVuc2Fpb3MgZGUgQmVybm91bGxpLiBQb3IgZXhlbXBsbywgbyByZXN1bHRhZG8gZGUgdW0gZXhhbWUgbcOpZGljbyBwYXJhIGRldGVjw6fDo28gZGUgdW1hIGRvZW7Dp2EgcG9kZSBzZXIgcG9zaXRpdm8gb3UgbmVnYXRpdm8uIE5lc3RlcyBjYXNvcywgdGVtb3MgZG9pcyBldmVudG9zIG11dHVhbWVudGUgZXhjbHVzaXZvcyBxdWUgcG9kZW1vcyBkZW5vbWluYXIgZGUgc3VjZXNzbyBlIGZyYWNhc3NvLiAKCkFzc2ltLCB1bWEgdmFyacOhdmVsIGFsZWF0w7NyaWEgJFgkIGRlIEJlcm5vdWxsaSDDqSBhcXVlbGEgcXVlIGFzc3VtZSBhcGVuYXMgZG9pcyB2YWxvcmVzIGRpc2NyZXRvczoKCiQkClg9XGJlZ2lue2Nhc2VzfSAxflx0ZXh0e3NlIHN1Y2Vzc299IFxcIDB+XHRleHR7c2UgZnJhY2Fzc299IFxlbmR7Y2FzZXN9CiQkCmUgYSBkaXN0cmlidWnDp8OjbyBkZSBwcm9iYWJpbGlkYWRlIMOpIGRhZGEgcG9yOgoKXGJlZ2lue3RhYmxlfVtoIV0KXGNlbnRlcmluZwpcYmVnaW57dGFidWxhcn17Y2N9ClxobGluZQokWCQgJiAkUFxsZWZ0KFhccmlnaHQpJCBcXCBcaGxpbmUKJDAkICYgJDEtcCQgXFwKJDEkICYgJHAkICAgXFwgXGhsaW5lClxlbmR7dGFidWxhcn0KXGVuZHt0YWJsZX0KClBhcmEgdGFpcyB2YXJpw6F2ZWlzIG8gdmFsb3IgZXNwZXJhZG8gZSBhIHZhcmnDom5jaWEgcG9kZW0gc2VyIGRhZG9zIHBvcjoKCiQkClxiZWdpbnthbGlnbmVkfQomJiBFXGxlZnRbIFggXHJpZ2h0XSA9IHAgXFwKJiYgVmFyXGxlZnQoIFggXHJpZ2h0KSA9IHBcbGVmdCggMS1wIFxyaWdodCkgClxlbmR7YWxpZ25lZH0KJCQKKiAqKkV4ZW1wbG86KiogdW0gcGFjaWVudGUsIGFvIGRhciBlbnRyYWRhIG5hIHRlcmFwaWEgaW50ZW5zaXZhLCB0ZW0gMjUlIGRlIHByb2JhYmlsaWRhZGUgZGUgw7NiaXRvIChyaXNjbyBkZSBtb3J0ZSkuIFNlIGFzc29jaWFtb3MgJHA9MC4yNSQsIGEgcHJvYmFiaWxpZGFkZSBkZSBzdWNlc3NvICjDs2JpdG8pIGUgJDEtcCQgYSBwcm9iYWJpbGlkYWRlIGRlIGZyYWNhc3NvIChzZW0gw7NiaXRvKSwgcG9kZW1vcyBjcmlhciB1bWEgdmFyacOhdmVsIGFsZWF0w7NyaWEgZGlzY3JldGEgJFgkIHF1ZSBwb2RlIGFzc3VtaXIgYXBlbmFzIGRvaXMgdmFsb3JlcyAoJHg9MCQgcGFyYSBmcmFjYXNzbyBlICR4PTEkIHBhcmEgc3VjZXNzbykgZSBhIGRpc3RyaWJ1acOnw6NvIGRlIHByb2JhYmlsaWRhZGUgcG9kZSBzZXIgZGVzZW5oYWRhIG5vIHNlZ3VpbnRlIGZvcm1hdG86CgpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZyA9IEZBTFNFLCBmaWcuYWxpZ249J2NlbnRlcicsIGZpZy5oZWlnaHQ9N30KIyB2YXJpw6F2ZWwgYWxlYXTDs3JpYSBkaXNjcmV0YQp4IDwtIGMoMCwxKQojIGRpc3RyaWJ1acOnw6NvIGRlIHByb2JhYmlsaWRhZGUKeSA8LSBjKDAuMjUsMC43NSkKCiMgZ3LDoWZpY28gZGEgZGlzdHJpYnVpw6fDo28gZGUgcHJvYmFiaWxpZGFkZQpwbG90KHgseSx0eXBlPSJoIix4bGltPWMoLTEsMikseWxpbT1jKDAsMSksbHdkPTIsY29sPSJibHVlIix4bGFiPSJWYXJpw6F2ZWwgYWxlYXTDs3JpYSIseWxhYj0iUHJvYmFiaWxpZGFkZSIpCnBvaW50cyh4LHkscGNoPTE2LGNleD0yLGNvbD0iZGFyayByZWQiKQpgYGAKCiMjIyMjIyAqKkJJTk9NSUFMKioKCkEgZGlzdHJpYnVpw6fDo28gYmlub21pYWwgbmFkYSBtYWlzIMOpIHF1ZSBhIGdlbmVyYWxpemHDp8OjbyBkYSBkaXN0cmlidWnDp8OjbyBkZSBCZXJub3VsbGkuIENvbnRpbnVhbW9zIGNvbSB1bSBzdWNlc3NvLCBjb20gcHJvYmFiaWxpZGFkZSAkcCQsIGUgdW0gZnJhY2Fzc28sIGNvbSBwcm9iYWJpbGlkYWRlICQx4oiScCQsIG1hcyBvIGV4cGVyaW1lbnRvIMOpIHJlcGV0aWRvICRuJCB2ZXplcyBzZW5kbyBlc3RhcyBpbmRlcGVuZGVudGVzLCBvdSBzZWphLCBvIHJlc3VsdGFkbyBkZSB1bWEgcmVwZXRpw6fDo28gbsOjbyDDqSBpbmZsdWVuY2lhZG8gcG9yIG91dHJvcyByZXN1bHRhZG9zLiAKClBhcmEgdGFudG8sIGZhemVtb3MgdXNvIGRhIHNlZ3VpbnRlIGbDs3JtdWxhOiAKCiQkClBcbGVmdCggWD1rIFxyaWdodCkgPVxsZWZ0KCBcYmVnaW57bWF0cml4fSBuIFxcIGsgXGVuZHttYXRyaXh9IFxyaWdodCkgeyBwIH1eeyBrIH17IFxsZWZ0KCAxLXAgXHJpZ2h0KSAgfV57IG4tayB9CiQkCm9uZGU6CgogICogJG4kOiBxdWFudGlkYWRlIGRlIHJlcGV0acOnw7VlcyBkbyBleHBlcmltZW50bzsgCiAgKiAkcCQ6IHByb2JhYmlsaWRhZGUgZGUgc3VjZXNzbzsKICAqICQx4oiScCQ6IHByb2JhYmlsaWRhZGUgZGUgZnJhY2Fzc287CiAgKiAkayQ6IHF1YW50aWRhZGUgZGUgc3VjZXNzb3MgbmFzIHJlcGV0acOnw7VlczsKICAqICRcbGVmdCggXGJlZ2lue21hdHJpeH0gbiBcXCBrIFxlbmR7bWF0cml4fSBccmlnaHQpJDogcmVwcmVzZW50YSBvIG7Dum1lcm8gZGUgY29tYmluYcOnw7VlcyBkZSAkbiQgZWxlbWVudG9zIGVtIGdydXBvcyBkZSAkayQgKHF1YW50aWRhZGUgZGUgbWFuZWlyYXMgZGlzdGludGFzIGRlIHNlIG9idGVyIG8gZXZlbnRvIGRlc2VqYWRvKSwgY2FsY3VsYWRvIGNvbW8gJFxsZWZ0KCBcYmVnaW57bWF0cml4fSBuIFxcIGsgXGVuZHttYXRyaXh9IFxyaWdodCkgPVxmcmFje24hfXtrIVxsZWZ0KG4tayBccmlnaHQpIX0kCiAgCkFsw6ltIGRpc3NvLCB0ZW1vcyBxdWUgbyB2YWxvciBlc3BlcmFkbyBlIGEgdmFyacOibmNpYSBzZXLDo286IAoKJCQKXGJlZ2lue2FsaWduZWR9CkVcbGVmdFsgWCBccmlnaHRdID1ucCBcXApWYXJcbGVmdCggWCBccmlnaHQpID1ucFxsZWZ0KCAxLXAgXHJpZ2h0KSAKXGVuZHthbGlnbmVkfQokJAoKQ29uc2lkZXJlIG8gZXhlbXBsbyBhbnRlcmlvciBvbmRlIHVtIHBhY2llbnRlIGFvIGRhciBlbnRyYWRhIG5hIHRlcmFwaWEgaW50ZW5zaXZhIHRlbSAyNSUgZGUgcHJvYmFiaWxpZGFkZSBkZSDDs2JpdG8gKHJpc2NvIGRlIG1vcnRlKS4gU2UgMTAgcGFjaWVudGVzIGVudHJhcmVtIG5vIENUSSBxdWFsIGEgcHJvYmFiaWxpZGFkZSBkZSDDs2JpdG8gZGUgMCBhdMOpIDEwIHBhY2llbnRlcz8gw4kgcGFyYSBlc3RlIHRpcG8gZGUgYW7DoWxpc2UgcXVlIHBvZGVtb3MgZmF6ZXIgdXNvIGRhIGRpc3RyaWJ1acOnw6NvIEJpbm9taWFsLCBjb21vIG1vc3RyYSBvIGdyw6FmaWNvIGFiYWl4bzoKCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nID0gRkFMU0UsIGZpZy5hbGlnbj0nY2VudGVyJywgZmlnLmhlaWdodD03fQojIHF1YW50aWRhZGUgZGUgcmVwZXRpw6fDtWVzIGRvIGV4cGVyaW1lbnRvCm4gPC0gMTAKCiMgcHJvYmFiaWxpZGFkZSBkZSBzdWNlc3NvIApwIDwtIDEvNAoKIyBxdWFudGlkYWRlIGRlIHN1Y2Vzc29zIHBvc3PDrXZlaXMKayA8LSAwOjEwCgojIGRpc3RyaWJ1acOnw6NvIGRlIHByb2JhYmlsaWRhZGUgcGFyYSBjYWRhIHBvc3PDrXZlbCBrCnAgPC0gZGJpbm9tKGssc2l6ZT1uLHByb2I9cCkKCiMgZ3LDoWZpY28gZGEgZGlzdHJpYnVpw6fDo28gZGUgcHJvYmFiaWxpZGFkZQpwbG90KGsscCx0eXBlPSJoIix4bGltPWMoLTEsMTEpLCB5bGltID0gYygwLDAuNSksbHdkID0gMiwgY29sID0gImJsdWUiLHlsYWIgPSAicHJvYmFiaWxpZGFkZSIsIHhsYWIgPSAiayBzdWNlc3NvcyIpCnBvaW50cyhrLHAscGNoPTE2LGNleD0yLGNvbD0iZGFyayByZWQiKQpgYGAKCk91dHJhcyBhcGxpY2HDp8O1ZXMgcGFyYSBlc3RlIHRpcG8gZGUgdmFyacOhdmVsIGFsZWF0w7NyaWEgc8OjbzoKCiogTsO6bWVybyBkZSBpdGVucyBkZWZlaXR1b3NvcyBlbSAkbiQgaXRlbnMgcHJvZHV6aWRvcyBpbmRlcGVuZGVudGVzIAoqIEFtb3N0cmEgY29udGFtaW5hZGEgZW0gJG4kIGFtb3N0cmFzIGluZGVwZW5kZW50ZXMKKiBOw7ptZXJvIGRlIHF1ZXN0w7VlcyBjb3JyZXRhcyBlbSAkbiQgcXVlc3TDtWVzIHJlc3BvbmRpZGFzIGluZGVwZW5kZW50ZXMKICAgIAojIyMjIyMgKipQT0lTU09OKioKCkEgZGlzdHJpYnVpw6fDo28gZGUgUG9pc3NvbiDDqSBhZGVxdWFkYSBwYXJhIGRlc2NyZXZlciBhcyBwcm9iYWJpbGlkYWRlcyBkbyBuw7ptZXJvIGRlIG9jb3Jyw6puY2lhcyBudW0gaW50ZXJ2YWxvIGNvbnTDrW51byAoZW0gZ2VyYWwgdGVtcG8gb3UgZXNwYcOnbykuIFPDo28gZXhlbXBsb3MgZGUgdmFyacOhdmVpcyBxdWUgcG9kZW0gdGVyIGNvbW8gbW9kZWxvCmEgZGlzdHJpYnVpw6fDo28gZGUgUG9pc3NvbjoKCiogQWNpZGVudGVzIGNvbSBhdXRvbcOzdmVpcyBlbSB1bWEgZGV0ZXJtaW5hZGEgZXN0cmFkYQoqIFF1YW50aWRhZGUgZGUgcGFjaWVudGVzIHF1ZSBjaGVnYW0gbnVtIHByb250byBzb2NvcnJvIGR1cmFudGUgYSBtYWRydWdhZGEKCk5vdGUgcXVlIGEgcXVhbnRpZGFkZSBkZSB2YWxvcmVzIHBvc3PDrXZlaXMgcXVlIGEgdmFyacOhdmVsIGFsZWF0w7NyaWEgcG9kZSBhc3N1bWlyIMOpIGluZmluaXRhLCBlbnRyZXRhbnRvIGVudW1lcsOhdmVsLiBBbMOpbSBkaXNzbywgb2JzZXJ2ZSBxdWUgYSB2YXJpw6F2ZWwgYWxlYXTDs3JpYSDDqSBkaXNjcmV0YSAobsO6bWVybyBkZSBvY29ycsOqbmNpYXMpLCBubyBlbnRhbnRvIGEgdW5pZGFkZSBkZSBtZWRpZGEgw6kgY29udMOtbnVhICh0ZW1wbywgw6FyZWEpLgoKQWluZGEsIGFzIGZhbGhhcyBuw6NvIHPDo28gY29udMOhdmVpcy4gUG9yIGV4ZW1wbG8sIG7Do28gw6kgcG9zc8OtdmVsIGNvbnRhciBvcyBhY2lkZW50ZXMgcXVlIG7Do28gb2NvcnJlcmFtIGVtIHVtIGRpYSwgbmVtIHTDo28gcG91Y28gYSBxdWFudGlkYWRlIGRlIHBhY2llbnRlcyBxdWUgbsOjbyBjaGVnYXJhbSBhbyBwcm9udG8gc29jb3JybyBuYSBtYWRydWdhZGEuCgpBIGRpc3RyaWJ1acOnw6NvIGRlIFBvaXNzb24gZmljYSBjb21wbGV0YW1lbnRlIGNhcmFjdGVyaXphZGEgcG9yIHVtIMO6bmljbyBwYXLDom1ldHJvICRcbGFtYmRhJCBxdWUgcmVwcmVzZW50YSBvIG7Dum1lcm8gbcOpZGlvIGRlIG9jb3Jyw6puY2lhcyBwb3IgdW5pZGFkZSBkZSB0ZW1wby4gQSBlcXVhw6fDo28gcGFyYSBjYWxjdWxhciBhIHByb2JhYmlsaWRhZGUgZGUgJGskIG9jb3Jyw6puY2lhcyBudW0gaW50ZXJ2YWxvIGNvbnTDrW51byAoZW0gZ2VyYWwgdGVtcG8gb3UgZXNwYcOnbykgw6kgZGFkYSBwb3I6CgokJApQXGxlZnQoWD1rXHJpZ2h0KT0gXGZyYWN7ZV57LVxsYW1iZGF9XGxhbWJkYV57a319e2shfQokJApvbmRlOgoKICAqICRlJDogw6kgYSBiYXNlIGRvIGxvZ2FyaXRtbyBuYXR1cmFsOwogICogJGskOiBxdWFudGlkYWRlIGRlIG9jb3Jyw6puY2lhcyBudW0gaW50ZXJ2YWxvIGNvbnTDrW51bzsKICAqICRrISQ6IMOpIG8gZmF0b3JpYWwgZGUgJGskOyAKICAqICRcbGFtYmRhJDogw6kgdW0gbsO6bWVybyByZWFsIHF1ZSByZXByZXNlbnRhIGEgdGF4YSBkZSBvY29ycsOqbmNpYS4gUG9yIGV4ZW1wbG8sIHNlIG8gZXZlbnRvIG9jb3JyZSBhIHVtYSBtw6lkaWEgZGUgNCBtaW51dG9zIGUgZXN0YW1vcyBpbnRlcmVzc2Fkb3Mgbm8gbsO6bWVybyBkZSBldmVudG9zIHF1ZSBvY29ycmVtIG51bSBpbnRlcnZhbG8gZGUgMTAgbWludXRvcywgJFxsYW1iZGE9ezEwfS97NH09Mi41JAogIApBbMOpbSBkaXNzbywgdGVtb3MgcXVlIG8gdmFsb3IgZXNwZXJhZG8gZSBhIHZhcmnDom5jaWEgc2Vyw6NvOiAKCiQkClxiZWdpbnthbGlnbmVkfQpFXGxlZnRbWFxyaWdodF0gPVxsYW1iZGEgXFwKVmFyXGxlZnQoWFxyaWdodCkgPSBcbGFtYmRhClxlbmR7YWxpZ25lZH0KJCQKCiogKipFeGVtcGxvOioqIE8gZ292ZXJubyBkZSB1bWEgaWxoYSBpbmZvcm1vdSBxdWUgZHVyYW50ZSAyMCBhbm9zLCAyMDAgdHVyaXN0YXMgZmFsZWNlcmFtIChlbSBtw6lkaWEgMTAgdHVyaXN0YXMgcG9yIGFubykuIFF1YWwgYSBwcm9iYWJpbGlkYWRlIGRlIGV4YXRhbWVudGUgNSB0dXJpc3RhcyBmYWxlY2VyZW0gbm8gcHLDs3hpbW8gYW5vPwoKJCQKXGJlZ2lue2FsaWduZWR9CiYmJiBrID01flx0ZXh0eyhxdWFudGlkYWRlIGRlIHR1cmlzdGFzIGZhbGVjZXJlbSBubyBpbnRlcnZhbG8gZGUgdW0gYW5vKX0gXFwKJiYmIFxsYW1iZGEgPTEwflx0ZXh0eyhtw6lkaWEgZGUgdHVyaXN0YXMgcXVlIGZhbGVjZW0gbm8gaW50ZXJ2YWxvIGRlIHVtIGFubyl9IFxcCiYmIFxcCiYmJiBQXGxlZnQoWD01XHJpZ2h0KT0gXGZyYWN7ZV57LTEwfTEwXns1fX17NSF9PTAsMDM3PTM3XCUKXGVuZHthbGlnbmVkfQokJApDb21vIHJlc3VsdGFkbywgdGVtb3MgcXVlIGEgcHJvYmFiaWxpZGFkZSBkZSBmYWxlY2ltZW50byBkZSBleGF0YW1lbnRlIDUgdHVyaXN0YXMgbm8gcHLDs3hpbW8gYW5vIMOpIGRlICQzLDVcJSQuIEFnb3JhLCBwYXJhIGRpdmVyc29zIHZhbG9yZXMgZGUgJGskIHRlbW9zIGEgc2VndWludGUgZGlzdHJpYnVpw6fDo28gZGUgcHJvYmFiaWxpZGFkZXM6CgpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZyA9IEZBTFNFLCBmaWcuYWxpZ249J2NlbnRlcicsIGZpZy5oZWlnaHQ9N30KIyB0YXhhIG3DqWRpYSBkZSBvY29ycsOqbmNpYSBubyBpbnRlcnZhbG8gZGUgdW0gYW5vCmxhbWJkYSA8LSAxMAoKIyBxdWFudGlkYWRlIGRlIHR1cmlzdGFzIGZhbGVjZW5kbyBubyBpbnRlcnZhbG8gZGUgdW0gYW5vCmsgPC0gMDoxNQoKIyBkaXN0cmlidWnDp8OjbyBkZSBwcm9iYWJpbGlkYWRlIHBhcmEgY2FkYSBwb3Nzw612ZWwgawpwIDwtIGRwb2lzKHggPSBrLCBsYW1iZGEgPSBsYW1iZGEpCgojIGdyw6FmaWNvIGRhIGRpc3RyaWJ1acOnw6NvIGRlIHByb2JhYmlsaWRhZGUKcGxvdChrLHAsdHlwZT0iaCIseGxpbT1jKDAsMTUpLCBsd2QgPSAyLCBjb2wgPSAiYmx1ZSIseWxhYiA9ICJwcm9iYWJpbGlkYWRlIiwgeGxhYiA9ICJxdWFudGlkYWRlIGRlIHR1cmlzdGFzIGZhbGVjZW5kbyBubyBpbnRlcnZhbG8gZGUgdW0gYW5vIikKI3Bsb3QoaywgcCwgdHlwZSA9ICJoIiApCnBvaW50cyhrLHAscGNoPTE2LGNleD0yLGNvbD0iZGFyayByZWQiKQpgYGAKCiMjIyMjICoqQ09OVMONTlVBUyoqCgpRdWFuZG8gdW1hIHZhcmnDoXZlbCBxdWUgZXN0w6Egc2VuZG8gbWVkaWRhIMOpIGV4cHJlc3NhIGVtIHVtYSBlc2NhbGEgY29udMOtbnVhLCBuw6NvIHNlIHBvZGUgdXNhciBkaXN0cmlidWnDp8O1ZXMgZGUgcHJvYmFiaWxpZGFkZGVzIHRhaXMgY29tbyBCZXJub3VsbGksIEJpbm9taWFsIG91IFBvaXNzb24gcGFyYSBvYnRlciBwcm9iYWJpbGlkYWRlcy4KCkltYWdpbmUgbyBwb250ZWlybyBkZSB1bSByZWzDs2dpby4gVW1hIHZleiBxdWUgdGVuaGEgc2lkbyBwb3N0byBhIGdpcmFyLCBvIHBvbnRlaXJvIHBvZGUgcGFyYXIgZW0gcXVhbHF1ZXIgcG9zacOnw6NvIGFvIGxvbmdvIGRvIGPDrWN1bG8uIEFnb3JhLCBpbWFnaW5lIHVtIGPDrXJjdWxvIGRpdmlkaWRvIGVtIDguMDAwIHBhcnRlcyBpZ3VhaXMgYW8gaW52w6lzIGRhcyAxMiBwYXJ0ZXMgcXVlIHRyYWRpY2lvbmFsbWVudGUgdW0gcmVsw7NnaW8gdGVtLiBTZSBjYWRhIHBvc2nDp8OjbyBjb25zdGl0dWkgdW0gcG9udG8gZGUgcGFyYWRhIHTDo28gcHJvdsOhdmVsIHF1YW50byBxdWFscXVlciBvdXRyYSwgc29tbyBsZXZhZG9zIMOgIHNlZ3VpbnRlIGNvbmNsdXPDo286Cgo+IENvbW8gaMOhIHRhbnRvcyByZXN1bHRhZG9zIHBvc3PDrXZlaXMsIGEgcHJvYmFiaWxpZGFkZSBkbyBwb250ZWlybyBwYXJhciBlbSBxdWFscXVlciB2YWxvciBwYXJ0aWN1bGFyIMOpIHTDo28gcGVxdWVuYSBxdWUgZGV2ZSBzZXIgY29uc2lkZXJhZGEgYXByb3hpbWFkYW1lbnRlIHplcm8uIAoKTmEgdmVyZGFkZSwgdGVtb3MgYW8gbWVub3MgMSBtaWxow6NvIGRlIHBvc2nDp8O1ZXMgZGlmZXJlbnRlcywgZGUgbW9kbyBxdWUgYSBwcm9iYWJpbGlkYWRlIGRvIHBvbnRlaXRvIHBhcmFyIGV4YXRhbWVudGUgZW0gdW1hIGRlbGFzIHNlcmlhIGRlICQxLzEuMDAwLjAwMCA9IDAuMDAwMDAxJAoKRW0gZmFjZSBkZXNzYSBwZWN1bGlhcmlkYWRlLCDDqSByZWFsbWVudGUgc2VtIHNlbnRpZG8gZmFsYXItc2UgZGEgcHJvYmFiaWxpZGFkZSBkZSB1bSByZXN1bHRhZG8gZXNwZWPDrWZpY28sIHRhbCBjb21vIGZpemVtb3Mgbm8gZXN0dWRvIGRhcyBkaXN0cmlidWnDp8O1ZXMgZGlzY3JldGFzLiBBc3NpbSwgYSBhbsOhbGlzZSBkYXMgdmFyacOhdmVpcyBjb250w61udWFzIHRlbmRlIGEgZm9jYWxpemFyIGEgcHJvYmFiaWxpZGFkZSBkZSB1bWEgdmFyacOhdmVsIGFsZWF0w7NyaWEgdG9tYXIgdW0gdmFsb3IgbnVtIGRldGVybWluYWRvIGludGVydmFsbyAocG9yIGV4ZW1wbG8sIGEgcHJvYmFiaWxpZGFkZSBkbyBwb250ZWlybyBwYXJhciBlbnRyZSAkMyQgb3UgJDQkKS4KCiMjIyMjIyAqKkRpc3RyaWJ1acOnw6NvIEV4cG9uZW5jaWFsKioKCkRlIHVtYSBmb3JtYSBiYXN0YW50ZSByZXN1bWlkYSBpbWFnaW5lIHVtYSB2YXJpw6F2ZWwgYWxlYXTDs3JpYSBkZSBQb2lzc29uLCBvbmRlIHRlbW9zIGEgKipjb250YWdlbSBkbyBuw7ptZXJvIGRlIG9jb3Jyw6puY2lhcyBkZSBmYWxoYXMgZW0gdW0gaW50ZXJ2YWxvKiouIFN1cG9uaGEgYWdvcmEgcXVlIGVzdGVqYW1vcyBpbnRlcmVzc2Fkb3MgZW0gdmVyaWZpY2FyIGEgcHJvYmFiaWxpZGFkZSAqKmRvIHRlbXBvIHRyYW5zY29ycmlkbyBlbnRyZSBkdWFzIG9jb3Jyw6puY2lhcyBjb25zZWN1dGl2YXMgZGUgZmFsaGFzKiouIEVzc2Egw7psdGltYSDDqSBjb25zaWRlcmFkYSB1bWEgdmFyacOhdmVsIGFsZWF0w7NyaWEgZXhwb25lbmNpYWwuIAoKQSBkaXN0cmlidWnDp8OjbyBleHBvbmVuY2lhbCDDqSBtdWl0byB1dGlsaXphZGEgcGFyYSBtb2RlbGFyIG8gdGVtcG8gYXTDqSBxdWUgdW0gZXZlbnRvIHNlIHZlcmlmaXF1ZS4gUG9yIGV4ZW1wbG8sIG8gdGVtcG8gZW50cmUgZmFsaGFzIGRlIGVxdWlwYW1lbnRvcyBvdSB0ZW1wbyBlbnRyZSBhIG9jb3Jyw6puY2lhIGRlIGFjaWRlbnRlcyBlbSB1bWEgcm9kb3ZpYS4gCgpQYXJhIHRhbnRvLCB1c2Ftb3MgYSBmw7NybXVsYToKCiQkClBcbGVmdChYPnRccmlnaHQpID0gIFxsYW1iZGEgZV57LVxsYW1iZGEgdH0KJCQKb25kZToKCiogJFxsYW1iZGEkIHJlcHJlc2VudGEgYSB0YXhhIGRlIGZhbGhhIHBvciB1bmlkYWRlIGRlIHRlbXBvLAoqICR0JCDDqSB1bSB0ZW1wbyBkZSBmYWxoYSAKCkEgcGFydGlyIGRlc3NhIGbDs3JtdWxhLCBwb2RlbW9zIGNhbGN1bGFyIGEgcHJvYmFiaWxpZGFkZSBkZSBxdWUgbyB0ZW1wbyBhbnRlcyBkYSBwcmltZWlyYSBvY29ycsOqbmNpYSBkZSBmYWxoYSBzZWphIG1haW9yIHF1ZSB1bSBkYWRvIHRlbXBvICR0JC4gSsOhIGEgcHJvYmFiaWxpZGFkZSBkZSB1bWEgb2NvcnLDqm5jaWEgZW0gJHQkIG91IGFudGVzIGRlICR0JCDDqSBkYWRhIHBvcjoKCiQkClBcbGVmdChYIFxsZSB0XHJpZ2h0KSA9IDEtZV57XGxhbWJkYSB0fQokJApBbMOpbSBkaXNzbywgdGVtb3MgcXVlIG8gdmFsb3IgZXNwZXJhZG8gZSBhIHZhcmnDom5jaWEgc2Vyw6NvOiAKCiQkClxiZWdpbnthbGlnbmVkfQpFXGxlZnRbWFxyaWdodF0gPSBcZnJhY3sxfXtcbGFtYmRhfSBcXApWYXJcbGVmdChYXHJpZ2h0KSA9IFxmcmFjezF9e1xsYW1iZGFeMn0KXGVuZHthbGlnbmVkfQokJAoqICoqRXhlbXBsbzoqKiBTdXBvbmhhIHF1ZSwgZW0gZGV0ZXJtaW5hZG8gcGVyw61vZG8gZG8gZGlhLCBvIHRlbXBvIG3DqWRpbyBkZSBhdGVuZGltZW50byBlbSB1bSBjYWl4YSBkZSBiYW5jbyBzZWphIGRlIDUgbWludXRvcy4gQWRtaXRpbmRvIHF1ZSBvIHRlbXBvIHBhcmEgYXRlbmRpbWVudG8gdGVuaGEgZGlzdHJpYnVpw6fDo28gZXhwb25lbmNpYWwsIHRlbW9zIHF1ZSBhIHRheGEgZGUgZmFsaGEgcG9yIG1pbnV0byDDqSBkZSAkXGxhbWJkYT0gXGZyYWN7MX17NX0kLiBBIHBhcnRpciBkaXNzbywgcXVhbCBhIHByb2JhYmlsaWRhZGUgZGUgdW0gY2xpZW50ZSBlc3BlcmFyIG1haXMgZG8gcXVlIDUgbWludXRvcz8gCgpPIGdyw6FmaWNvIGFiYWl4byBhcHJlc2VudGEgYSBkaXN0cmlidWnDp8OjbyBkZSBwcm9iYWJpbGlkYWRlcyBleHBvbmVuY2lhbCBwYXJhICRcbGFtYmRhPSBcZnJhY3sxfXs1fSQuIENvbW8gZXN0YW1vcyBidXNjYW5kbyBhIHByb2JhYmlsaWRhZGUgZGUgdW0gY2xpZW50ZSBlc3BlcmFyIG1haXMgZG8gcXVlIDUgbWludXRvcywgdGVtb3MgcXVlIGZhemVyIDEgbWVub3MgYSBwcm9iYWJpbGlkYWRlIGRlIGVsZSBlc3BlcmFyIGF0w6kgNSBtaW51dG9zLgoKYGBge3IsIGVjaG89RkFMU0UsIHdhcm5pbmcgPSBGQUxTRSwgZmlnLmFsaWduPSdjZW50ZXInLCBmaWcuaGVpZ2h0PTd9CiMgdGF4YSBtw6lkaWEgZGUgb2NvcnLDqm5jaWEgCmxhbWJkYSA8LSAxLzUKCiMgdGVtcG8gYXTDqSBhIG9jb3Jyw6puY2lhCnQgPC0gc2VxKDAsIDIwLCBsZW5ndGgub3V0ID0gMTAwKQoKIyBkaXN0cmlidWnDp8OjbyBkZSBwcm9iYWJpbGlkYWRlIGV4cG9uZW5jaWFsIApwIDwtIGRleHAoeCA9IHQsIHJhdGUgPSBsYW1iZGEpCgojIGdyw6FmaWNvIGRhIGRpc3RyaWJ1acOnw6NvIGRlIHByb2JhYmlsaWRhZGUKcGxvdCh0LHAsdHlwZT0ibCIseGxpbT1jKDAsMTUpLCBsd2QgPSAyLCBjb2wgPSAiYmx1ZSIseWxhYiA9ICJsYW1iZGEiLCB4bGFiID0gInRlbXBvIGVudHJlIGEgb2NvcnLDqmNpYSBkZSBmYWxoYXMiKQpgYGAKCiMjIyMjIyAqKkRpc3RyaWJ1acOnw6NvIE5vcm1hbCoqCgpBIGRpc3RyaWJ1acOnw6NvIE5vcm1hbCBvdSBnYXVzc2lhbmEgw6kgYSBtYWlzIGZhbWlsaWFyIGRhcyBkaXN0cmlidWnDp8O1ZXMgZGUgcHJvYmFiaWxpZGFkZSBlIHVtYSBkYXMgbWFpcyBpbXBvcnRhbnRlcyBlbSBlc3RhdMOtc3RpY2EuIE11aXRhcyB2YXJpw6F2ZWlzIGFsZWF0w7NyaWFzIHBvZGVtIHNlciBkZXNjcml0YXMgcGVsYSBkaXN0cmlidWnDp8OjbyBOb3JtYWwuIAoKQSBlcXVhw6fDo28gZGEgY3VydmEgTm9ybWFsIMOpIGVzcGVjaWZpY2FkYSB1c2FuZG8gMiBwYXLDom1ldHJvczogYSBtw6lkaWEgJFxtdSQgZSBvIGRlc3ZpbyBwYWRyw6NvICRcc2lnbWEkLiBBIG3DqWRpYSByZWZlcmUtc2UgYW8gY2VudHJvIGRhIGRpc3RyaWJ1acOnw6NvIGUgbyBkZXN2aW8gcGFkcsOjbyBhbyBlc3BhbGhhbWVudG8gKG91IGFjaGF0YW1lbnRvKSBkYSBjdXJ2YS4gUGFyYSByZWZlcsOqbmNpYSwgYSBlcXVhw6fDo28gZGEgY3VydmEgw6k6CgokJApmXGxlZnQoeFxyaWdodCkgPSBcZnJhY3sxfXtcc3FydHsyXHBpIFxzaWdtYV4yfX1leHAgXGxlZnRcey1cZnJhY3sxfXsyfVxsZWZ0KFxmcmFje3gtXG11fXtcc2lnbWF9XHJpZ2h0KV4yIFxyaWdodFx9LH5+fi1caW5mdHk8eDxcaW5mdHl+flx0ZXh0e2V9flxzaWdtYT4wIAokJAoKR2VyYWxtZW50ZSwgcXVhbmRvIGRpemVtb3MgcXVlIHVtYSB2YXJpw6F2ZWwgYWxlYXTDs3JpYSAkWCQgc2VndWUgdW1hIGRpc3RyaWJ1acOnw6NvIE5vcm1hbCwgcG9kZW1vcyBlc2NyZXZlciAkWCBcc2ltIE5cbGVmdChcbXUsXHNpZ21hXjJccmlnaHQpJC4gQWzDqW0gZGlzc28sIHRlbW9zIHF1ZSBvIHZhbG9yIGVzcGVyYWRvIGUgYSB2YXJpw6JuY2lhIHNlcsOjbzogCgokJApcYmVnaW57YWxpZ25lZH0KRVxsZWZ0W1hccmlnaHRdID0gXG11IFxcClZhclxsZWZ0KFhccmlnaHQpID0gXHNpZ21hXjIKXGVuZHthbGlnbmVkfQokJApPIGdyw6FmaWNvIGFiYWl4byBtb3N0cmEgY29tbyBtdWRhciBhIG3DqWRpYSAkXG11JCBlL291IHZhcmnDom5jaWEgJFxzaWdtYV4yJCBpbXBhY3RhIG5hIGZvcm1hIGRhIGN1cnZhIE5vcm1hbC4KCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nID0gRkFMU0UsIGZpZy5hbGlnbj0nY2VudGVyJywgZmlnLmhlaWdodD03fQojIHZhbG9yZXMgZGEgdmFyacOhdmVsIGFsZWF0w7NyaWEgWAp4IDwtIHNlcShmcm9tID0gLTMsIHRvID0zLCBsZW5ndGgub3V0ID0gMjAwKQp4MiA8LSBzZXEoZnJvbSA9IC01LCB0byA9IDUsIGxlbmd0aC5vdXQgPSAyMDApCgojIG3DqWRpYXMKbXUgPC0gYygwLDAsMCkKbXUyIDwtIGMoLTAuNywxLDEuNSkKCiMgdmFyacOibmNpYXMKc2lnbWEgPC0gYygwLjcsMSwxLjUpCnNpZ21hMiA8LSBjKDEsMSwxKQoKIyBkaXN0cmlidWnDp8OjbyBkZSBwcm9iYWJpbGlkYWRlIG5vcm1hbApwMSA8LSBkbm9ybSh4ID0geCwgIG1lYW4gPSBtdVsxXSwgc2QgPSBzaWdtYVsxXSkKcDIgPC0gZG5vcm0oeCA9IHgsIG1lYW4gPSBtdVsyXSwgc2QgPSBzaWdtYVsyXSkKcDMgPC0gZG5vcm0oeCA9IHgsIG1lYW4gPSBtdVszXSwgc2QgPSBzaWdtYVszXSkKcDQgPC0gZG5vcm0oeCA9IHgyLCBtZWFuID0gbXUyWzFdLCBzZCA9IHNpZ21hMlsxXSkKcDUgPC0gZG5vcm0oeCA9IHgyLCBtZWFuID0gbXUyWzJdLCBzZCA9IHNpZ21hMlsyXSkKcDYgPC0gZG5vcm0oeCA9IHgyLCBtZWFuID0gbXUyWzNdLCBzZCA9IHNpZ21hMlszXSkKCiMgZGl2aWRpciBhIHRlbGEgZW0gZHVhcyBjb2x1bmFzCnBhcihtZnJvdz1jKDEsMikpCgojIGdyw6FmaWNvIGRhIGRpc3RyaWJ1acOnw6NvIGRlIHByb2JhYmlsaWRhZGUgcGFyYSBhIG1lZGlhIGNvbnN0YW50ZQpwbG90KHgsIHAxLCB0eXBlID0gImwiLCB4bGltPWMoLTQsNCksIGx3ZCA9IDIsIGNvbCA9ICJibHVlIiwgeWxhYiA9ICJEZW5zaWRhZGUiLCB4bGFiID0gIngiLAogICAgIG1haW4gPSAiRGlzdHJpYnVpw6fDo28gTm9ybWFsIC0gTcOpZGlhIGNvbnN0YW50ZSIpCmxpbmVzKHgsIHAyLCB0eXBlID0gImwiLCB4bGltPWMoLTQsNCksIGx3ZCA9IDMsIGNvbCA9ICJyZWQiKQpsaW5lcyh4LCBwMywgdHlwZSA9ICJsIiwgeGxpbT1jKC00LDQpLCBsd2QgPSA0LCBjb2wgPSAiYmxhY2siKQpsZWdlbmQoInRvcHJpZ2h0IiwgbGVnZW5kID0gYygic2lnbWE9MC43Iiwic2lnbWE9MSIsInNpZ21hPTEuNSIpLCAKICAgICAgIGNvbCA9IGMoImJsdWUiLCJyZWQiLCAiYmxhY2siKSwgbHdkID0gYygyLDMsNCkpCgojIGdyw6FmaWNvIGRhIGRpc3RyaWJ1acOnw6NvIGRlIHByb2JhYmlsaWRhZGUgcGFyYSBhIHZhcmnDom5jaWEgY29uc3RhbnRlCnBsb3QoeDIsIHA0LCB0eXBlID0gImwiLCB4bGltPWMoLTYsNiksIGx3ZCA9IDIsIGNvbCA9ICJibHVlIiwgeWxhYiA9ICJEZW5zaWRhZGUiLCB4bGFiID0gIngiLAogICAgIG1haW4gPSAiRGlzdHJpYnVpw6fDo28gTm9ybWFsIC0gVmFyacOibmNpYSBjb25zdGFudGUiKQpsaW5lcyh4MiwgcDUsIHR5cGUgPSAibCIsIHhsaW09YygtNiw2KSwgbHdkID0gMywgY29sID0gInJlZCIpCmxpbmVzKHgyLCBwNiwgdHlwZSA9ICJsIiwgeGxpbT1jKC02LDYpLCBsd2QgPSA0LCBjb2wgPSAiYmxhY2siKQpsZWdlbmQoInRvcGxlZnQiLCBsZWdlbmQgPSBjKCJtdT0tMC43MCIsIm11PTEiLCJtdT0xLjUiKSwgCiAgICAgICBjb2wgPSBjKCJibHVlIiwicmVkIiwgImJsYWNrIiksIGx3ZCA9IGMoMiwzLDQpKQpgYGAKCgpQYXJhIG8gY8OhbGN1bG8gZGUgcHJvYmFiaWxpZGFkZSwgdXNhbW9zOgoKJCQKUFxsZWZ0KGE8WDxiXHJpZ2h0KT1caW50X3thfV57Yn17XGZyYWN7MX17XHNxcnR7MlxwaSBcc2lnbWFeMn19ZXhwIFxsZWZ0XHstXGZyYWN7MX17Mn1cbGVmdChcZnJhY3t4LVxtdX17XHNpZ21hfVxyaWdodCleMiBccmlnaHRcfWR4fQokJAoKQ2FiZSBub3RhciBxdWUgYSBpbnRlZ3JhbCBkYSBmdW7Dp8OjbyBkZW5zaWRhZGUgZGUgcHJvYmFiaWxpZGFkZSBOb3JtYWwgbsOjbyBwb3NzdWkgc29sdcOnw6NvIGFuYWzDrXRpY2EsIHNlbmRvIG5lc3RlIGNhc28gbyBzZXUgY8OhbGN1bG8gZGV2ZSBzZXIgcmVhbGl6YWRvIHBvciBtw6l0b2RvIG51bcOpcmljby4gUGFyYSBzYW5hciB0YWwgZGlmaWN1bGRhZGUgYSBmdW7Dp8OjbyBwb2RlIHNlciBwYWRyb25pemFkYSBjb20gYSBzdWJzdGl0dWnDp8OjbyBkb3MgcGFyw6JtZXRyb3MgcG9yICRcbXU9MCQgZSAkXHNpZ21hXjI9MSQuIEVzc2EgYWJvcmRhZ2VtIMOpIGRhZGEgcGVsYSBkZWZpbmnDp8OjbyBkZSB1bWEgbm92YSB2YXJpw6F2ZWwgYWxlYXTDs3JpYSAkWiQsIGNoYW1hZGEgZGUgKip2YXJpw6F2ZWwgYWxlYXTDs3JpYSBOb3JtYWwgcGFkcm9uaXphZGEqKi4KCjxwIGFsaWduPSJjZW50ZXIiPgohW0FsdF0oLi4vLi4vZmlndXJlcy9ub3JtYWwuUE5HKQo8L3A+CgoKIyMjIyMjICoqRGlzdHJpYnVpw6fDo28gTG9nbm9ybWFsKioKCkFvIGNvbnRyw6FyaW8gZGEgZGlzdHJpYnVpw6fDo28gTm9ybWFsIGUgb3V0cmFzIGRpc3RyaWJ1acOnw7VlcyBkZSBwcm9iYWJpbGlkYWRlIHNpbcOpdHJpY2FzLCBlbSBxdWUgYXMgbWVkaWRhcyBkZSB0ZW5kw6puY2lhIGNlbnRyYWwgY29udmVyZ2VtIHBhcmEgdW0gbWVzbW8gdmFsb3IsIG5hIGRpc3RyaWJ1acOnw6NvIExvZ25vcm1hbCwgbW9kYSwgbcOpZGlhIGUgbWVkaWFuYSBhcHJlc2VudGFtIGxvY2FsaXphw6fDtWVzIGRpc3RpbnRhcy4gCgpBIGZ1bsOnw6NvIGRlbnNpZGFkZSBkZSBwcm9iYWJpbGlkYWRlIGRlIHVtYSB2YXJpw6F2ZWwgYWxlYXTDs3JpYSAkWCQgcXVlIHNlZ3VlIHVtYSBkaXN0cmlidWnDp8OjbyBMb2dub3JtYWwgY29tIG3DqWRpYSAkXG11JCBlIGRlc3ZpbyAkXHNpZ21hJCDDqToKCiQkCmZcbGVmdCh4XHJpZ2h0KSA9IFxmcmFjezF9e1xzcXJ0ezJccGkgXHNpZ21hXjJ9fWV4cCBcbGVmdFx7LVxmcmFjezF9ezJ9XGxlZnQoXGZyYWN7bG4oeCktXG11fXtcc2lnbWF9XHJpZ2h0KV4yIFxyaWdodFx9LH5+fi1caW5mdHk8eDxcaW5mdHl+flx0ZXh0e2V9flxzaWdtYT4wIAokJAoKT2JzZXJ2ZSBjb21vIG8gZ3LDoWZpY28gZGEgZGlzdHJpYnVpw6fDo28gc2UgYWx0ZXJuYSBuYSBtZWRpZGEgcXVlIHRlbW9zIHZhbG9yZXMgZGl2ZXJzb3MgcGFyYSAKCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nID0gRkFMU0UsIGZpZy5hbGlnbj0nY2VudGVyJywgZmlnLmhlaWdodD03fQojIHZhbG9yZXMgZGEgdmFyacOhdmVsIGFsZWF0w7NyaWEgWAp4IDwtIHNlcShmcm9tID0gMCwgdG8gPSAzLCBsZW5ndGggPSAyMDApCngyIDwtIHNlcShmcm9tID0gMCwgdG8gPSA1LCBsZW5ndGgub3V0ID0gMjAwKQoKIyBtw6lkaWFzCm11IDwtIGMoMCwgMCwgMCkKbXUyIDwtIGMoLTAuNywgMSwgMS41KQoKIyB2YXJpw6JuY2lhcwpzaWdtYSA8LSBjKDAuNywgMSwgMS41KQpzaWdtYTIgPC0gYygxLCAxLCAxKQoKIyBkaXN0cmlidWnDp8OjbyBkZSBwcm9iYWJpbGlkYWRlIExvZ25vcm1hbApwMSA8LSBkbG5vcm0oeCA9IHgsIG1lYW4gPSBtdVsxXSwgc2QgPSBzaWdtYVsxXSkKcDIgPC0gZGxub3JtKHggPSB4LCBtZWFuID0gbXVbMl0sIHNkID0gc2lnbWFbMl0pCnAzIDwtIGRsbm9ybSh4ID0geCwgbWVhbiA9IG11WzNdLCBzZCA9IHNpZ21hWzNdKQpwNCA8LSBkbG5vcm0oeCA9IHgyLCBtZWFuID0gbXUyWzFdLCBzZCA9IHNpZ21hMlsxXSkKcDUgPC0gZGxub3JtKHggPSB4MiwgbWVhbiA9IG11MlsyXSwgc2QgPSBzaWdtYTJbMl0pCnA2IDwtIGRsbm9ybSh4ID0geDIsIG1lYW4gPSBtdTJbM10sIHNkID0gc2lnbWEyWzNdKQoKIyBkaXZpZGlyIGEgdGVsYSBlbSBkdWFzIGNvbHVuYXMKcGFyKG1mcm93PWMoMSwyKSkKCiMgZ3LDoWZpY28gZGEgZGlzdHJpYnVpw6fDo28gZGUgcHJvYmFiaWxpZGFkZSBwYXJhIGEgbWVkaWEgY29uc3RhbnRlCnBsb3QoeCwgcDEsIHR5cGUgPSAibCIsIHhsaW09YygwLDEwKSwgbHdkID0gMiwgY29sID0gImJsdWUiLCB5bGFiID0gIkRlbnNpZGFkZSIsIHhsYWIgPSAieCIsCiAgICAgbWFpbiA9ICJEaXN0cmlidWnDp8OjbyBMb2dub3JtYWwgLSBNw6lkaWEgY29uc3RhbnRlIikKbGluZXMoeCwgcDIsIHR5cGUgPSAibCIsIHhsaW09YygwLDEwKSwgbHdkID0gMywgY29sID0gInJlZCIpCmxpbmVzKHgsIHAzLCB0eXBlID0gImwiLCB4bGltPWMoMCwxMCksIGx3ZCA9IDQsIGNvbCA9ICJibGFjayIpCmxlZ2VuZCgidG9wcmlnaHQiLCBsZWdlbmQgPSBjKCJzaWdtYT0wLjciLCJzaWdtYT0xIiwic2lnbWE9MS41IiksIAogICAgICAgY29sID0gYygiYmx1ZSIsInJlZCIsICJibGFjayIpLCBsd2QgPSBjKDIsMyw0KSkKCiMgZ3LDoWZpY28gZGEgZGlzdHJpYnVpw6fDo28gZGUgcHJvYmFiaWxpZGFkZSBwYXJhIGEgdmFyacOibmNpYSBjb25zdGFudGUKcGxvdCh4MiwgcDQsIHR5cGUgPSAibCIsIHhsaW09YygwLDEwKSwgbHdkID0gMiwgY29sID0gImJsdWUiLCB5bGFiID0gIkRlbnNpZGFkZSIsIHhsYWIgPSAieCIsCiAgICAgbWFpbiA9ICJEaXN0cmlidWnDp8OjbyBMb2dub3JtYWwgLSBWYXJpw6JuY2lhIGNvbnN0YW50ZSIpCmxpbmVzKHgyLCBwNSwgdHlwZSA9ICJsIiwgeGxpbT1jKDAsMTApLCBsd2QgPSAzLCBjb2wgPSAicmVkIikKbGluZXMoeDIsIHA2LCB0eXBlID0gImwiLCB4bGltPWMoMCwxMCksIGx3ZCA9IDQsIGNvbCA9ICJibGFjayIpCmxlZ2VuZCgidG9wbGVmdCIsIGxlZ2VuZCA9IGMoIm11PS0wLjcwIiwibXU9MSIsIm11PTEuNSIpLCAKICAgICAgIGNvbCA9IGMoImJsdWUiLCJyZWQiLCAiYmxhY2siKSwgbHdkID0gYygyLDMsNCkpCmBgYAoKCiMjIyMjIyAqKkRpc3RyaWJ1acOnw6NvIHQgZGUgU3R1ZGVudCoqCgpBIGRpc3RyaWJ1acOnw6NvIHQgZGUgU3R1ZGVudCDDqSB1bWEgZGFzIGRpc3RyaWJ1acOnw7VlcyBtYWlzIHV0aWxpemFkYXMgbmEgZXN0YXTDrXN0aWNhLCBjb20gYXBsaWNhw6fDtWVzIHF1ZSB2w6NvIGRlc2RlIGEgbW9kZWxhZ2VtIGVzdGF0w61zdGljYSBhdMOpIHRlc3RlIGRlIGhpcMOzdGVzZXMuIAoKVW1hIHZhcmnDoXZlbCBhbGVhdMOzcmlhIGNvbnTDrW51YSAkWCQgdGVtIGRpc3RyaWJ1acOnw6NvIHQgZGUgU3R1ZGVudCBjb20gJFx1cHNpbG9uJCBncmF1cyBkZSBsaWJlcmRhZGUsIGRlbm90YWRhIHBvciAkdFxsZWZ0KFx1cHNpbG9uXHJpZ2h0KSQsIHNlIHN1YSBmdW7Dp8OjbyBkZSBkZW5zaWRhZGUgZGUgcHJvYmFiaWxpZGFkZSBmb3IgZGFkYSBwb3I6CgokJApmXGxlZnQoeFxyaWdodCk9XGZyYWN7MX17XHNxcnR7XHVwc2lsb24gXHBpfX1cZnJhY3tcR2FtbWFcbGVmdChcZnJhY3tcdXBzaWxvbisxfXsyfVxyaWdodCkgfXtcR2FtbWEgXGxlZnQoXGZyYWN7XHVwc2lsb259ezJ9XHJpZ2h0KX1cbGVmdCgxK1xmcmFje3heMn17XHVwc2lsb259XHJpZ2h0KV57LVxsZWZ0KFxmcmFje1x1cHNpbG9uKzF9ezJ9XHJpZ2h0KX0sfn5+LVxpbmZ0eTx4PFxpbmZ0eQokJApOYSB2ZXJkYWRlLCBhIGRpc3RyaWJ1acOnw6NvIHQgZGUgU3R1ZGVudCDDqSBhIGRpdmlzw6NvIGVudHJlIHVtYSB2YXJpw6F2ZWwgYWxlYXTDs3JpYSBjb20gZGlzdHJpYnVpw6fDo28gTm9ybWFsIHBhZHJvbml6YWRhIGUgdW1hIHZhcmnDoXZlbCBhbGVhdMOzcmlhIGNvbSBkaXN0cmlidWnDp8OjbyBRdWktUXVhZHJhZG8uIEFsw6ltIGRpc3NvLCB0ZW1vcyBxdWUgbyB2YWxvciBlc3BlcmFkbyBlIGEgdmFyacOibmNpYSBzZXLDo286IAoKJCQKXGJlZ2lue2FsaWduZWR9CkVcbGVmdFtYXHJpZ2h0XSA9IDAgXFwKVmFyXGxlZnQoWFxyaWdodCkgPSBcZnJhY3tcdXBzaWxvbn17XHVwc2lsb24tMn0KXGVuZHthbGlnbmVkfQokJApPYnNlcnZlIHF1ZSAkXHVwc2lsb24gPjIkIHBhcmEgcXVlIGEgdmFyacOibmNpYSBleGlzdGEuIEZhemVuZG8gZGl2ZXJzb3MgdmFsb3JlcyBwYXJhICRcdXBzaWxvbiQgcGVyY2ViZW1vcyBxdWUgYSBkZW5zaWRhZGUgZGEgZGlzdHJpYnVpw6fDo28gdCBkZSBTdHVkZW50IHNlIGFwcm94aW1hIGJhc3RhbnRlIGRlIHVtYSBkaXN0cmlidWnDp8OjbyBOb3JtYWwgcGFkcm9uaXphZGEgKG3DqWRpYSBudWxhIGUgdmFyacOibmNpYSBpZ3VhbCBhIDEpIHF1YW5kbyAkXHVwc2lsb24kIMOpIGdyYW5kZS4gCgpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZyA9IEZBTFNFLCBmaWcuYWxpZ249J2NlbnRlcicsIGZpZy5oZWlnaHQ9N30KIyB2YWxvcmVzIGRhIHZhcmnDoXZlbCBhbGVhdMOzcmlhIFgKeCA8LSBzZXEoZnJvbSA9IC01LCB0byA9IDUsIGxlbmd0aC5vdXQgPSAyMDApCgojIHBhcsOibWV0cm9zIGRhIE5vcm1hbCBwYWRyb25pemFkYQptdSA8LSAwCnNpZ21hIDwtIDEKCiMgcGFyw6JtZXRyb3MgZGEgdCBkZSBTdHVkZW50CnVwc2lsb24gPC0gYygyLjUsIDUsIDEwMCkKCiMgZGlzdHJpYnVpw6fDo28gZGUgcHJvYmFiaWxpZGFkZSBub3JtYWwgcGFkcm9uaXphZGEKcCA8LSBkbm9ybSh4ID0geCwgbWVhbiA9IG11LCBzZCA9IHNpZ21hKQoKIyBkaXN0cmlidWnDp8OjbyBkZSBwcm9iYWJpbGlkYWRlIHQgZGUgU3R1ZGVudApwMSA8LSBkdCh4ID0geCwgZGYgPSB1cHNpbG9uWzFdKQpwMiA8LSBkdCh4ID0geCwgZGYgPSB1cHNpbG9uWzJdKQpwMyA8LSBkdCh4ID0geCwgZGYgPSB1cHNpbG9uWzNdKQoKIyBncsOhZmljbyBkYSBkaXN0cmlidWnDp8OjbyBkZSBwcm9iYWJpbGlkYWRlIG5vcm1hbCBwYWRyb25pemFkYQpwbG90KHgsIHAsIHR5cGUgPSAibCIsIHhsaW09YygtNiw2KSwgbHdkID0gNSwgY29sID0gImJsdWUiLCB5bGFiID0gIkRlbnNpZGFkZSIsIHhsYWIgPSAieCIsCiAgICAgbWFpbiA9ICIiKQpsaW5lcyh4LCBwMSwgdHlwZSA9ICJsIiwgeGxpbT1jKC02LDYpLCBsd2QgPSAyLCBjb2wgPSAicmVkIikKbGluZXMoeCwgcDIsIHR5cGUgPSAibCIsIHhsaW09YygtNiw2KSwgbHdkID0gMywgY29sID0gImJsYWNrIikKbGluZXMoeCwgcDMsIHR5cGUgPSAibCIsIHhsaW09YygtNiw2KSwgbHdkID0gNCwgY29sID0gImdyZXkiKQoKbGVnZW5kKCJ0b3BsZWZ0IiwgbGVnZW5kID0gYygiTigwLDEpIiwidCgyLjUpIiwidCg1KSIsICJ0KDEwMCkiKSwgCiAgICAgICBjb2wgPSBjKCJibHVlIiwicmVkIiwgImJsYWNrIiwgImdyZXkiKSwgbHdkID0gYyg1LDIsMyw0KSkKYGBgCgojIyMjIyMgKipEaXN0cmlidWnDp8OjbyBkZSBDYXVjaHkqKgoKQSBkaXN0cmlidWnDp8OjbyBkZSBDYXVjaHkgdGVtIHN1YSBpbXBvcnTDom5jaWEgZW0gZGl2ZXJzYXMgw6FyZWFzIGRvIGNvbmhlY2ltZW50byAoZsOtc2ljYSwgbWF0ZW3DoXRpY2EsIGZpbmFuw6dhcywgLi4uKS4gVW1hIHZhcmnDoXZlbCBhbGVhdMOzcmlhIGNvbnTDrW51YSAkWCQgdGVtIGRpc3RyaWJ1acOnw6NvIGRlIENhdWNoeSBjb20gcGFyw6JtZXRyb3MgJFxhbHBoYSQgZSAkXGJldGEkIHNlIHN1YSBmdW7Dp8OjbyBkZW5zaWRhZGUgZGUgcHJvYmFiaWxpZGFkZSBmb3IgZGVmaW5pZGEgcG9yOgoKJCQKZlxsZWZ0KHhccmlnaHQpID0gXGZyYWN7MX17XHBpXGJldGFcbGVmdFsxK1xsZWZ0W1xmcmFje3gtXGFscGhhfXtcYmV0YX1ccmlnaHRdXjJccmlnaHRdfSx+fn4tXGluZnR5PHg8XGluZnR5CiQkCm9uZGUgJFxhbHBoYSQgZSAkXGJldGEkIHPDo28gb3MgcGFyw6JtZXRyb3MgZGUgbG9jYcOnw6NvIGUgZXNjYWxhLCByZXNwZWN0aXZhbWVudGUuIAoKTyBncsOhZmljbyBhYmFpeG8gbW9zdHJhIGNvbW8gYSBkZW5zaWRhZGUgZGUgcHJvYmFiaWxpZGFkZSBkYSBkaXN0cmlidWnDp8OjbyBDYXVjaHkgc2UgY29tcG9ydGEgbmEgbWVkaWRhIHF1ZSBhbHRlcmFtb3Mgb3MgdmFsb3JlcyBkb3Mgc2V1cyBwYXLDom1ldHJvczoKCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nID0gRkFMU0UsIGZpZy5hbGlnbj0nY2VudGVyJywgZmlnLmhlaWdodD03fQojIHZhbG9yZXMgZGEgdmFyacOhdmVsIGFsZWF0w7NyaWEgWAp4IDwtIHNlcShmcm9tID0gLTYsIHRvID0gNiwgbGVuZ3RoID0gMjAwKQoKIyBBbHBoYQphbHBoYSA8LSBjKDIsIDAsIDApCgojIEJldGEKYmV0YSA8LSBjKDAuNSwgMiwgMC41KQoKIyBkaXN0cmlidWnDp8OjbyBkZSBwcm9iYWJpbGlkYWRlIGRlQ2F1Y2h5CnAxIDwtIGRjYXVjaHkoeCA9IHgsIGxvY2F0aW9uID0gYWxwaGFbMV0sIHNjYWxlID0gYmV0YVsxXSkKcDIgPC0gZGNhdWNoeSh4ID0geCwgbG9jYXRpb24gPSBhbHBoYVsyXSwgc2NhbGUgPSBiZXRhWzJdKQpwMyA8LSBkY2F1Y2h5KHggPSB4LCBsb2NhdGlvbiA9IGFscGhhWzNdLCBzY2FsZSA9IGJldGFbM10pCgoKIyBncsOhZmljbyBkYSBkaXN0cmlidWnDp8OjbyBkZSBwcm9iYWJpbGlkYWRlIHBhcmEgYSBtZWRpYSBjb25zdGFudGUKcGxvdCh4LCBwMSwgdHlwZSA9ICJsIiwgeGxpbT1jKC03LDcpLCBsd2QgPSAyLCBjb2wgPSAiYmx1ZSIsIHlsYWIgPSAiRGVuc2lkYWRlIiwgeGxhYiA9ICJ4IiwKICAgICBtYWluID0gIkRpc3RyaWJ1acOnw6NvIGRlIENhdWNoeSIpCmxpbmVzKHgsIHAyLCB0eXBlID0gImwiLCB4bGltPWMoLTcsNyksIGx3ZCA9IDMsIGNvbCA9ICJyZWQiKQpsaW5lcyh4LCBwMywgdHlwZSA9ICJsIiwgeGxpbT1jKC03LDcpLCBsd2QgPSA0LCBjb2wgPSAiYmxhY2siKQpsZWdlbmQoInRvcHJpZ2h0IiwgbGVnZW5kID0gYygiYWxwaGE9MiBlIGJldGE9MC41IiwiYWxwaGE9MCBlIGJldGE9MiIsImFscGhhPTAgZSBiZXRhPTAuNSIpLCAKICAgICAgIGNvbCA9IGMoImJsdWUiLCJyZWQiLCAiYmxhY2siKSwgbHdkID0gYygyLDMsNCkpCmBgYAoKPG9sIHN0YXJ0PSI0IiA+CjxsaT4gPGg0PiA8Yj4gVkVUT1JFUyBBTEVBVMOTUklPUyA8L2I+IDwvaDI+IDwvbGk+Cjwvb2w+CgpQYXJhIGZhY2lsaXRhciBvIGVudGVuZGltZW50byBzb2JyZSB2ZXRvcmVzIGFsZWF0w7NyaW9zICh0YW1iw6ltIGNvbmhlY2lkb3MgY29tbyBhbW9zdHJhcyBhbGVhdMOzcmlhcyksIHZhbW9zIHZvbHRhciBhbyBleGVtcGxvIGRlIGxhbsOnYXIgdW0gZGFkby4gCgpQb3LDqW0sIHN1cG9uaGEgcXVlIGVzdGFtb3MgbGFuw6dhbmRvICRuJCBkYWRvcyBuw6NvIHZpY2lhZG9zLiBJc3RvIHNpZ25pZmljYSBxdWUgZXN0YW1vcyBpbnRlcmVzc2Fkb3Mgbm8gcmVzdWx0YWRvIGRhIHZhcmnDoXZlbCBhbGVhdMOzcmlhICRZX2kkLCAkaT0xLC4uLixuJCBxdWUgcmVwcmVzZW50YXLDoSBvcyByZXN1bHRhZG9zIHBhcmEgY2FkYSB1bSBkb3MgJG4kIGRhZG9zLiAKClVtYSB2ZXogcXVlIG9zIHJlc3VsdGFkb3Mgc8OjbyBzZWxlY2lvbmFkb3MgYWxlYXRvcmlhbWVudGUsIGVsZXMgc8OjbyB2YXJpw6F2ZWlzIGFsZWF0w7NyaWFzIHBvciBzaSBzw7MgZSBzdWFzIHJlYWxpemHDp8O1ZXMgc2Vyw6NvIGRpZmVyZW50ZXMgZW0gY2FkYSB2ZXogcXVlIGxhbsOnYXJtb3Mgb3MgJG4kIGRhZG9zLiBBbMOpbSBkaXNzbywgY2FkYSBvYnNlcnZhw6fDo28gw6kgcmV0aXJhZGEgYWxlYXTDs3JpYW1lbnRlIGRhIG1lc21hIHBvcHVsYcOnw6NvIChvcyBuw7ptZXJvcyBkZSAkMSQgYSAkNiQpIGNvbSBhIG1lc21hIGRpc3RyaWJ1acOnw6NvIGRlIHByb2JhYmlsaWRhZGVzLiBBc3NpbSwgJFlfMSQsICRZXzIkLCAuLi4sICRZX24kIHPDo28gaWRlbnRpY2FtZW50ZSBkaXN0cmlidcOtZG9zLiAKCkFpbmRhLCBzYWJlbW9zIHF1ZSBvcyB2YWxvcmVzIGRlIGNhZGEgJFlfaSQgbsOjbyBmb3JuZWNlIHF1YWxxdWVyIGluZm9ybWHDp8OjbyBzb2JyZSBvcyByZXN1bHRhZG9zIGRvcyBvdXRyb3MgZGFkb3MuIEVtIG5vc3NvIGV4ZW1wbG8sIGVuY29udHJhciAkNiQgY29tbyBhIHByaW1laXJhIG9ic2VydmHDp8OjbyBlbSBub3NzYSBhbW9zdHJhIG7Do28gYWx0ZXJhIGEgZGlzdHJpYnVpw6fDo28gZGUgJFlfMiQsIC4uLiwgJFlfbiQuIElzdG8gc2lnbmlmaWNhIHF1ZSB0b2RvcyAkWV9pJCBzw6NvIHRhYm3DqW0gaW5kZXBlbmRlbWVudGUgZGlzdHJpYnXDrWRvcy4gQXNzaW0sICRZXzEkLCAuLi4sICRZX24kIHPDo28gaW5kZXBlbmRlbnRlIGUgaWRlbnRpY2FtZW50ZSBkaXN0cmlidcOtZG9zIChpaWQpCgoKIyMjIyAqKlJFRkVSw4pOQ0lBUyoqCg==