Este material tem como objetivo introduzir os conceitos sobre
Cointegração e Vetor de Correção de Erros (VEC). Vamos
entender como avaliar se uma série temporal multivariada é cointegrada e
como usar o modelo VEC.
INTRODUÇÃO
Um dos objetivos da Econometria é avaliar empiricamente teorias
econômicas que, em geral, pressupõem relações de equilíbrio de longo
prazo entre variáveis. Esta averiguação pode ser feita com base em
modelagem de séries temporais que, via de regra, apresentam algum tipo
de tendência.
Neste sentido, fazer uso de modelos de regressão que envolvem dados
de séries temporais apresentando tendência pode gerar resultados
inconsistentes. Isso acontece porque as técnicas tradicionais de
regressão, tal como Mínimos Quadrados Ordinários (MQO),
precisam que as variáveis sejam estacionárias, ou seja, que a média
condicional e a variância condicional não oscilem com o tempo.
Como alternativa, surge o Modelo de Correção de Erros
(MCE) que utiliza a análise de cointegração para a estimação de
modelos quando as variáveis não apresentam estacionariedade. A idéia
intuitiva de cointegração é que variáveis não
estacionárias podem caminhar juntas, isto é, podem ter trajetórias
temporais interligadas, de forma que no longo prazo apresentem relação
de equilíbrio.
Para o caso multivariado, estudamos como o Modelo Vetorial
Autorregressivo (VAR), opcionalmente estimado por MQO, pode ser
usado para modelagem de séries temporais multivariadas. Porém, temos a
possibilidade dos componentes da série temporal multivariada serem
cointegrados e neste caso o VAR não deveria ser usado e sim o
Modelo Vetorial de Correção de Erros (VEC) que é a
versão vetorial do MCE.
Resumidamente, no decorrer deste documento entenderemos o que é
cointegração, sua relação com
estacionariedade e como estes conceitos conduzirão a
análise de uma série temporal multivariada da seguinte maneira:
- Se todos os componentes da série são estacionários,
o modelo VAR em nível se aplica sem problemas;
- Se temos componentes não estacionários, contamos
com duas alternativas:
- Se eles são não estacionários e não cointegrados,
deve-se ajustar o VAR em primeiras diferenças
- Se eles são não estacionários, mas cointegrados,
deve-se ajustar o Vetor de Correção de Erros (VEC)
COINTEGRAÇÃO E REGRESSÃO ESPÚRIA
Como sabemos, muitas séries temporais econômicas são
estacionárias em primeira diferença. Processos
estacionários em primeira diferença são também conhecidos como
processos integrados de ordem 1 ou processos \(I(1)\). Em geral, um processo cuja \(d\)-ésima diferença é estacionária é um
processo integrado de ordem \(d\), ou
\(I(d)\).
Um exemplo clássico de processo estacionário em primeira diferença é
o passeio aleatório. Ele é uma variável qualquer (aqui,
\(p_t\)) que pode ser escrita como:
\[
p_t=p_{t-1}+a_{t}
\] onde \(a_t\) é
independentemente e identicamente distribuído (iid) com média zero e
variância constante. Embora \(E\left[p_t\right]=0\) para todo \(t\), sua variância \(Var(p_t)=T\sigma^{2}\) não é invariante no
tempo. Assim, \(p_t\) não é
estacionário e em função de \(\Delta p_t=p_t -
p_{t-1} = a_t\) e \(a_t\), por
definição, ser estacionário, a primeira diferença de \(p_t\) será estacionária.
Agora, suponha que queremos estimar o seguinte modelo de regressão
linear simples:
\[
y_t = \alpha + \beta x_t + a_t
\] onde \(E[a_t]=0\), \(Var(a_t)=\sigma^{2}\) e \(E\left[a_t, a_{t-l}\right]=0\) para todo
\(l >0\). Se \(y_t\) e \(x_t\) são originadas por passeios
aleatórios independentes (que por definição não são estacionários), não
existe relação entre \(y_t\) e \(x_t\) e os parâmetros estimados por MQO
para o modelo de regressão linear simples produzirá uma estimativa para
\(\beta\) inconsitente. Este caso é
conhecido na literatura como regressão espúria.
Uma alternativa para o problema de regressão espúria
seria estimar o seguinte modelo:
\[
\begin{aligned}
&&& y_t - y_{t-1} = \alpha - \alpha + \beta x_t - \beta
x_{t-1} + a_t - a_{t-1}\\
\\
&&& \Delta y_t = \beta \Delta x_t + \varepsilon_t \\
\end{aligned}
\] dado que \(\Delta y_t\) e
\(\Delta x_t\) serão estacionários.
Porém, isso pode esconder as propriedades de longo prazo da relação
entre as duas variáveis.
Pelo gráfico podemos observar que há uma aparecente relação entre as
duas variáveis. Sem fazer qualquer tipo de teste para avaliar a
estacionariedade delas, uma pessoa poderia estimar um modelo de
regressão linear simples e fazer inferência com os resultados ou até
mesmo previsões para \(y\). Como já
sabemos que ambas as variáveis foram geradas por um passeio aleatório e
que este, por definição, não é estacionário, entendemos que os
resultados não têm qualquer utilidade. Abaixo, resultado desta
regressão.
Como esperado, o resultado mostra que os parâmetros estimados são
altamente significativos e há autocorrelação nos resíduos como apresenta
o gráfico da Função de Autocorrelação (FAC) abaixo. Este resultado
indica regressão espúria, caracterizada por relação
forte entre as variáveis, devido a tendência estocástica comum às duas
séries (fruto do passeio aleatório neste caso) e erro não estacionário
(gráfico dos resíduos do modelo estimado).
MODELO DE CORREÇÃO DE ERROS
Phillips and Durlauf (1986)
demonstraram que é possível trabalhar com o nível das séries sem correr
o risco de regressões espúrias desde que as séries utilizadas sejam
cointegradas de uma particular ordem.
Para o nosso exemplo, quando \(\hat{a}_t =
y_t - \hat{\alpha} - \hat{\beta} x_t\) é \(I(0)\), dizemos que \(y_t\) e \(x_t\) são cointegradas, pois cada variável
é \(I(1)\) mas a combinação linear
delas, \(\hat{a}_t\), é \(I(0)\). Como consequência, assumimos que
\(y_t\) e \(x_t\) têm trajetórias temporais
interligadas de forma que no longo prazo apresentem relação de
equilíbrio. Entretanto, no curto prazo há desvios dessa relação de
equilíbrio de modo que \(a_t\) é
chamado de erro de equilíbrio, porque expressa os
desvios temporais de equilibrio de longo prazo.
O Modelo de Correção de Erros (MCE) corrige esses
desequilíbrios e nos mostra a taxa à qual o sistema retorna ao
equilíbrio após os desvios. Para entender como ele faz isso suponha que
duas variáveis \(y\) e \(x\) são \(I(1)\), mas cointegradas e que queremos
estimar o seguinte modelo:
\[
y_t = \beta_0 + \beta_{1}y_{t-1} + \beta_{2}x_t + \beta_{3}x_{t-1} +
\varepsilon_{t}
\] Tal modelo é conhecido como Modelo Autorregressivo com
Defasagens Distribuídas (do inglês, ADL - Autoregressive
Distributed Lag). Repare que temos uma combinação entre valores
defasados das duas variáveis, além da própria variável \(x_t\), e que este modelo é semelhante às equações
estimadas no VAR.
Podemos reescrever o modelo como:
\[
\begin{aligned}
& y_t - y_{t-1} = \beta_0 + \beta_1y_{t-1} - y_{t-1} + \beta_2x_t +
\beta_3x_{t-1} + \varepsilon_t \\
& \Delta y_t = \beta_0 - (1-\beta_1)y_{t-1} + \beta_2x_t +
\beta_3x_{t-1} + \varepsilon_t \\
& \Delta y_t = \beta_0 - (1-\beta_1)y_{t-1} + \beta_2x_t +
\beta_3x_{t-1} + \beta_2x_{t-1} - \beta_2x_{t-1} + \varepsilon_t \\
& \Delta y_t = \beta_0 - (1-\beta_1)y_{t-1} + \beta_2 \Delta x_t +
\beta_3x_{t-1} + \beta_2x_{t-1} + \varepsilon_t \\
& \Delta y_t = \beta_0 - (1-\beta_1)y_{t-1} + \beta_2 \Delta x_t +
(\beta_3 + \beta_2)x_{t-1} + \varepsilon_t \\
& \Delta y_t = \gamma \Delta x_t -\lambda(y_{t-1} -\alpha - \beta
x_{t-1}) + \varepsilon_t \\
\end{aligned}
\] onde \(\gamma = \beta_2\),
\(\lambda = 1 -\beta_1\), \(\alpha=\frac{\beta_0}{1-\beta_1}\), \(\beta = \frac{\beta_3+\beta_2}{1-\beta_1}\)
e \(y_{t-1} -\alpha - \beta x_{t-1} =
a_{t-1}\) que é estimado por \(y_{t} =
\alpha + \beta x_{t} + a_t\). Observe que o coeficiente
do erro de correção é negativo por construção significando que
a correção do erro é feita em cada período. Para facilitar o
entendimento, suponha que \(y_t =
venda_t\) e que \(x_t=preco_t\).
Assim, o Modelo de Correção de Erros (MCE) se torna:
\[
\begin{aligned}
& \Delta venda_t = \gamma \Delta preco_t -\lambda(venda_{t-1}
-\alpha - \beta preco_{t-1}) + \varepsilon_t \\
& \Delta venda_t = \gamma \Delta preco_t -\lambda(a_{t-1}) +
\varepsilon_t \\
\end{aligned}
\] que deixa claro que a variação nas vendas é explicada por dois
componentes: um termo de curto prazo e outro de longo
prazo. As variações nos preços, \(\Delta preco_t\), representam o termo de
curto prazo e \(a_{t-1}\) é o
componente de longo prazo, pois pode ser entendido como o termo de erro
da regressão \(venda_{t} = \alpha + \beta
preco_{t} + a_t\) que nada mais é que uma combinação linear
estacionária entre as duas variáveis.
A estimação do Modelo de Correção de Erros pode ser feita da seguinte
maneira:
- Estimar a relação entre \(y_t\) e
\(x_t\) por meio de \(y_t = \alpha + \beta x_{t} + a_t\).
- Obter \(\hat{a}_t\) que são os
resíduos de cointegração.
- Estimar \(\Delta y_t = \gamma \Delta x_t
+\lambda\hat{a}_{t-1}+ \varepsilon_t\) e obter a estimativa para
os termos de curto (\(\gamma\)) e longo
prazo (\(\lambda\)).
VETORES DE COINTEGRAÇÃO
O vetor de cointegração é formado pelos coeficientes da relação de
cointegração (estacionária) que assegura o equilíbrio de longo prazo
entre as séries. Suponto \(\boldsymbol{r}_{t}\) uma série temporal
multivariada, os \(k\) elementos do
vetor \(\boldsymbol{r}_{t} =
\left(r_{1t},...,r_{kt}\right)^{'}\) são ditos cointegrados
de ordem \((d,b)\) se:
- Todos os elementos de \(\boldsymbol{r}_{t}\) são integrados de
ordem \(d\), ou seja, são \(I(d)\);
- Existe um vetor não nulo \(\boldsymbol{\beta}\), tal que \(\boldsymbol{a}_{t} =
\boldsymbol{\beta}^{'}\boldsymbol{r}_{t}\) é \(I(d-b)\), \(b>0\). A diferença \(d-b\) é a ordem de integração obtida da
aplicação do vetor \(\boldsymbol{\beta}\) em \(\boldsymbol{r}_{t}\). Se as variáveis são
cointegradas, o resíduo \(\boldsymbol{a}_{t}\) tem ordem de
integração menor que a ordem das variáveis que o originaram.
O número de vetores de cointegração depende do número de variáveis
envolvidas. Tem-se:
- Caso de duas variáveis: Se \(\boldsymbol{r}_{t} = \left(y_t,
r_t\right)^{'}\) com \(y_t \sim
I(1)\), \(x_t \sim I(1)\) e
\(a_t = y_t - \beta x_t \sim I(0)\),
então dizemos que \(y_t\) e \(x_t\) \(\sim
CI(1,1)\), ou seja, são cointegradas na ordem \((1,1)\) com vetor de cointegração \(\boldsymbol{\beta} =
\left(1,-\hat{\beta}\right)^{'}\) e o sistema é cointegrado
dado que \(\boldsymbol{\beta}^{'}
\boldsymbol{r}_{t} \sim I(0)\). Neste caso, existe somente
uma combinação linear estacionária que representa
uma relação de equilíbrio de longo prazo entre as
variáveis que é representada por:
\[
\boldsymbol{a}_{t} = \boldsymbol{\beta}^{'} \boldsymbol{r}_{t} =
\begin{bmatrix} 1 & -\hat{\beta} \end{bmatrix} \begin{bmatrix} y_t
\\ x_t \end{bmatrix} = y_t -\hat{\beta} x_t
\]
- Caso de \(k\) variáveis: Se \(\boldsymbol{r}_{t} = \left(y_{1t}, x_{1t}, x_{2t},
..., x_{kt}\right)^{'}\) com \(y_t
\sim I(1)\), \(x_{1t} \sim
I(1)\), \(x_{2t} \sim I(1)\),
\(x_{3t} \sim I(1)\), …, \(x_{kt} \sim I(1)\) e \(a_t = y_t - \beta_1x_{1t} - \beta_2x_{2t}, ..., -
\beta_kx_{kt} \sim I(0)\), então dizemos que \(y_t\), \(x_{1t}\), …, \(x_{kt}\) \(\sim
CI(1,1)\), ou seja, são cointegradas na ordem \((1,1)\) com vetor de cointegração \(\boldsymbol{\beta} = \left[1, -\hat{\beta}_1,
-\hat{\beta}_2,...,-\hat{\beta}_k\right]^{'}\) e o sistema é
cointegrado dado que \(\boldsymbol{\beta}^{'} \boldsymbol{r}_{t} \sim
I(0)\). Neste caso, pode existir até \(k-1\) vetores de cointegração linearmente
independentes. Ou seja, podem existir de \(1\) até \(k-1\) vetores de cointegração que
representam relações de equilíbrio de longo prazo entre as
variáveis.
O rank de cointegração (\(r\)) é o
número de vetores de cointegração linearmente independentes. Para \(k\) variáveis de mesma ordem de integração
e cointegradas, tem-se que \(1\leq r \leq
k-1\). O rank de cointegração é o número de relações de
cointegração importantes para manter o equilíbrio de longo prazo entre
as variáveis.
TESTES DE COINTEGRAÇÃO
Para testar a existência de cointegração entre variáveis, podemos
usar testes de uma equação que se baseiam no
ajustamento da relação entre as variáveis e testes com várias
equações onde ajustamos um modelo VAR com as variáveis a serem
testadas. Em ambos os casos podemos considerar 2 ou mais variáveis.
Para este caso, o teste comumente usado é o de
Engle-Granger que consiste em ajustar uma relação entre
as variáveis e realizar o teste de raiz unitária de Dickey-Fuller
Aumentado (ADF) nos resíduos da equação ajustada. Para o caso de 2
variáveis (\(y\) e \(x\), por exemplo) temos o seguinte
processo:
- Executar o teste de raiz unitária para \(y\) e \(x\) e certificar que elas são \(I(1)\). Se elas forem \(I(0)\) não há razão para testar
cointegração.
- Estimar a relação \(y_t = \alpha + \beta
x_t + a_t\) e obter \(\hat{a}_t\)
- Testar se os resíduos são estacionários, ou seja, se são \(I(0)\) usando o teste de Dickey-Fuller
Aumentado (a equação do teste não deve ter intercepto
nem tendência porque os resíduos de MQO oscilam em torno de zero),
conforme abaixo:
\[
\begin{aligned}
& \Delta \hat{a}_t =
\phi\hat{a}_{t-1}+\sum_{i=1}^{p-1}{\lambda_{i}\Delta
\hat{a}_{t-i}}+\xi_t \\
& \\
& H_0: \phi=0~\rightarrow \hat{a}_t~\text{não
estacionário}~\rightarrow y~\text{e}~x~\text{não são cointegradas} \\
& H_1: \phi<0~\rightarrow
\hat{a}_t~\text{estacionário}~\rightarrow y~\text{e}~x~\text{são
cointegradas} \\
\end{aligned}
\]
- TESTE COM VÁRIAS EQUAÇÕES
Suponha \(k\) variáveis \(I(1)\) e que a teoria ou qualquer
conhecimento a priori, sugere uma relação de equilíbrio de
longo prazo entre elas. Em geral, existem \(r\leq k-1\) combinações lineares
independentes \(I(0)\) que são chamadas
relações de cointegração e o problema é determinar o valor de \(r\). O teste mais usado para este fim é o
teste de Johansen que tem como base o modelo VAR.
Considere um \(VAR(p)\) com \(k\) variáveis
\[
Y_t = A_1Y_{t-1}+A_2Y_{t-2}+...+A_pY_{t-p}+\epsilon_t
\] À semelhança do teste de Dickey-Fuller Aumentado (ADF), o
teste de Johansen se baseia em um modelo transformado, denominado de VAR
reparametrizado, que permite um processo autorregressivo de ordem \(p\) e não somente de ordem \(1\). A obtenção deste modelo segue
procedimento semelhante à derivação da equação de teste do Dickey-Fuller
Aumentado (ADF). Partindo-se do VAR anterior obtém-se o VAR
reparametrizado representado por:
\[
\begin{aligned}
& \Delta Y_t = \Pi Y_{t-1} + \sum_{i=1}^{p-1}{\Gamma_i\Delta
Y_{t-i}} +\epsilon_t \\
\end{aligned}
\] em que \(\Gamma_i =
-\sum_{j=i+1}^{p}{A_j}\) e \(\Pi=\sum_{i=1}^{p}{A_i-I}=\left(I_k
-\sum_{i=1}^{p}{A_i}\right)\). Perceba a semelhança entre o teste
de Johansen e o teste de raiz unitária Dickey-Fuller Aumentado (ADF).
Inicialmente, o termo \(\Pi Y_{t-1}\)
representa \(k\) combinações lineares
das variáveis, isto é:
\[
\begin{aligned}
\Pi Y_{t-1} & = \begin{bmatrix}
\pi_{11} & \pi_{12} & ... & \pi_{1k} \\
\pi_{21} & \pi_{22} & ... & \pi_{2k} \\
\vdots & \vdots & & \vdots \\
\pi_{k1} & \pi_{k2} & ... & \pi_{kk} \\
\end{bmatrix}
\begin{bmatrix}
Y_{1,t-1} \\
Y_{2,t-1} \\
\vdots \\
Y_{k,t-1} \\ \end{bmatrix} \\
&&& \\
& = \left\{\begin{matrix}
\pi_{11}Y_{1,t-1}+\pi_{12}Y_{2,t-1}+ ... + \pi_{1k}Y_{k,t-1} \\
... \\
... \\
\pi_{k1}Y_{1,t-1}+\pi_{k2}Y_{2,t-1}+ ... + \pi_{kk}Y_{k,t-1}
\end{matrix}\right.
\end{aligned}
\]
que são \(k\) combinações lineares.
Por definição, todos os termos da equação são estacionários, exceto
\(\Pi Y_{t-1}\). Para o sistema ser
estacionário, \(\Pi Y_{t-1}\) deve ser
estacionário e para isso a matriz \(\Pi\) deve apresentar estrural tal que as
combinações lineares sejam estacionárias. Para as variáveis serem
cointegradas as linhas de \(\Pi\) não
podem ser todas linearmente independentes. Assim, \(\Pi\) deve ser singular, ou seja \(det(\Pi)=0\) e, então, o posto ou rank de
\(\Pi\) deve ser menor que \(k\) para que as variáveis sejam
cointegradas.
Resumindo, temos \(3\)
possibilidades para o teste de Johansen:
- \(Posto(\Pi)=0\)
- Significa que \(\Pi=0\) que é a
analogia ao caso onde \(\phi=0\) no
teste ADF e assim, temos \(k\) raízes
unitárias
- Não há relação de cointegração entre as variáveis e não existe
mecanismo de correção de erro
- Decisão: O modelo VAR deve ser especificado em
primeiras diferenças
- \(Posto(\Pi)=k\)
- As linhas de \(\Pi\) são
linearmnete independentes e o \(\left|\Pi
\right| \neq 0\)
- Existem \(k\) combinações
estacionárias das variáveis, mas cointegração não é pertinente dado que
as variáveis são estacionárias
- Decisão: O modelo VAR deve ser estimado em
nível
- \(0\leq Posto(\Pi)=r \leq k\)
- Existem \(r\) combinações lineares
estacionárias e o \(\left| \Pi \right| =
0\) com pelo menos uma linha ou coluna nula
- Se as variáveis são \(I(1)\),
existem \(r\) relações de cointegração
que fornecem \(r\) vetores de
cointegração e o termo \(\Pi Y_{t-1}\)
fornecem as combinações lineares estacionárias
- Decisão: O modelo VEC deve ser utilizado
- TESTE DO TRAÇO E TESTE DE RAIZ CARACTERÍSTICA
MÁXIMA
O procedimento de Johansen consiste em testar o número de raízes
características diferentes de zero na matriz \(\Pi\) que corresponde ao número de relações
e vetores de cointegração entre as variáveis. São utilizados dois
testes: Teste do Traço e Teste da Raiz Característica Máxima.
- Teste do Traço
Este teste considera como hipótese nula a existência de \(r_0\) raízes características diferentes de
zero (\(r_0\) vetores de cointegração)
contra a alternativa de \(r>r_0\).
Formalmente,
\[
\begin{aligned}
& H_0: r=r_0 \\
& H_1: r>r_0 \\
\end{aligned}
\] A estatística de teste é dada por:
\[
\lambda_{traço} = -T \sum_{i=r_0+1}^{k}{\ln(1-\hat{\lambda}_i)}
\] em que T é o número de observações e \(\hat{\lambda}_i\) são as raízes
características obtidas da matriz \(\Pi\) estimada.
- Teste da Raiz Característica Máxima
O segundo teste tem como hipótese nula a existência de \(r_0\) raízes características diferentes de
zero (\(r_0\) vetores de cointegração)
contra a alternativa de \(r=r_0 +1\).
Formalmente,
\[
\begin{aligned}
& H_0: r=r_0 \\
& H_1: r=r_0 +1\\
\end{aligned}
\] e a estatística de teste é:
\[
\lambda_{max} = -T \ln(1-\hat{\lambda}_{r_0+1})
\] Os testes são realizados em sequência, de forma crescente, até
que a hipótese nula não seja rejeitada. Para \(H_0: r=0\), rejeitar \(H_0\) significa que há um ou mais vetores
de cointegração, pelo teste do traço, e um pelo teste da raiz máxima.
Para \(H_0: r=1\), rejeitar \(H_0\) significa que há dois ou mais vetores
de cointegração, pelo teste do traço, e mais um pelo teste da raiz
máxima.
MODELO VETORIAL DE CORREÇÃO DE ERROS (VEC)
Se o posto de \(\Pi=r<k\),
pode-se mostrar que existem matrizes \(\alpha_{k\times r}\) e \(\beta_{k\times r}\) tais que \(\Pi_{k\times k}=\alpha_{k\times
r}\beta^{'}_{r\times k}\) tais que:
\[
\Pi_{k\times k} = \alpha_{k \times r} \beta^{'}_{r \times k}
\] Substituindo na equação do VAR reparametrizado, obtém-se:
\[
\begin{aligned}
& \Delta Y_t = \alpha \beta^{'} Y_{t-1} +
\sum_{i=1}^{p-1}{\Gamma_i\Delta Y_{t-i}} +\epsilon_t \\
\end{aligned}
\] que é o modelo de correção de erro na forma multivariada
denominado Modelo de Correção de Erro Vetorial (VEC). O VEC é um VAR
(reparametrizado) com as restrições de cointegração entre as variáveis.
Tem-se que:
- \(\beta^{'}Y_{t-1}\): são as
\(r\) relações de cointegração que
definem a trajetória de longo prazo (equilíbrio) entre as
variáveis.
- \(\alpha\): matriz de coeficientes
de ajustamento para o equilíbrio de longo prazo
- \(\Gamma_i\): matrizes de
coeficientes que definem a dinâmica de curto prazo
Como ilustração, considere um exemplo com \(k=3\) variáveis e matriz \(\Pi\) dada por:
\[
\Pi = \begin{bmatrix}
-\frac{1}{2} & -\frac{5}{16} & -\frac{1}{16} \\
\frac{1}{8} & -\frac{41}{64} & \frac{5}{32} \\
\frac{1}{4} & -\frac{11}{32} & -\frac{3}{32}
\end{bmatrix}
\]
com raízes características \(\lambda_{1}=0\), \(\lambda_{2}=-0,4416\) e \(\lambda_{3}=-0,7928\). Assim, com duas
raízes características diferentes de zero (posto de \(\Pi=2\)) e existem 2 relações de
cointegração. Pode-se mostrar que
\[
\Pi = \begin{bmatrix}
-\frac{1}{2} & -\frac{5}{16} & -\frac{1}{16} \\
\frac{1}{8} & -\frac{41}{64} & \frac{5}{32} \\
\frac{1}{4} & -\frac{11}{32} & -\frac{3}{32}
\end{bmatrix} = \begin{bmatrix}
-\frac{1}{2} & \frac{1}{4} \\
\frac{1}{8} & -\frac{5}{8} \\
\frac{1}{4} & \frac{3}{8}
\end{bmatrix} \begin{bmatrix}
1 & -\frac{1}{8} & 0 \\
0 & 1 & -\frac{1}{4}
\end{bmatrix}
\] O modelo VEC, desconsiderando os termos de diferença defasados
(\({\Gamma_i\Delta Y_{t-i}}\)),
será:
\[
\begin{aligned}
\begin{bmatrix}
\Delta Y_{1t} \\
\Delta Y_{2t} \\
\Delta Y_{3t}
\end{bmatrix} &&& = \begin{bmatrix}
-\frac{1}{2} & \frac{1}{4} \\
\frac{1}{8} & -\frac{5}{8} \\
\frac{1}{4} & \frac{3}{8}
\end{bmatrix} \begin{bmatrix}
1 & -\frac{1}{8} & 0 \\
0 & 1 & -\frac{1}{4}
\end{bmatrix} \begin{bmatrix}
Y_{1t-1} \\
Y_{2t-1} \\
Y_{3t-1}
\end{bmatrix} \\
&& \\
&&& = \begin{bmatrix}
-\frac{1}{2} & \frac{1}{4} \\
\frac{1}{8} & -\frac{5}{8} \\
\frac{1}{4} & \frac{3}{8}
\end{bmatrix}\begin{bmatrix}
Y_{1t-1}-\frac{1}{8}Y_{2t-1}+0Y_{3t-1}\\
0Y_{1t-1}+Y_{2t-1}-\frac{1}{4}Y_{3t-1}
\end{bmatrix} \\
&&& \\
&&& = \left\{\begin{matrix}
\Delta Y_{1t} = -\frac{1}{2} \left(Y_{1t-1}-\frac{1}{8}Y_{2t-1}\right)
+\frac{1}{4} \left(Y_{2t-1}-\frac{1}{4}Y_{3t-1}\right) \\
\Delta Y_{2t} = \frac{1}{8} \left(Y_{1t-1}-\frac{1}{8}Y_{2t-1}\right)
-\frac{5}{8} \left(Y_{2t-1}-\frac{1}{4}Y_{3t-1}\right) \\
\Delta Y_{3t} = \frac{1}{4} \left(Y_{1t-1}-\frac{1}{8}Y_{2t-1}\right)
+\frac{3}{8} \left(Y_{2t-1}-\frac{1}{4}Y_{3t-1}\right)
\end{matrix}\right. \\
\end{aligned}
\]
As expressões \(Y_{1t-1}-\frac{1}{8}Y_{2t-1}\) e \(Y_{2t-1}-\frac{1}{4}Y_{3t-1}\) são as
relações de cointegração que entram em cada equação. A maneira mais
simples de estimar um modelo VEC é o procedimento em dois estágios.
Primeiro, estimamos a relação de cointegração e criamos a série de
defasagens dos resíduos. Após isso, estimamos a equação do modelo por
meio de Mínimos Quadrados Ordinários (MQO).
PROCESSO DE ESTIMAÇÃO
Abaixo, os passos para estimação e avaliação dos modelos VAR, SVAR e
VEC. Perceba que dependendo das decisões nas etapas, seguimos com a
estimação do modelo VEC.
- Visualizar os dados e identificar observações fora do padrão
(outliers, sazonalidade, tendência)
- Se necessário, transformar os dados para estabilizar a variância
(logaritmo ou retirar sazonalidade, por exemplo)
- Avaliar a função de correlação cruzada para confirmar a
possibilidade de modelagem multivariada.
- Testar se os dados são estacionários ou cointegrados:
- Caso não tenha raiz unitária (estacionários), estimar VAR com as
séries em nível
- Caso tenha raiz unitária, mas sem cointegração é preciso diferenciar
os dados até se tornarem estacionários e estimar VAR com as séries
diferenciadas
- Caso tenha raiz unitária, mas com cointegração devemos estimar o VEC
com as séries em nível
- Definir a ordem \(p\) para os dados
em análise por meio de critérios de informação (escolher modelo com
menor AIC, por exemplo)
- Estimar o modelo escolhido no passo 4
- Se VAR (forma reduzida):
- Verificar significância estatística do modelo estimado e, caso seja
necessário, eliminar parâmetros não significantes.
- Analisar a causalidade de Granger (variáveis que não granger causa
as demais podem ser retiradas do modelo)
- Se SVAR (forma estrutural):
- Definir a estrutura para as matrizes A e B e o modelo de interesse
(A, B ou AB)
- Verificar significância estatística do modelo estimado e, caso seja
necessário, eliminar parâmetros não significantes.
- Analisar a causalidade de Granger (variáveis que não granger causa
as demais podem ser retiradas do modelo)
- Se VEC (Modelo Vetorial de Correção de Erros)
- Usar a quantidade de vetores de cointegração obtidos no teste de
cointegração para estimar o modelo VEC
- Examinar se os resíduos se comportam como ruído branco e condições
de estacionariedade do modelo. Caso contrário, retornar ao passo 3 ou 4.
- Verificar a autocorrelação serial por meio da FAC e FACP dos
resíduos de cada equação do modelo estimado. O ideal é não ter
defasagens significativas.
- Verificar correlação cruzada por meio da FCC dos resíduos.
- Analisar a estabildiade do modelo estimado através dos autovalores
associados ao mesmo.
- Verificar a distribuição de probabilidade (Normal) para os resíduos
de cada equação do modelo.
- Analisar heterocedasticidade condicional (resíduos devem ser
homocedasticos, ou seja, variância condicional constante)
- Uma vez que os resíduos são ruído branco e o modelo é estável:
- Analisar funções de resposta ao impulso
- Analisar a importância das variáveis para explicar a variância do
erro de previsão de cada variável
- Fazer previsões paras as variáveis do modelo
REFERÊNCIAS
Granger, Clive WJ. 1969. “Investigating Causal Relations by
Econometric Models and Cross-Spectral Methods,” 424–38.
Lutkepohl, Helmut. 2005. New Introduction to Multiple Time Series
Analysis. Springer Science & Business Media.
Phillips, Peter CB, and Steven N Durlauf. 1986. “Multiple Time
Series Regression with Integrated Processes” 53: 473–95.
Sims, Christopher A. 1980. “Macroeconomics and Reality,”
1–48.
Tiao, George C, and George EP Box. 1981. “Modeling Multiple Time
Series with Applications” 76: 802–16.
Tsay, Ruey S. 2010. Analysis of Financial Time Series. John
Wiley & Sons.
———. 2013. Multivariate Time Series Analysis with R and Financial
Application. John Wiley & Sons.
———. 2014. An Introduction to Analysis of Financial Data with
R. John Wiley & Sons.
LS0tCnRpdGxlOiA8Y2VudGVyPiA8aDI+IDxiPiBDb2ludGVncmHDp8OjbyBlIFZldG9yIGRlIENvcnJlw6fDo28gZGUgRXJyb3MgKFZFQykgPC9iPiA8L2gyPgogIDwvY2VudGVyPgphdXRob3I6ICI8Y2VudGVyPiBGcmFuayBNYWdhbGjDo2VzIGRlIFBpbmhvIC0gSUJNRUMvTUcgPC9jZW50ZXI+IgpncmFwaGljczogeWVzCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgdGhlbWU6IGNlcnVsZWFuCiAgICBmaWdfY2FwdGlvbjogeWVzCiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0CiAgaHRtbF9kb2N1bWVudDoKICAgIGRmX3ByaW50OiBwYWdlZApsaW5rY29sb3I6IGJsdWUKcmVmZXJlbmNlczoKLSBpZDogdHNheTIwMTRpbnRyb2R1Y3Rpb24KICB0aXRsZTogQW4gaW50cm9kdWN0aW9uIHRvIGFuYWx5c2lzIG9mIGZpbmFuY2lhbCBkYXRhIHdpdGggUgogIGF1dGhvcjoKICAtIGZhbWlseTogVHNheQogICAgZ2l2ZW46IFJ1ZXkgUwogIHB1Ymxpc2hlcjogSm9obiBXaWxleSBcJiBTb25zCiAgdHlwZTogYm9vawogIGlzc3VlZDoKICAgIHllYXI6IDIwMTQKLSBpZDogdHNheTIwMTBhbmFseXNpcwogIHRpdGxlOiBBbmFseXNpcyBvZiBmaW5hbmNpYWwgdGltZSBzZXJpZXMKICBhdXRob3I6CiAgLSBmYW1pbHk6IFRzYXkKICAgIGdpdmVuOiBSdWV5IFMKICBwdWJsaXNoZXI6IEpvaG4gV2lsZXkgXCYgU29ucwogIHR5cGU6IGJvb2sKICBpc3N1ZWQ6CiAgICB5ZWFyOiAyMDEwCi0gaWQ6IHRzYXkyMDEzbXVsdGl2YXJpYXRlCiAgdGl0bGU6IE11bHRpdmFyaWF0ZSB0aW1lIHNlcmllcyBhbmFseXNpcyB3aXRoIFIgYW5kIGZpbmFuY2lhbCBhcHBsaWNhdGlvbgogIGF1dGhvcjoKICAtIGZhbWlseTogVHNheQogICAgZ2l2ZW46IFJ1ZXkgUwogIHB1Ymxpc2hlcjogSm9obiBXaWxleSBcJiBTb25zCiAgdHlwZTogYm9vawogIGlzc3VlZDoKICAgIHllYXI6IDIwMTMKLSBpZDogdGlhbzE5ODFtb2RlbGluZwogIHRpdGxlOiBNb2RlbGluZyBtdWx0aXBsZSB0aW1lIHNlcmllcyB3aXRoIGFwcGxpY2F0aW9ucwogIGF1dGhvcjoKICAtIGZhbWlseTogVGlhbwogICAgZ2l2ZW46IEdlb3JnZSBDCiAgLSBmYW1pbHk6IEJveAogICAgZ2l2ZW46IEdlb3JnZSBFUAogIHB1Ymxpc2hlcjogSm91cm5hbCBvZiB0aGUgQW1lcmljYW4gU3RhdGlzdGljYWwgQXNzb2NpYXRpb24KICB0eXBlOiBhcnRpY2xlLWpvdXJuYWwKICB2b2x1bWU6IDc2CiAgcGFnZTogODAyLTgxNgogIGlzc3VlZDoKICAgIHllYXI6IDE5ODEKLSBpZDogZ3JhbmdlcjE5NjlpbnZlc3RpZ2F0aW5nCiAgdGl0bGU6IEludmVzdGlnYXRpbmcgY2F1c2FsIHJlbGF0aW9ucyBieSBlY29ub21ldHJpYyBtb2RlbHMgYW5kIGNyb3NzLXNwZWN0cmFsIG1ldGhvZHMKICBhdXRob3I6CiAgLSBmYW1pbHk6IEdyYW5nZXIKICAgIGdpdmVuOiBDbGl2ZSBXSgogIHB1Ymxpc2hlcjogRWNvbm9tZXRyaWNhIEpvdXJuYWwgb2YgdGhlIEVjb25vbWV0cmljIFNvY2lldHkKICB0eXBlOiBhcnRpY2xlLWpvdXJuYWwKICBwYWdlOiA0MjQtNDM4CiAgaXNzdWVkOgogICAgeWVhcjogMTk2OQotIGlkOiBzaW1zMTk4MG1hY3JvZWNvbm9taWNzCiAgdGl0bGU6IE1hY3JvZWNvbm9taWNzIGFuZCByZWFsaXR5CiAgYXV0aG9yOgogIC0gZmFtaWx5OiBTaW1zCiAgICBnaXZlbjogQ2hyaXN0b3BoZXIgQQogIHB1Ymxpc2hlcjogRWNvbm9tZXRyaWNhIEpvdXJuYWwgb2YgdGhlIEVjb25vbWV0cmljIFNvY2lldHkKICB0eXBlOiBhcnRpY2xlLWpvdXJuYWwKICBwYWdlOiAxLTQ4CiAgaXNzdWVkOgogICAgeWVhcjogMTk4MAotIGlkOiBsdXRrZXBvaGwyMDA1bmV3CiAgdGl0bGU6IE5ldyBpbnRyb2R1Y3Rpb24gdG8gbXVsdGlwbGUgdGltZSBzZXJpZXMgYW5hbHlzaXMKICBhdXRob3I6CiAgLSBmYW1pbHk6IEx1dGtlcG9obAogICAgZ2l2ZW46IEhlbG11dAogIHB1Ymxpc2hlcjogU3ByaW5nZXIgU2NpZW5jZSAmIEJ1c2luZXNzIE1lZGlhCiAgdHlwZTogYm9vawogIGlzc3VlZDoKICAgIHllYXI6IDIwMDUKLSBpZDogcGhpbGxpcHMxOTg2bXVsdGlwbGUKICB0aXRsZTogTXVsdGlwbGUgdGltZSBzZXJpZXMgcmVncmVzc2lvbiB3aXRoIGludGVncmF0ZWQgcHJvY2Vzc2VzCiAgYXV0aG9yOgogIC0gZmFtaWx5OiBQaGlsbGlwcwogICAgZ2l2ZW46IFBldGVyIENCCiAgLSBmYW1pbHk6IER1cmxhdWYKICAgIGdpdmVuOiBTdGV2ZW4gTgogIHB1Ymxpc2hlcjogVGhlIFJldmlldyBvZiBFY29ub21pYyBTdHVkaWVzCiAgdHlwZTogYXJ0aWNsZS1qb3VybmFsCiAgdm9sdW1lOiA1MwogIHBhZ2U6IDQ3My00OTUKICBpc3N1ZWQ6CiAgICB5ZWFyOiAxOTg2Cm5vY2l0ZTogfAogIEB0c2F5MjAxNGludHJvZHVjdGlvbiwgQHRzYXkyMDEwYW5hbHlzaXMsIEB0c2F5MjAxM211bHRpdmFyaWF0ZSwgQHRpYW8xOTgxbW9kZWxpbmcsIEBncmFuZ2VyMTk2OWludmVzdGlnYXRpbmcsIEBzaW1zMTk4MG1hY3JvZWNvbm9taWNzLCBAbHV0a2Vwb2hsMjAwNW5ldywgQHBoaWxsaXBzMTk4Nm11bHRpcGxlCi0tLQoKRXN0ZSBtYXRlcmlhbCB0ZW0gY29tbyBvYmpldGl2byBpbnRyb2R1emlyIG9zIGNvbmNlaXRvcyBzb2JyZSAqKkNvaW50ZWdyYcOnw6NvIGUgVmV0b3IgZGUgQ29ycmXDp8OjbyBkZSBFcnJvcyAoVkVDKSoqLiBWYW1vcyBlbnRlbmRlciBjb21vIGF2YWxpYXIgc2UgdW1hIHPDqXJpZSB0ZW1wb3JhbCBtdWx0aXZhcmlhZGEgw6kgY29pbnRlZ3JhZGEgZSBjb21vIHVzYXIgbyBtb2RlbG8gVkVDLgoKIyMjIyMgKipJTlRST0RVw4fDg08qKgoKVW0gZG9zIG9iamV0aXZvcyBkYSBFY29ub21ldHJpYSDDqSBhdmFsaWFyIGVtcGlyaWNhbWVudGUgdGVvcmlhcyBlY29uw7RtaWNhcyBxdWUsIGVtIGdlcmFsLCBwcmVzc3Vww7VlbSByZWxhw6fDtWVzIGRlIGVxdWlsw61icmlvIGRlIGxvbmdvIHByYXpvIGVudHJlIHZhcmnDoXZlaXMuIEVzdGEgYXZlcmlndWHDp8OjbyBwb2RlIHNlciBmZWl0YSBjb20gYmFzZSBlbSBtb2RlbGFnZW0gZGUgc8OpcmllcyB0ZW1wb3JhaXMgcXVlLCB2aWEgZGUgcmVncmEsIGFwcmVzZW50YW0gYWxndW0gdGlwbyBkZSB0ZW5kw6puY2lhLiAKCk5lc3RlIHNlbnRpZG8sIGZhemVyIHVzbyBkZSBtb2RlbG9zIGRlIHJlZ3Jlc3PDo28gcXVlIGVudm9sdmVtIGRhZG9zIGRlIHPDqXJpZXMgdGVtcG9yYWlzIGFwcmVzZW50YW5kbyB0ZW5kw6puY2lhIHBvZGUgZ2VyYXIgcmVzdWx0YWRvcyBpbmNvbnNpc3RlbnRlcy4gSXNzbyBhY29udGVjZSBwb3JxdWUgYXMgdMOpY25pY2FzIHRyYWRpY2lvbmFpcyBkZSByZWdyZXNzw6NvLCB0YWwgY29tbyAqKk3DrW5pbW9zIFF1YWRyYWRvcyBPcmRpbsOhcmlvcyAoTVFPKSoqLCBwcmVjaXNhbSBxdWUgYXMgdmFyacOhdmVpcyBzZWphbSBlc3RhY2lvbsOhcmlhcywgb3Ugc2VqYSwgcXVlIGEgbcOpZGlhIGNvbmRpY2lvbmFsIGUgYSB2YXJpw6JuY2lhIGNvbmRpY2lvbmFsIG7Do28gb3NjaWxlbSBjb20gbyB0ZW1wby4gCgpDb21vIGFsdGVybmF0aXZhLCBzdXJnZSBvICoqTW9kZWxvIGRlIENvcnJlw6fDo28gZGUgRXJyb3MgKE1DRSkqKiBxdWUgdXRpbGl6YSBhIGFuw6FsaXNlIGRlIGNvaW50ZWdyYcOnw6NvIHBhcmEgYSBlc3RpbWHDp8OjbyBkZSBtb2RlbG9zIHF1YW5kbyBhcyB2YXJpw6F2ZWlzIG7Do28gYXByZXNlbnRhbSBlc3RhY2lvbmFyaWVkYWRlLiBBIGlkw6lpYSBpbnR1aXRpdmEgZGUgKipjb2ludGVncmHDp8OjbyoqIMOpIHF1ZSB2YXJpw6F2ZWlzIG7Do28gZXN0YWNpb27DoXJpYXMgcG9kZW0gY2FtaW5oYXIganVudGFzLCBpc3RvIMOpLCBwb2RlbSB0ZXIgdHJhamV0w7NyaWFzIHRlbXBvcmFpcyBpbnRlcmxpZ2FkYXMsIGRlIGZvcm1hIHF1ZSBubyBsb25nbyBwcmF6byBhcHJlc2VudGVtIHJlbGHDp8OjbyBkZSBlcXVpbMOtYnJpby4gCgpQYXJhIG8gY2FzbyBtdWx0aXZhcmlhZG8sIGVzdHVkYW1vcyBjb21vIG8gKipNb2RlbG8gVmV0b3JpYWwgQXV0b3JyZWdyZXNzaXZvIChWQVIpKiosIG9wY2lvbmFsbWVudGUgZXN0aW1hZG8gcG9yIE1RTywgcG9kZSBzZXIgdXNhZG8gcGFyYSBtb2RlbGFnZW0gZGUgc8OpcmllcyB0ZW1wb3JhaXMgbXVsdGl2YXJpYWRhcy4gUG9yw6ltLCB0ZW1vcyBhIHBvc3NpYmlsaWRhZGUgZG9zIGNvbXBvbmVudGVzIGRhIHPDqXJpZSB0ZW1wb3JhbCBtdWx0aXZhcmlhZGEgc2VyZW0gY29pbnRlZ3JhZG9zIGUgbmVzdGUgY2FzbyBvIFZBUiBuw6NvIGRldmVyaWEgc2VyIHVzYWRvIGUgc2ltIG8gKipNb2RlbG8gVmV0b3JpYWwgZGUgQ29ycmXDp8OjbyBkZSBFcnJvcyAoVkVDKSoqIHF1ZSDDqSBhIHZlcnPDo28gdmV0b3JpYWwgZG8gTUNFLiAKClJlc3VtaWRhbWVudGUsIG5vIGRlY29ycmVyIGRlc3RlIGRvY3VtZW50byBlbnRlbmRlcmVtb3MgbyBxdWUgw6kgKipjb2ludGVncmHDp8OjbyoqLCBzdWEgcmVsYcOnw6NvIGNvbSAqKmVzdGFjaW9uYXJpZWRhZGUqKiBlIGNvbW8gZXN0ZXMgY29uY2VpdG9zIGNvbmR1emlyw6NvIGEgYW7DoWxpc2UgZGUgdW1hIHPDqXJpZSB0ZW1wb3JhbCBtdWx0aXZhcmlhZGEgZGEgc2VndWludGUgbWFuZWlyYToKCiogU2UgKip0b2RvcyBvcyBjb21wb25lbnRlcyBkYSBzw6lyaWUgc8OjbyBlc3RhY2lvbsOhcmlvcyoqLCBvIG1vZGVsbyBWQVIgZW0gbsOtdmVsIHNlIGFwbGljYSBzZW0gcHJvYmxlbWFzOwoqIFNlICoqdGVtb3MgY29tcG9uZW50ZXMgbsOjbyBlc3RhY2lvbsOhcmlvcyoqLCBjb250YW1vcyBjb20gZHVhcyBhbHRlcm5hdGl2YXM6CiAgICAqIFNlIGVsZXMgKipzw6NvIG7Do28gZXN0YWNpb27DoXJpb3MgZSBuw6NvIGNvaW50ZWdyYWRvcyoqLCBkZXZlLXNlIGFqdXN0YXIgbyBWQVIgZW0gcHJpbWVpcmFzIGRpZmVyZW7Dp2FzCiAgICAqIFNlIGVsZXMgKipzw6NvIG7Do28gZXN0YWNpb27DoXJpb3MsIG1hcyBjb2ludGVncmFkb3MqKiwgZGV2ZS1zZSBhanVzdGFyIG8gVmV0b3IgZGUgQ29ycmXDp8OjbyBkZSBFcnJvcyAoVkVDKQoKCiMjIyMjICoqQ09JTlRFR1JBw4fDg08gRSBSRUdSRVNTw4NPIEVTUMOaUklBKioKCkNvbW8gc2FiZW1vcywgbXVpdGFzIHPDqXJpZXMgdGVtcG9yYWlzIGVjb27DtG1pY2FzIHPDo28gKiplc3RhY2lvbsOhcmlhcyBlbSBwcmltZWlyYSBkaWZlcmVuw6dhKiouIFByb2Nlc3NvcyBlc3RhY2lvbsOhcmlvcyBlbSBwcmltZWlyYSBkaWZlcmVuw6dhIHPDo28gdGFtYsOpbSBjb25oZWNpZG9zIGNvbW8gKipwcm9jZXNzb3MgaW50ZWdyYWRvcyBkZSBvcmRlbSAxKiogb3UgcHJvY2Vzc29zICRJKDEpJC4gRW0gZ2VyYWwsIHVtIHByb2Nlc3NvIGN1amEgJGQkLcOpc2ltYSBkaWZlcmVuw6dhIMOpIGVzdGFjaW9uw6FyaWEgw6kgdW0gcHJvY2Vzc28gaW50ZWdyYWRvIGRlIG9yZGVtICRkJCwgb3UgJEkoZCkkLgoKVW0gZXhlbXBsbyBjbMOhc3NpY28gZGUgcHJvY2Vzc28gZXN0YWNpb27DoXJpbyBlbSBwcmltZWlyYSBkaWZlcmVuw6dhIMOpIG8gKipwYXNzZWlvIGFsZWF0w7NyaW8qKi4gRWxlIMOpIHVtYSB2YXJpw6F2ZWwgcXVhbHF1ZXIgKGFxdWksICRwX3QkKSBxdWUgcG9kZSBzZXIgZXNjcml0YSBjb21vOgoKJCQKcF90PXBfe3QtMX0rYV97dH0KJCQKb25kZSAkYV90JCDDqSBpbmRlcGVuZGVudGVtZW50ZSBlIGlkZW50aWNhbWVudGUgZGlzdHJpYnXDrWRvIChpaWQpIGNvbSBtw6lkaWEgemVybyBlIHZhcmnDom5jaWEgY29uc3RhbnRlLiBFbWJvcmEgJEVcbGVmdFtwX3RccmlnaHRdPTAkW14xXSBwYXJhIHRvZG8gJHQkLCBzdWEgdmFyacOibmNpYSAkVmFyKHBfdCk9VFxzaWdtYV57Mn0kIG7Do28gw6kgaW52YXJpYW50ZSBubyB0ZW1wby4gQXNzaW0sICRwX3QkIG7Do28gw6kgZXN0YWNpb27DoXJpbyBlIGVtIGZ1bsOnw6NvIGRlICRcRGVsdGEgcF90PXBfdCAtIHBfe3QtMX0gPSBhX3QkIGUgJGFfdCQsIHBvciBkZWZpbmnDp8Ojbywgc2VyIGVzdGFjaW9uw6FyaW8sIGEgcHJpbWVpcmEgZGlmZXJlbsOnYSBkZSAkcF90JCBzZXLDoSBlc3RhY2lvbsOhcmlhLgoKW14xXTogU3Vwb25kbyAkcF8wPTAkLCB0ZW1vcyBxdWUgJHBfMT1hXzEkLCAkcF8yPXBfMSthXzI9YV8xK2FfMiQgZSAkcF90PWFfMSthXzIrLi4uK2FfdCQgZSBhc3NpbSwgJEVcbGVmdFtwX3QgXHJpZ2h0XT1FXGxlZnRbYV8xIFxyaWdodF0rLi4uK0VcbGVmdFthX3QgXHJpZ2h0XT0wJCBlICRWYXIocF90KT1WYXIoYV8xKSsuLi4rVmFyKGFfdCk9dFxzaWdtYV57Mn1fe2F9JAoKQWdvcmEsIHN1cG9uaGEgcXVlIHF1ZXJlbW9zIGVzdGltYXIgbyBzZWd1aW50ZSBtb2RlbG8gZGUgcmVncmVzc8OjbyBsaW5lYXIgc2ltcGxlczoKCiQkCnlfdCA9IFxhbHBoYSArIFxiZXRhIHhfdCArIGFfdAokJApvbmRlICRFW2FfdF09MCQsICRWYXIoYV90KT1cc2lnbWFeezJ9JCBlICRFXGxlZnRbYV90LCBhX3t0LWx9XHJpZ2h0XT0wJCBwYXJhIHRvZG8gJGwgPjAkLiBTZSAkeV90JCBlICR4X3QkIHPDo28gb3JpZ2luYWRhcyBwb3IgcGFzc2Vpb3MgYWxlYXTDs3Jpb3MgaW5kZXBlbmRlbnRlcyAocXVlIHBvciBkZWZpbmnDp8OjbyBuw6NvIHPDo28gZXN0YWNpb27DoXJpb3MpLCBuw6NvIGV4aXN0ZSByZWxhw6fDo28gZW50cmUgJHlfdCQgZSAkeF90JCBlIG9zIHBhcsOibWV0cm9zIGVzdGltYWRvcyBwb3IgTVFPIHBhcmEgbyBtb2RlbG8gZGUgcmVncmVzc8OjbyBsaW5lYXIgc2ltcGxlcyBwcm9kdXppcsOhIHVtYSBlc3RpbWF0aXZhIHBhcmEgJFxiZXRhJCBpbmNvbnNpdGVudGUuIEVzdGUgY2FzbyDDqSBjb25oZWNpZG8gbmEgbGl0ZXJhdHVyYSBjb21vICoqcmVncmVzc8OjbyBlc3DDunJpYSoqLgoKVW1hIGFsdGVybmF0aXZhIHBhcmEgbyAqKnByb2JsZW1hIGRlIHJlZ3Jlc3PDo28gZXNww7pyaWEqKiBzZXJpYSBlc3RpbWFyIG8gc2VndWludGUgbW9kZWxvOgoKJCQKXGJlZ2lue2FsaWduZWR9CiYmJiB5X3QgLSB5X3t0LTF9ID0gXGFscGhhIC0gXGFscGhhICsgXGJldGEgeF90IC0gXGJldGEgeF97dC0xfSArIGFfdCAtIGFfe3QtMX1cXApcXCAKJiYmIFxEZWx0YSB5X3QgPSBcYmV0YSBcRGVsdGEgeF90ICsgXHZhcmVwc2lsb25fdCBcXApcZW5ke2FsaWduZWR9CiQkCmRhZG8gcXVlICRcRGVsdGEgeV90JCBlICRcRGVsdGEgeF90JCBzZXLDo28gZXN0YWNpb27DoXJpb3MuIFBvcsOpbSwgaXNzbyBwb2RlIGVzY29uZGVyIGFzIHByb3ByaWVkYWRlcyBkZSBsb25nbyBwcmF6byBkYSByZWxhw6fDo28gZW50cmUgYXMgZHVhcyB2YXJpw6F2ZWlzLiAKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBmaWcud2lkdGg9OSwgZmlnLmhlaWdodD01fQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMjICAgICBQQUNPVEVTICAgICAjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBDYXJyZWdhciBubyBhbWJpZW50ZSBvcyBwYWNvdGVzIG5lY2Vzc8OhcmlvcyBwYXJhIHJlcGxpY2FyIG9zIGPDs2RpZ29zIGFiYWl4bwpzdXBwcmVzc01lc3NhZ2VzKHJlcXVpcmUocXVhbnRtb2QpKQpzdXBwcmVzc01lc3NhZ2VzKHJlcXVpcmUoUXVhbmRsKSkKc3VwcHJlc3NNZXNzYWdlcyhyZXF1aXJlKGZvcmVjYXN0KSkKc3VwcHJlc3NNZXNzYWdlcyhyZXF1aXJlKGRwbHlyKSkKc3VwcHJlc3NNZXNzYWdlcyhyZXF1aXJlKG1hZ3JpdHRyKSkKc3VwcHJlc3NNZXNzYWdlcyhyZXF1aXJlKGhpZ2hjaGFydGVyKSkKc3VwcHJlc3NNZXNzYWdlcyhyZXF1aXJlKGR5Z3JhcGhzKSkKc3VwcHJlc3NNZXNzYWdlcyhyZXF1aXJlKGdncGxvdDIpKQpzdXBwcmVzc01lc3NhZ2VzKHJlcXVpcmUoTVRTKSkKc3VwcHJlc3NNZXNzYWdlcyhyZXF1aXJlKHZhcnMpKQpzdXBwcmVzc01lc3NhZ2VzKHJlcXVpcmUodXJjYSkpCnN1cHByZXNzTWVzc2FnZXMocmVxdWlyZShmVW5pdFJvb3RzKSkKc3VwcHJlc3NNZXNzYWdlcyhyZXF1aXJlKHN0YXJnYXplcikpCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMjICAgICAgIERBRE9TICAgICAjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBTZW1lbnRlIHBhcmEgZmF6ZXIgbyBleGVtcGxvIHByb2R1emlyIG9zIG1lc21vcyByZXN1bHRhZG9zIAojIGVtIGNvbXB1dGFkb3JlcyBkaWZlcmVudGVzCnNldC5zZWVkKDEyMykKCiMgUmVwZXRpciB6ZXJvIDEwMDAgdmV6ZXMgcGFyYSBhcm1hemVuYXIgZGFkb3Mgc2ltdWxhZG9zIGRlCiMgeSBlIHgKeSA8LSByZXAoMCwgMTAwMCkKeCA8LSByZXAoMCwgMTAwMCkKCiMgQ3JpYXIgbyBwYXNzZWlvIGFsZWF0w7NyaW8gKFl0ID0gWXQtMSArIEVSUk90KSBvbmRlIG8gZXJybyAKIyDDqSB1bSBydcOtZG8gYnJhbmNvLCBjb25mb3JtZSBlc3R1ZGFkbyBlbSBzYWxhLiBMZW1icmUtc2UKIyBxdWUgbmEgZGVmaW5pw6fDo28gZW0gc2FsYSB0ZW1vcyBxdWUgc3Vwb3IgYSBleGlzdMOqbmNpYSBkZQojIHVtIHZhbG9yIGluaWNpYWwgcGFyYSBvIHBhc3NlaW8gYWxlYXTDs3JpbyBlIGEgcGFydGlyIGRlc3RlCiMgdmFsb3IgaW5pY2lhLXNlIGEgZ2VyYcOnw6NvIGRvcyBkYWRvcyAoYXF1aSwgYXNzdW1pbW9zIHF1ZQojIGVzdGUgdmFsb3Igw6kgMCwgb2JzZXJ2ZSBxdWUgYSBpdGVyYcOnw6NvIGRvIGZvciBpbmljaWEgZW0gMikuCiMgQSBmdW7Dp8OjbyBybm9ybSBnZXJhcsOhIGFsZWF0w7NyaWFtZW50ZSB1bSB2YWxvciBwYXJhIHVtYSBOb3JtYWwKIyBjb20gbcOpZGlhIDAgZSB2YXJpw6JuY2lhIDEuCmZvciAoaSBpbiAyOjEwMDApIHsKICB5W2ldIDwtIHlbaS0xXSArIHJub3JtKDEpCn0KCiMgQ3JpYXIgbyBwYXNzZWlvIGFsZWF0w7NyaW8gKFh0ID0gWHQtMSArRVJST3QpLCBhc3NpbSBjb21vIAojIGZpemVtb3MgcGFyYSB5CmZvciAoaSBpbiAyOjEwMDApIHsKICB4W2ldIDwtIHhbaS0xXSArIHJub3JtKDEpCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMgICAgR1LDgUZJQ09TICAgICAjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBTYWx2YXIgb3MgZGFkb3MgZW0gdW1hIHPDqXJpZSB0ZW1wb3JhbCBtdWx0aXZhZGEgdXNhbmRvCiMgYSBmdW7Dp8OjbyBjYmluZCAoanVudGFyIHPDqXJpZXMgZW0gY29sdW5hcykKcGFzc2Vpb3MgPC0gY2JpbmQoeSA9IGFzLnRzKHkpLCB4ID0gYXMudHMoeCkpCgojIEdyw6FmaWNvIGRhcyBkdWFzIHPDqXJpZXMgdGVtcG9yYWlzIHVzYW5kbyBvIHBhY290ZSBkeWdyYXBocwpkeWdyYXBoczo6ZHlncmFwaChwYXNzZWlvcywgbWFpbiA9ICJQYXNzZWlvcyBBbGVhdMOzcmlvcyBTaW11bGFkb3MiKQpgYGAKClBlbG8gZ3LDoWZpY28gcG9kZW1vcyBvYnNlcnZhciBxdWUgaMOhIHVtYSBhcGFyZWNlbnRlIHJlbGHDp8OjbyBlbnRyZSBhcyBkdWFzIHZhcmnDoXZlaXMuIFNlbSBmYXplciBxdWFscXVlciB0aXBvIGRlIHRlc3RlIHBhcmEgYXZhbGlhciBhIGVzdGFjaW9uYXJpZWRhZGUgZGVsYXMsIHVtYSBwZXNzb2EgcG9kZXJpYSBlc3RpbWFyIHVtIG1vZGVsbyBkZSByZWdyZXNzw6NvIGxpbmVhciBzaW1wbGVzIGUgZmF6ZXIgaW5mZXLDqm5jaWEgY29tIG9zIHJlc3VsdGFkb3Mgb3UgYXTDqSBtZXNtbyBwcmV2aXPDtWVzIHBhcmEgJHkkLiBDb21vIGrDoSBzYWJlbW9zIHF1ZSBhbWJhcyBhcyB2YXJpw6F2ZWlzIGZvcmFtIGdlcmFkYXMgcG9yIHVtIHBhc3NlaW8gYWxlYXTDs3JpbyBlIHF1ZSBlc3RlLCBwb3IgZGVmaW5pw6fDo28sIG7Do28gw6kgZXN0YWNpb27DoXJpbywgZW50ZW5kZW1vcyBxdWUgb3MgcmVzdWx0YWRvcyBuw6NvIHTDqm0gcXVhbHF1ZXIgdXRpbGlkYWRlLiBBYmFpeG8sIHJlc3VsdGFkbyBkZXN0YSByZWdyZXNzw6NvLgoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMgICAgUkVHUkVTU8ODTyAgICAjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBFc3RpbWHDp8OjbyBkYSBSZWdyZXNzw6NvIExpbmVhciBTaW1wbGVzIHZpYSBPTFMuIEFxdWksIHVzYW1vcwojIGEgZnVuw6fDo28gbG0gZG8gcGFjb3RlIHN0YXRzIHF1ZSB0ZW0gYXMgc2VndWludGVzIG9ww6fDtWVzOgojIC0gZm9ybXVsYTogbW9kZWxvIGEgc2VyIGFqdXN0YXRvICh+IGZheiBvIHBhcGVsIGRlICI9IikKIyAtIGRhdGE6IG8gY29qdW50byBkZSBkYWRvcwojIC0gd2VpZ2h0czogb3MgcGVzb3MgcGFyYSByZWdyZXNzw6NvIHBvbmRlcmFkYQojIC0gc3Vic2V0OiBzdWItY29uanVudG8gZG9zIGRhZG9zCiMgLSBuYS5hY3Rpb246IGVzcGVjaWZpY2FyIG8gcXVlIGZhemVyIG5vIGNhZG8gZGUgTkEgbm9zIGRhZG9zLiBDb21vCiMgcGFkcsOjbyB1c2EgYSBmdW7Dp8OjbyBuYS5vbWl0IHF1ZSBleGNsdWkgZGEgYmFzZSBjYXNvcyBkZSBOQQptb2RlbG8gPC0gbG0oZm9ybXVsYSA9IHl+eCwgZGF0YSA9IHBhc3NlaW9zKQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyAgIFJFU1VMVEFET1MgICAgIyMjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgTW9zdHJhciBtb2RlbG8gZXN0aW1hZG8Kc3RhcmdhemVyKG1vZGVsbywgdHlwZSA9ICJ0ZXh0IiwgdGl0bGUgPSAiUmVzdWx0YWRvIFJlZ3Jlc3PDo28gRXNww7pyaWEiKQpgYGAKCkNvbW8gZXNwZXJhZG8sIG8gcmVzdWx0YWRvIG1vc3RyYSBxdWUgb3MgcGFyw6JtZXRyb3MgZXN0aW1hZG9zIHPDo28gYWx0YW1lbnRlIHNpZ25pZmljYXRpdm9zIGUgaMOhIGF1dG9jb3JyZWxhw6fDo28gbm9zIHJlc8OtZHVvcyBjb21vIGFwcmVzZW50YSBvIGdyw6FmaWNvIGRhIEZ1bsOnw6NvIGRlIEF1dG9jb3JyZWxhw6fDo28gKEZBQykgYWJhaXhvLiBFc3RlIHJlc3VsdGFkbyBpbmRpY2EgKipyZWdyZXNzw6NvIGVzcMO6cmlhKiosIGNhcmFjdGVyaXphZGEgcG9yIHJlbGHDp8OjbyBmb3J0ZSBlbnRyZSBhcyB2YXJpw6F2ZWlzLCBkZXZpZG8gYSB0ZW5kw6puY2lhIGVzdG9jw6FzdGljYSBjb211bSDDoHMgZHVhcyBzw6lyaWVzIChmcnV0byBkbyBwYXNzZWlvIGFsZWF0w7NyaW8gbmVzdGUgY2FzbykgZSBlcnJvIG7Do28gZXN0YWNpb27DoXJpbyAoZ3LDoWZpY28gZG9zIHJlc8OtZHVvcyBkbyBtb2RlbG8gZXN0aW1hZG8pLgoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD01fQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgRkFDIERPUyBSRVPDjURVT1MgICMjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgQ2FsY3VsYXIgYSBGQUMgZG9zIHJlc8OtZHVvcyBkbyBtb2RlbG8KYWNmX3Jlc2lkdW9zIDwtIGFjZihtb2RlbG8kcmVzaWR1YWxzLCBwbG90ID0gRkFMU0UsIG5hLmFjdGlvbiA9IG5hLnBhc3MsIG1heC5sYWcgPSAyNSkKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMgICBSRVNVTFRBRE9TICAgICMjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpwYXIobWZyb3cgPSBjKDEsIDIpKQojIEdyw6FmaWNvIGRhIEZBQwpwbG90KGFjZl9yZXNpZHVvcywgbWFpbiA9ICIiLCB5bGFiID0gIiIsIHhsYWIgPSAiRGVmYXNhZ2VtIikKdGl0bGUoIkZ1bsOnw6NvIGRlIEF1dG9jb3JyZWxhw6fDo28gKEZBQykgZG9zIFJlc8OtZHVvcyIsIGFkaiA9IDAuNSwgbGluZSA9IDEpCgojIEdyw6FmaWNvIGRvcyBSZXPDrWR1b3MKcGxvdChtb2RlbG8kcmVzaWR1YWxzLCBtYWluID0gIlJlc8OtZHVvcyBkZSBNUU8iLCB0eXBlID0gImwiLCB5bGFiID0gIiIsIHhsYWIgPSAiIikKYGBgCgojIyMjIyAqKk1PREVMTyBERSBDT1JSRcOHw4NPIERFIEVSUk9TKioKCkBwaGlsbGlwczE5ODZtdWx0aXBsZSBkZW1vbnN0cmFyYW0gcXVlIMOpIHBvc3PDrXZlbCB0cmFiYWxoYXIgY29tIG8gbsOtdmVsIGRhcyBzw6lyaWVzIHNlbSBjb3JyZXIgbyByaXNjbyBkZSByZWdyZXNzw7VlcyBlc3DDunJpYXMgZGVzZGUgcXVlIGFzIHPDqXJpZXMgdXRpbGl6YWRhcyBzZWphbSBjb2ludGVncmFkYXMgZGUgdW1hIHBhcnRpY3VsYXIgb3JkZW0uIAoKUGFyYSBvIG5vc3NvIGV4ZW1wbG8sIHF1YW5kbyAkXGhhdHthfV90ID0geV90IC0gXGhhdHtcYWxwaGF9IC0gXGhhdHtcYmV0YX0geF90JCDDqSAkSSgwKSQsIGRpemVtb3MgcXVlICR5X3QkIGUgJHhfdCQgc8OjbyBjb2ludGVncmFkYXMsIHBvaXMgY2FkYSB2YXJpw6F2ZWwgw6kgJEkoMSkkIG1hcyBhIGNvbWJpbmHDp8OjbyBsaW5lYXIgZGVsYXMsICRcaGF0e2F9X3QkLCDDqSAkSSgwKSQuIENvbW8gY29uc2VxdcOqbmNpYSwgYXNzdW1pbW9zIHF1ZSAkeV90JCBlICR4X3QkIHTDqm0gdHJhamV0w7NyaWFzIHRlbXBvcmFpcyBpbnRlcmxpZ2FkYXMgZGUgZm9ybWEgcXVlIG5vIGxvbmdvIHByYXpvIGFwcmVzZW50ZW0gcmVsYcOnw6NvIGRlIGVxdWlsw61icmlvLiBFbnRyZXRhbnRvLCBubyBjdXJ0byBwcmF6byBow6EgZGVzdmlvcyBkZXNzYSByZWxhw6fDo28gZGUgZXF1aWzDrWJyaW8gZGUgbW9kbyBxdWUgJGFfdCQgw6kgY2hhbWFkbyBkZSAqKmVycm8gZGUgZXF1aWzDrWJyaW8qKiwgcG9ycXVlIGV4cHJlc3NhIG9zICoqZGVzdmlvcyB0ZW1wb3JhaXMgZGUgZXF1aWxpYnJpbyBkZSBsb25nbyBwcmF6byoqLiAKCk8gKipNb2RlbG8gZGUgQ29ycmXDp8OjbyBkZSBFcnJvcyAoTUNFKSoqIGNvcnJpZ2UgZXNzZXMgZGVzZXF1aWzDrWJyaW9zIGUgbm9zIG1vc3RyYSBhIHRheGEgw6AgcXVhbCBvIHNpc3RlbWEgcmV0b3JuYSBhbyBlcXVpbMOtYnJpbyBhcMOzcyBvcyBkZXN2aW9zLiBQYXJhIGVudGVuZGVyIGNvbW8gZWxlIGZheiBpc3NvIHN1cG9uaGEgcXVlIGR1YXMgdmFyacOhdmVpcyAkeSQgZSAkeCQgc8OjbyAkSSgxKSQsIG1hcyBjb2ludGVncmFkYXMgZSBxdWUgcXVlcmVtb3MgZXN0aW1hciBvIHNlZ3VpbnRlIG1vZGVsbzogCgokJAp5X3QgPSBcYmV0YV8wICsgXGJldGFfezF9eV97dC0xfSArIFxiZXRhX3syfXhfdCArIFxiZXRhX3szfXhfe3QtMX0gKyBcdmFyZXBzaWxvbl97dH0KJCQKVGFsIG1vZGVsbyDDqSBjb25oZWNpZG8gY29tbyAqKk1vZGVsbyBBdXRvcnJlZ3Jlc3Npdm8gY29tIERlZmFzYWdlbnMgRGlzdHJpYnXDrWRhcyoqIChkbyBpbmdsw6pzLCBBREwgLSAqQXV0b3JlZ3Jlc3NpdmUgRGlzdHJpYnV0ZWQgTGFnKikuIFJlcGFyZSBxdWUgdGVtb3MgdW1hIGNvbWJpbmHDp8OjbyBlbnRyZSB2YWxvcmVzIGRlZmFzYWRvcyBkYXMgZHVhcyB2YXJpw6F2ZWlzLCBhbMOpbSBkYSBwcsOzcHJpYSB2YXJpw6F2ZWwgJHhfdCRbXjJdLCBlIHF1ZSBlc3RlIG1vZGVsbyDDqSBzZW1lbGhhbnRlIMOgcyBlcXVhw6fDtWVzIGVzdGltYWRhcyBubyBWQVIuCgpbXjJdOiBRdWFuZG8gYSBkaW7Dom1pY2EgZG8gbW9kZWxvIMOpIGRpdGFkYSBwZWxvIGNvbXBvcnRhbWVudG8gZGFzIHZhcmnDoXZlaXMgaW5kZXBlbmRlbnRlcyBkZWZhc2FkYXMgbm9zIHJlZmVyaW1vcyBhICoqbW9kZWxvcyBjb20gZGVmYXNhZ2VucyBkaXN0cmlidcOtZGFzKiosIHNlbmRvIGFzIGRlZmFzYWdlbnMgcmVzcG9uc8OhdmVpcyBwb3IgZXhwbGljYXIgJHlfdCQuIFNlIHNvbWVudGUgb3MgdmFsb3JlcyBwYXNzYWRvcyBkZSAkeV90JCBkZXRlcm1pbmFtIHNldSB2YWxvciBlbSAkdCQsIGEgZGluw6JtaWNhIGRlICR5X3QkIHBvZGUgc2VyIGRlc2NyaXRhIHNlZ3VuZG8gKipNb2RlbG9zIEF1dG9ycmVncmVzc2l2b3MqKiAoQVIpLiDDiSBwb3Nzw612ZWwsIGFpbmRhLCBjb21iaW5hciBvcyBkb2lzIG1vZGVsb3MgYW50ZXJpb3JlcyBlbSB1bWEgw7puaWNhIGVxdWHDp8Ojbywgb3JpZ2luYW5kbyBvcyBjaGFtYWRvcyAqKk1vZGVsb3MgQXV0b3JyZWdyZXNzaXZvcyBjb20gRGVmYXNhZ2VucyBEaXN0cmlidcOtZGFzKiogKGRvIGluZ2zDqnMsIEFETCAtICpBdXRvcmVncmVzc2l2ZSBEaXN0cmlidXRlZCBMYWcqKS4KClBvZGVtb3MgcmVlc2NyZXZlciBvIG1vZGVsbyBjb21vOiAKCiQkClxiZWdpbnthbGlnbmVkfQomIHlfdCAtIHlfe3QtMX0gPSBcYmV0YV8wICsgXGJldGFfMXlfe3QtMX0gLSB5X3t0LTF9ICsgXGJldGFfMnhfdCArIFxiZXRhXzN4X3t0LTF9ICsgXHZhcmVwc2lsb25fdCBcXAomIFxEZWx0YSB5X3QgPSBcYmV0YV8wIC0gKDEtXGJldGFfMSl5X3t0LTF9ICsgXGJldGFfMnhfdCArIFxiZXRhXzN4X3t0LTF9ICsgXHZhcmVwc2lsb25fdCBcXAomIFxEZWx0YSB5X3QgPSBcYmV0YV8wIC0gKDEtXGJldGFfMSl5X3t0LTF9ICsgXGJldGFfMnhfdCArIFxiZXRhXzN4X3t0LTF9ICsgXGJldGFfMnhfe3QtMX0gLSBcYmV0YV8yeF97dC0xfSAgKyBcdmFyZXBzaWxvbl90IFxcCiYgXERlbHRhIHlfdCA9IFxiZXRhXzAgLSAoMS1cYmV0YV8xKXlfe3QtMX0gKyBcYmV0YV8yIFxEZWx0YSB4X3QgKyBcYmV0YV8zeF97dC0xfSArIFxiZXRhXzJ4X3t0LTF9ICsgXHZhcmVwc2lsb25fdCBcXAomIFxEZWx0YSB5X3QgPSBcYmV0YV8wIC0gKDEtXGJldGFfMSl5X3t0LTF9ICsgXGJldGFfMiBcRGVsdGEgeF90ICsgKFxiZXRhXzMgKyBcYmV0YV8yKXhfe3QtMX0gKyBcdmFyZXBzaWxvbl90IFxcCiYgXERlbHRhIHlfdCA9IFxnYW1tYSBcRGVsdGEgeF90IC1cbGFtYmRhKHlfe3QtMX0gLVxhbHBoYSAtIFxiZXRhIHhfe3QtMX0pICsgXHZhcmVwc2lsb25fdCBcXApcZW5ke2FsaWduZWR9CiQkCm9uZGUgJFxnYW1tYSA9IFxiZXRhXzIkLCAkXGxhbWJkYSA9IDEgLVxiZXRhXzEkLCAkXGFscGhhPVxmcmFje1xiZXRhXzB9ezEtXGJldGFfMX0kLCAkXGJldGEgPSBcZnJhY3tcYmV0YV8zK1xiZXRhXzJ9ezEtXGJldGFfMX0kIGUgJHlfe3QtMX0gLVxhbHBoYSAtIFxiZXRhIHhfe3QtMX0gPSBhX3t0LTF9JCBxdWUgw6kgZXN0aW1hZG8gcG9yICR5X3t0fSA9IFxhbHBoYSArIFxiZXRhIHhfe3R9ICsgYV90JC4gT2JzZXJ2ZSBxdWUgbyAqKmNvZWZpY2llbnRlIGRvIGVycm8gZGUgY29ycmXDp8OjbyDDqSBuZWdhdGl2byoqIHBvciBjb25zdHJ1w6fDo28gc2lnbmlmaWNhbmRvIHF1ZSBhIGNvcnJlw6fDo28gZG8gZXJybyDDqSBmZWl0YSBlbSBjYWRhIHBlcsOtb2RvLiBQYXJhIGZhY2lsaXRhciBvIGVudGVuZGltZW50bywgc3Vwb25oYSBxdWUgJHlfdCA9IHZlbmRhX3QkIGUgcXVlICR4X3Q9cHJlY29fdCQuIEFzc2ltLCBvIE1vZGVsbyBkZSBDb3JyZcOnw6NvIGRlIEVycm9zIChNQ0UpIHNlIHRvcm5hOgoKJCQKXGJlZ2lue2FsaWduZWR9CiYgXERlbHRhIHZlbmRhX3QgPSBcZ2FtbWEgXERlbHRhIHByZWNvX3QgLVxsYW1iZGEodmVuZGFfe3QtMX0gLVxhbHBoYSAtIFxiZXRhIHByZWNvX3t0LTF9KSArIFx2YXJlcHNpbG9uX3QgXFwKJiBcRGVsdGEgdmVuZGFfdCA9IFxnYW1tYSBcRGVsdGEgcHJlY29fdCAtXGxhbWJkYShhX3t0LTF9KSArIFx2YXJlcHNpbG9uX3QgXFwKXGVuZHthbGlnbmVkfQokJApxdWUgZGVpeGEgY2xhcm8gcXVlIGEgdmFyaWHDp8OjbyBuYXMgdmVuZGFzIMOpIGV4cGxpY2FkYSBwb3IgZG9pcyBjb21wb25lbnRlczogKip1bSB0ZXJtbyBkZSBjdXJ0byBwcmF6byBlIG91dHJvIGRlIGxvbmdvIHByYXpvKiouIEFzIHZhcmlhw6fDtWVzIG5vcyBwcmXDp29zLCAkXERlbHRhIHByZWNvX3QkLCByZXByZXNlbnRhbSBvIHRlcm1vIGRlIGN1cnRvIHByYXpvIGUgJGFfe3QtMX0kIMOpIG8gY29tcG9uZW50ZSBkZSBsb25nbyBwcmF6bywgcG9pcyBwb2RlIHNlciBlbnRlbmRpZG8gY29tbyBvIHRlcm1vIGRlIGVycm8gZGEgcmVncmVzc8OjbyAkdmVuZGFfe3R9ID0gXGFscGhhICsgXGJldGEgcHJlY29fe3R9ICsgYV90JCBxdWUgbmFkYSBtYWlzIMOpIHF1ZSB1bWEgY29tYmluYcOnw6NvIGxpbmVhciBlc3RhY2lvbsOhcmlhIGVudHJlIGFzIGR1YXMgdmFyacOhdmVpcy4KCiogKipFU1RJTUHDh8ODTyBETyBNT0RFTE8gTUNFKioKCkEgZXN0aW1hw6fDo28gZG8gTW9kZWxvIGRlIENvcnJlw6fDo28gZGUgRXJyb3MgcG9kZSBzZXIgZmVpdGEgZGEgc2VndWludGUgbWFuZWlyYTogCgppKSBFc3RpbWFyIGEgcmVsYcOnw6NvIGVudHJlICR5X3QkIGUgJHhfdCQgcG9yIG1laW8gZGUgJHlfdCA9IFxhbHBoYSArIFxiZXRhIHhfe3R9ICsgYV90JC4KaWkpIE9idGVyICRcaGF0e2F9X3QkIHF1ZSBzw6NvIG9zIHJlc8OtZHVvcyBkZSBjb2ludGVncmHDp8Ojby4KaWlpKSBFc3RpbWFyICRcRGVsdGEgeV90ID0gXGdhbW1hIFxEZWx0YSB4X3QgK1xsYW1iZGFcaGF0e2F9X3t0LTF9KyBcdmFyZXBzaWxvbl90JCBlIG9idGVyIGEgZXN0aW1hdGl2YSBwYXJhIG9zIHRlcm1vcyBkZSBjdXJ0byAoJFxnYW1tYSQpIGUgbG9uZ28gcHJhem8gKCRcbGFtYmRhJCkuCgojIyMjIyAqKlZFVE9SRVMgREUgQ09JTlRFR1JBw4fDg08qKgoKTyB2ZXRvciBkZSBjb2ludGVncmHDp8OjbyDDqSBmb3JtYWRvIHBlbG9zIGNvZWZpY2llbnRlcyBkYSByZWxhw6fDo28gZGUgY29pbnRlZ3Jhw6fDo28gKGVzdGFjaW9uw6FyaWEpIHF1ZSBhc3NlZ3VyYSBvIGVxdWlsw61icmlvIGRlIGxvbmdvIHByYXpvIGVudHJlIGFzIHPDqXJpZXMuIFN1cG9udG8gJFxib2xkc3ltYm9se3J9X3t0fSQgdW1hIHPDqXJpZSB0ZW1wb3JhbCBtdWx0aXZhcmlhZGEsIG9zICRrJCBlbGVtZW50b3MgZG8gdmV0b3IgJFxib2xkc3ltYm9se3J9X3t0fSA9IFxsZWZ0KHJfezF0fSwuLi4scl97a3R9XHJpZ2h0KV57J30kIHPDo28gZGl0b3MgY29pbnRlZ3JhZG9zIGRlIG9yZGVtICQoZCxiKSQgc2U6CgppLiBUb2RvcyBvcyBlbGVtZW50b3MgZGUgJFxib2xkc3ltYm9se3J9X3t0fSQgc8OjbyBpbnRlZ3JhZG9zIGRlIG9yZGVtICRkJCwgb3Ugc2VqYSwgc8OjbyAkSShkKSQ7CmlpLiBFeGlzdGUgdW0gdmV0b3IgbsOjbyBudWxvICRcYm9sZHN5bWJvbHtcYmV0YX0kLCB0YWwgcXVlICRcYm9sZHN5bWJvbHthfV97dH0gPSBcYm9sZHN5bWJvbHtcYmV0YX1eeyd9XGJvbGRzeW1ib2x7cn1fe3R9JCDDqSAkSShkLWIpJCwgJGI+MCQuIEEgZGlmZXJlbsOnYSAkZC1iJCDDqSBhIG9yZGVtIGRlIGludGVncmHDp8OjbyBvYnRpZGEgZGEgYXBsaWNhw6fDo28gZG8gdmV0b3IgJFxib2xkc3ltYm9se1xiZXRhfSQgZW0gJFxib2xkc3ltYm9se3J9X3t0fSQuIFNlIGFzIHZhcmnDoXZlaXMgc8OjbyBjb2ludGVncmFkYXMsIG8gcmVzw61kdW8gJFxib2xkc3ltYm9se2F9X3t0fSQgdGVtIG9yZGVtIGRlIGludGVncmHDp8OjbyBtZW5vciBxdWUgYSBvcmRlbSBkYXMgdmFyacOhdmVpcyBxdWUgbyBvcmlnaW5hcmFtLgoKTyBuw7ptZXJvIGRlIHZldG9yZXMgZGUgY29pbnRlZ3Jhw6fDo28gZGVwZW5kZSBkbyBuw7ptZXJvIGRlIHZhcmnDoXZlaXMgZW52b2x2aWRhcy4gVGVtLXNlOgoKYS4gQ2FzbyBkZSBkdWFzIHZhcmnDoXZlaXM6IFNlICRcYm9sZHN5bWJvbHtyfV97dH0gPSBcbGVmdCh5X3QsIHJfdFxyaWdodCleeyd9JCBjb20gJHlfdCBcc2ltIEkoMSkkLCAkeF90IFxzaW0gSSgxKSQgZSAkYV90ID0geV90IC0gXGJldGEgeF90IFxzaW0gSSgwKSQsIGVudMOjbyBkaXplbW9zIHF1ZSAkeV90JCBlICR4X3QkICRcc2ltIENJKDEsMSkkLCBvdSBzZWphLCBzw6NvIGNvaW50ZWdyYWRhcyBuYSBvcmRlbSAkKDEsMSkkIGNvbSB2ZXRvciBkZSBjb2ludGVncmHDp8OjbyAkXGJvbGRzeW1ib2x7XGJldGF9ID0gXGxlZnQoMSwtXGhhdHtcYmV0YX1ccmlnaHQpXnsnfSQgZSBvIHNpc3RlbWEgw6kgY29pbnRlZ3JhZG8gZGFkbyBxdWUgJFxib2xkc3ltYm9se1xiZXRhfV57J30gXGJvbGRzeW1ib2x7cn1fe3R9IFxzaW0gSSgwKSQuIE5lc3RlIGNhc28sIGV4aXN0ZSBzb21lbnRlICoqdW1hKiogY29tYmluYcOnw6NvIGxpbmVhciBlc3RhY2lvbsOhcmlhIHF1ZSByZXByZXNlbnRhICoqdW1hKiogcmVsYcOnw6NvIGRlIGVxdWlsw61icmlvIGRlIGxvbmdvIHByYXpvIGVudHJlIGFzIHZhcmnDoXZlaXMgcXVlIMOpIHJlcHJlc2VudGFkYSBwb3I6CgokJApcYm9sZHN5bWJvbHthfV97dH0gPSBcYm9sZHN5bWJvbHtcYmV0YX1eeyd9IFxib2xkc3ltYm9se3J9X3t0fSA9IFxiZWdpbntibWF0cml4fSAxICYgLVxoYXR7XGJldGF9IFxlbmR7Ym1hdHJpeH0gXGJlZ2lue2JtYXRyaXh9IHlfdCBcXCB4X3QgIFxlbmR7Ym1hdHJpeH0gPSB5X3QgLVxoYXR7XGJldGF9IHhfdAokJAoKYi4gQ2FzbyBkZSAkayQgdmFyacOhdmVpczogU2UgJFxib2xkc3ltYm9se3J9X3t0fSA9IFxsZWZ0KHlfezF0fSwgeF97MXR9LCB4X3sydH0sIC4uLiwgeF97a3R9XHJpZ2h0KV57J30kIGNvbSAkeV90IFxzaW0gSSgxKSQsICR4X3sxdH0gXHNpbSBJKDEpJCwgJHhfezJ0fSBcc2ltIEkoMSkkLCAkeF97M3R9IFxzaW0gSSgxKSQsIC4uLiwgJHhfe2t0fSBcc2ltIEkoMSkkIGUgJGFfdCA9IHlfdCAtIFxiZXRhXzF4X3sxdH0gLSBcYmV0YV8yeF97MnR9LCAuLi4sIC0gXGJldGFfa3hfe2t0fSBcc2ltIEkoMCkkLCBlbnTDo28gZGl6ZW1vcyBxdWUgJHlfdCQsICR4X3sxdH0kLCAuLi4sICR4X3trdH0kICRcc2ltIENJKDEsMSkkLCBvdSBzZWphLCBzw6NvIGNvaW50ZWdyYWRhcyBuYSBvcmRlbSAkKDEsMSkkIGNvbSB2ZXRvciBkZSBjb2ludGVncmHDp8OjbyAkXGJvbGRzeW1ib2x7XGJldGF9ID0gXGxlZnRbMSwgLVxoYXR7XGJldGF9XzEsIC1caGF0e1xiZXRhfV8yLC4uLiwtXGhhdHtcYmV0YX1fa1xyaWdodF1eeyd9JCBlIG8gc2lzdGVtYSDDqSBjb2ludGVncmFkbyBkYWRvIHF1ZSAkXGJvbGRzeW1ib2x7XGJldGF9XnsnfSBcYm9sZHN5bWJvbHtyfV97dH0gXHNpbSBJKDApJC4gTmVzdGUgY2FzbywgcG9kZSBleGlzdGlyIGF0w6kgJGstMSQgdmV0b3JlcyBkZSBjb2ludGVncmHDp8OjbyBsaW5lYXJtZW50ZSBpbmRlcGVuZGVudGVzLiBPdSBzZWphLCBwb2RlbSBleGlzdGlyIGRlICQxJCBhdMOpICRrLTEkIHZldG9yZXMgZGUgY29pbnRlZ3Jhw6fDo28gcXVlIHJlcHJlc2VudGFtIHJlbGHDp8O1ZXMgZGUgZXF1aWzDrWJyaW8gZGUgbG9uZ28gcHJhem8gZW50cmUgYXMgdmFyacOhdmVpcy4KCiogKipSQU5LIERFIENPSU5URUdSQcOHw4NPKioKCk8gcmFuayBkZSBjb2ludGVncmHDp8OjbyAoJHIkKSDDqSBvIG7Dum1lcm8gZGUgdmV0b3JlcyBkZSBjb2ludGVncmHDp8OjbyBsaW5lYXJtZW50ZSBpbmRlcGVuZGVudGVzLiBQYXJhICRrJCB2YXJpw6F2ZWlzIGRlIG1lc21hIG9yZGVtIGRlIGludGVncmHDp8OjbyBlIGNvaW50ZWdyYWRhcywgdGVtLXNlIHF1ZSAkMVxsZXEgciBcbGVxIGstMSQuIE8gcmFuayBkZSBjb2ludGVncmHDp8OjbyDDqSBvIG7Dum1lcm8gZGUgcmVsYcOnw7VlcyBkZSBjb2ludGVncmHDp8OjbyBpbXBvcnRhbnRlcyBwYXJhIG1hbnRlciBvIGVxdWlsw61icmlvIGRlIGxvbmdvIHByYXpvIGVudHJlIGFzIHZhcmnDoXZlaXMuCgojIyMjIyAqKlRFU1RFUyBERSBDT0lOVEVHUkHDh8ODTyoqCgpQYXJhIHRlc3RhciBhIGV4aXN0w6puY2lhIGRlIGNvaW50ZWdyYcOnw6NvIGVudHJlIHZhcmnDoXZlaXMsIHBvZGVtb3MgdXNhciAqKnRlc3RlcyBkZSB1bWEgZXF1YcOnw6NvKiogcXVlIHNlIGJhc2VpYW0gbm8gYWp1c3RhbWVudG8gZGEgcmVsYcOnw6NvIGVudHJlIGFzIHZhcmnDoXZlaXMgZSAqKnRlc3RlcyBjb20gdsOhcmlhcyBlcXVhw6fDtWVzKiogb25kZSBhanVzdGFtb3MgdW0gbW9kZWxvIFZBUiBjb20gYXMgdmFyacOhdmVpcyBhIHNlcmVtIHRlc3RhZGFzLiBFbSBhbWJvcyBvcyBjYXNvcyBwb2RlbW9zIGNvbnNpZGVyYXIgMiBvdSBtYWlzIHZhcmnDoXZlaXMuIAoKKiAqKlRFU1RFIERFIFVNQSBFUVVBw4fDg08qKgoKUGFyYSBlc3RlIGNhc28sIG8gdGVzdGUgY29tdW1lbnRlIHVzYWRvIMOpIG8gZGUgKipFbmdsZS1HcmFuZ2VyKiogcXVlIGNvbnNpc3RlIGVtIGFqdXN0YXIgdW1hIHJlbGHDp8OjbyBlbnRyZSBhcyB2YXJpw6F2ZWlzIGUgcmVhbGl6YXIgbyB0ZXN0ZSBkZSByYWl6IHVuaXTDoXJpYSBkZSBEaWNrZXktRnVsbGVyIEF1bWVudGFkbyAoQURGKSBub3MgcmVzw61kdW9zIGRhIGVxdWHDp8OjbyBhanVzdGFkYS4gUGFyYSBvIGNhc28gZGUgMiB2YXJpw6F2ZWlzICgkeSQgZSAkeCQsIHBvciBleGVtcGxvKSB0ZW1vcyBvIHNlZ3VpbnRlIHByb2Nlc3NvOgoKMS4gRXhlY3V0YXIgbyB0ZXN0ZSBkZSByYWl6IHVuaXTDoXJpYSBwYXJhICR5JCBlICR4JCBlIGNlcnRpZmljYXIgcXVlIGVsYXMgc8OjbyAkSSgxKSQuIFNlIGVsYXMgZm9yZW0gJEkoMCkkIG7Do28gaMOhIHJhesOjbyBwYXJhIHRlc3RhciBjb2ludGVncmHDp8Ojby4KMi4gRXN0aW1hciBhIHJlbGHDp8OjbyAkeV90ID0gXGFscGhhICsgXGJldGEgeF90ICsgYV90JCBlIG9idGVyICRcaGF0e2F9X3QkCjMuIFRlc3RhciBzZSBvcyByZXPDrWR1b3Mgc8OjbyBlc3RhY2lvbsOhcmlvcywgb3Ugc2VqYSwgc2Ugc8OjbyAkSSgwKSQgdXNhbmRvIG8gdGVzdGUgZGUgRGlja2V5LUZ1bGxlciBBdW1lbnRhZG9bXjNdIChhIGVxdWHDp8OjbyBkbyB0ZXN0ZSBuw6NvIGRldmUgdGVyIGludGVyY2VwdG8gbmVtIHRlbmTDqm5jaWEgcG9ycXVlIG9zIHJlc8OtZHVvcyBkZSBNUU8gb3NjaWxhbSBlbSB0b3JubyBkZSB6ZXJvKSwgY29uZm9ybWUgYWJhaXhvOgoKJCQKXGJlZ2lue2FsaWduZWR9CiYgXERlbHRhIFxoYXR7YX1fdCA9IFxwaGlcaGF0e2F9X3t0LTF9K1xzdW1fe2k9MX1ee3AtMX17XGxhbWJkYV97aX1cRGVsdGEgXGhhdHthfV97dC1pfX0rXHhpX3QgXFwKJiBcXAomIEhfMDogXHBoaT0wflxyaWdodGFycm93IFxoYXR7YX1fdH5cdGV4dHtuw6NvIGVzdGFjaW9uw6FyaW99flxyaWdodGFycm93IHl+XHRleHR7ZX1+eH5cdGV4dHtuw6NvIHPDo28gY29pbnRlZ3JhZGFzfSBcXAomIEhfMTogXHBoaTwwflxyaWdodGFycm93IFxoYXR7YX1fdH5cdGV4dHtlc3RhY2lvbsOhcmlvfX5ccmlnaHRhcnJvdyB5flx0ZXh0e2V9fnh+XHRleHR7c8OjbyBjb2ludGVncmFkYXN9IFxcClxlbmR7YWxpZ25lZH0KJCQKClteM106IEFxdWksIGNvbW8gZXhwbGljYWRvIG5vIHRleHRvLCB2ZXJpY2Ftb3Mgc2UgYSBzw6lyaWUgc2UgY29tcG9ydGEgY29tbyB1bSBwYXNzZWlvIGFsZWF0w7NyaW8gc2VtIGRyaWZ0IGUgdGVuZMOqbmNpYSwgb3Ugc2VqYSwgJHBfdD0gcF97dC0xfSArIGFfdCQuIFJlbGVtYnJhbmRvLCBhIGVxdWHDp8OjbyBkbyB0ZXN0ZSBERiDDqSAkcF90PVxwaGkgcF97dC0xfSArIGFfdCQgZSB0ZXN0YW1vcyBzZSAkSF8wOlxwaGkgPSAxJCAobsOjbyBlc3RhY2lvbsOhcmlhKSBvdSAkSF8xOiBcbGVmdHxccGhpXHJpZ2h0fDwxJCAoZXN0YWNpb27DoXJpYSkuIE91dHJhIGZvcm1hIGRlIGVzcGVjaWZpY2FyIGEgZXF1YcOnw6NvIGRvIHRlc3RlIMOpIGZhemVyICRwX3QtcF97dC0xfT1ccGhpIHBfe3QtMX0gLSBwX3t0LTF9ICsgYV90IFxyaWdodGFycm93ICBcRGVsdGEgcF90ID0gKFxwaGkgLTEpcF97dC0xfSthX3QkIG8gcXVlIHBlcm1pdGUgcmVlc2NyZXZlciBvIHRlc3RlIGNvbW8gJFxEZWx0YSBwX3QgPSBccGkgcF97dC0xfSArIGFfdCQgZSB0ZXN0YXIgc2UgJFxwaSA9IDAkIChuw6NvIGVzdGFjaW9uw6FyaWEsIHBvaXMgaW1wbGljYSBlbSAkXHBoaT0xJCkgZSAkXHBpPDAkIChlc3RhY2lvbsOhcmlhLCBwb2lzIGltcGxpY2EgZW0gJFxwaGk8MSQpLiBPYnNlcnZlIHF1ZSBlc3RhIMO6bHRpbWEgZm9ybXVsYcOnw6NvIMOpIGEgdXNhZGEgbm8gbm9zc28gdGVzdGUsIHNlbmRvIHF1ZSBhIGRpZmVyZW7Dp2Egw6kgcXVlIHVzYW1vcyBtYWlzIGRlZmFzYWdlbnMgZGEgdmFyacOhdmVsIGEgc2VyIHRlc3RhZGEgbmEgZXF1YcOnw6NvIGRvIHRlc3RlIChwb3IgaXNzbywgY2hhbWFtb3MgZGUgREYgYXVtZW50YWRvKS4KCiogKipURVNURSBDT00gVsOBUklBUyBFUVVBw4fDlUVTKioKClN1cG9uaGEgJGskIHZhcmnDoXZlaXMgJEkoMSkkIGUgcXVlIGEgdGVvcmlhIG91IHF1YWxxdWVyIGNvbmhlY2ltZW50byAqYSBwcmlvcmkqLCBzdWdlcmUgdW1hIHJlbGHDp8OjbyBkZSBlcXVpbMOtYnJpbyBkZSBsb25nbyBwcmF6byBlbnRyZSBlbGFzLiBFbSBnZXJhbCwgZXhpc3RlbSAkclxsZXEgay0xJCBjb21iaW5hw6fDtWVzIGxpbmVhcmVzIGluZGVwZW5kZW50ZXMgJEkoMCkkIHF1ZSBzw6NvIGNoYW1hZGFzIHJlbGHDp8O1ZXMgZGUgY29pbnRlZ3Jhw6fDo28gZSBvIHByb2JsZW1hIMOpIGRldGVybWluYXIgbyB2YWxvciBkZSAkciQuIE8gdGVzdGUgbWFpcyB1c2FkbyBwYXJhIGVzdGUgZmltIMOpIG8gKip0ZXN0ZSBkZSBKb2hhbnNlbioqIHF1ZSB0ZW0gY29tbyBiYXNlIG8gbW9kZWxvIFZBUi4gQ29uc2lkZXJlIHVtICRWQVIocCkkIGNvbSAkayQgdmFyacOhdmVpcwoKJCQKWV90ID0gQV8xWV97dC0xfStBXzJZX3t0LTJ9Ky4uLitBX3BZX3t0LXB9K1xlcHNpbG9uX3QKJCQKw4Agc2VtZWxoYW7Dp2EgZG8gdGVzdGUgZGUgRGlja2V5LUZ1bGxlciBBdW1lbnRhZG8gKEFERiksIG8gdGVzdGUgZGUgSm9oYW5zZW4gc2UgYmFzZWlhIGVtIHVtIG1vZGVsbyB0cmFuc2Zvcm1hZG8sIGRlbm9taW5hZG8gZGUgVkFSIHJlcGFyYW1ldHJpemFkbywgcXVlIHBlcm1pdGUgdW0gcHJvY2Vzc28gYXV0b3JyZWdyZXNzaXZvIGRlIG9yZGVtICRwJCBlIG7Do28gc29tZW50ZSBkZSBvcmRlbSAkMSQuIEEgb2J0ZW7Dp8OjbyBkZXN0ZSBtb2RlbG8gc2VndWUgcHJvY2VkaW1lbnRvIHNlbWVsaGFudGUgw6AgZGVyaXZhw6fDo28gZGEgZXF1YcOnw6NvIGRlIHRlc3RlIGRvIERpY2tleS1GdWxsZXIgQXVtZW50YWRvIChBREYpW140XS4gUGFydGluZG8tc2UgZG8gVkFSIGFudGVyaW9yIG9idMOpbS1zZSBvIFZBUiByZXBhcmFtZXRyaXphZG8gcmVwcmVzZW50YWRvIHBvcjogCgpbXjRdOiBQYXJhIG1lbGhvciBlbnRlbmRpbWVudG8sIHZhbW9zIGNvbnNpZGVyYXIgYSBkZXJpdmHDp8OjbyBhIHBhcnRpciBkbyBtb2RlbG8gVkFSKDEpIGNvbSAkayQgdmFyacOhdmVpcywgJFlfe3R9ID0gQV8xWV97dC0xfStcZXBzaWxvbl90JC4gTyBWQVIgcmVwYXJhbWV0cml6YWRvIMOpIGRhZG8gcG9yICRcRGVsdGEgWV90ID0gXFBpIFlfe3QtMX0rXGVwc2lsb25fdCQgZW0gcXllICRcUGkgPSAtKEkgLSBBXzEpJC4gRXN0YSBmb3JtYSDDqSBvYnRpZGEgc29tYW5kbyBlIHN1YnRyYWluZG8gZG8gbGFkbyBkaXJlaXRvIGRhIGVxdWHDp8OjbyBvIHZldG9yIGRlIHZhcmnDoXZlaXMgZGVmYXNhZGFzICRZX3t0LTF9JCwgaXN0byDDqSwgJFlfe3QtMX09IEFfMVlfe3QtMX0gKyBcZXBzaWxvbl90ICsgWV97dC0xfSAtIFlfe3QtMX0gXFJpZ2h0YXJyb3cgIFxEZWx0YSBZX3QgPSAoQV8xIC0gSSlZX3t0LTF9ICsgXGVwc2lsb25fdCBcUmlnaHRhcnJvdyBcRGVsdGEgWV90ID0gLShJLUFfMSlZX3t0LTF9ICsgXGVwc2lsb25fdCBcUmlnaHRhcnJvdyBcRGVsdGEgWV90ID0gXFBpIFlfe3QtMX0gKyBcZXBzaWxvbl90JCBlbSBxdWUgJFxQaSA9IC0oSS1BXzEpJCBxdWUgw6kgbyBWQVIgcmVwYXJhbWV0cml6YWRvIGRvIFZBUigxKS4KCiQkClxiZWdpbnthbGlnbmVkfQomIFxEZWx0YSBZX3QgPSBcUGkgWV97dC0xfSArIFxzdW1fe2k9MX1ee3AtMX17XEdhbW1hX2lcRGVsdGEgWV97dC1pfX0gK1xlcHNpbG9uX3QgXFwKXGVuZHthbGlnbmVkfQokJAplbSBxdWUgJFxHYW1tYV9pID0gLVxzdW1fe2o9aSsxfV57cH17QV9qfSQgZSAkXFBpPVxzdW1fe2k9MX1ee3B9e0FfaS1JfT1cbGVmdChJX2sgLVxzdW1fe2k9MX1ee3B9e0FfaX1ccmlnaHQpJC4gUGVyY2ViYSBhIHNlbWVsaGFuw6dhIGVudHJlIG8gdGVzdGUgZGUgSm9oYW5zZW4gZSBvIHRlc3RlIGRlIHJhaXogdW5pdMOhcmlhIERpY2tleS1GdWxsZXIgQXVtZW50YWRvIChBREYpLiBJbmljaWFsbWVudGUsIG8gdGVybW8gJFxQaSBZX3t0LTF9JCByZXByZXNlbnRhICRrJCBjb21iaW5hw6fDtWVzIGxpbmVhcmVzIGRhcyB2YXJpw6F2ZWlzLCBpc3RvIMOpOgoKJCQKXGJlZ2lue2FsaWduZWR9ClxQaSBZX3t0LTF9ICYgPSBcYmVnaW57Ym1hdHJpeH0KXHBpX3sxMX0gJiBccGlfezEyfSAmIC4uLiAmIFxwaV97MWt9IFxcClxwaV97MjF9ICYgXHBpX3syMn0gJiAuLi4gJiBccGlfezJrfSBcXApcdmRvdHMgICAmIFx2ZG90cyAgICYgICAgICYgXHZkb3RzIFxcClxwaV97azF9ICYgXHBpX3trMn0gJiAuLi4gJiBccGlfe2trfSBcXApcZW5ke2JtYXRyaXh9IApcYmVnaW57Ym1hdHJpeH0gIApZX3sxLHQtMX0gXFwKWV97Mix0LTF9IFxcClx2ZG90cyAgIFxcCllfe2ssdC0xfSBcXCBcZW5ke2JtYXRyaXh9IFxcCiYmJiBcXAomID0gXGxlZnRce1xiZWdpbnttYXRyaXh9ClxwaV97MTF9WV97MSx0LTF9K1xwaV97MTJ9WV97Mix0LTF9KyAuLi4gKyBccGlfezFrfVlfe2ssdC0xfSBcXCAKLi4uIFxcIAouLi4gXFwgClxwaV97azF9WV97MSx0LTF9K1xwaV97azJ9WV97Mix0LTF9KyAuLi4gKyBccGlfe2trfVlfe2ssdC0xfQpcZW5ke21hdHJpeH1ccmlnaHQuClxlbmR7YWxpZ25lZH0KJCQKCnF1ZSBzw6NvICRrJCBjb21iaW5hw6fDtWVzIGxpbmVhcmVzLiBQb3IgZGVmaW5pw6fDo28sIHRvZG9zIG9zIHRlcm1vcyBkYSBlcXVhw6fDo28gc8OjbyBlc3RhY2lvbsOhcmlvcywgZXhjZXRvICRcUGkgWV97dC0xfSQuIFBhcmEgbyBzaXN0ZW1hIHNlciBlc3RhY2lvbsOhcmlvLCAkXFBpIFlfe3QtMX0kIGRldmUgc2VyIGVzdGFjaW9uw6FyaW8gZSBwYXJhIGlzc28gYSBtYXRyaXogJFxQaSQgZGV2ZSBhcHJlc2VudGFyIGVzdHJ1cmFsIHRhbCBxdWUgYXMgY29tYmluYcOnw7VlcyBsaW5lYXJlcyBzZWphbSBlc3RhY2lvbsOhcmlhcy4gUGFyYSBhcyB2YXJpw6F2ZWlzIHNlcmVtIGNvaW50ZWdyYWRhcyBhcyBsaW5oYXMgZGUgJFxQaSQgbsOjbyBwb2RlbSBzZXIgdG9kYXMgbGluZWFybWVudGUgaW5kZXBlbmRlbnRlcy4gQXNzaW0sICRcUGkkIGRldmUgc2VyIHNpbmd1bGFyLCBvdSBzZWphICRkZXQoXFBpKT0wJCBlLCBlbnTDo28sIG8gcG9zdG8gb3UgcmFuayBkZSAkXFBpJCBkZXZlIHNlciBtZW5vciBxdWUgJGskIHBhcmEgcXVlIGFzIHZhcmnDoXZlaXMgc2VqYW0gY29pbnRlZ3JhZGFzLiAKClJlc3VtaW5kbywgdGVtb3MgJDMkIHBvc3NpYmlsaWRhZGVzIHBhcmEgbyB0ZXN0ZSBkZSBKb2hhbnNlbjoKCjEuICRQb3N0byhcUGkpPTAkW141XQogICAgKiBTaWduaWZpY2EgcXVlICRcUGk9MCQgcXVlIMOpIGEgYW5hbG9naWEgYW8gY2FzbyBvbmRlICRccGhpPTAkIG5vIHRlc3RlIEFERiBlIGFzc2ltLCB0ZW1vcyAkayQgcmHDrXplcyB1bml0w6FyaWFzCiAgICAqIE7Do28gaMOhIHJlbGHDp8OjbyBkZSBjb2ludGVncmHDp8OjbyBlbnRyZSBhcyB2YXJpw6F2ZWlzIGUgbsOjbyBleGlzdGUgbWVjYW5pc21vIGRlIGNvcnJlw6fDo28gZGUgZXJybwogICAgKiAqKkRlY2lzw6NvKio6IE8gbW9kZWxvIFZBUiBkZXZlIHNlciBlc3BlY2lmaWNhZG8gZW0gcHJpbWVpcmFzIGRpZmVyZW7Dp2FzCjIuICRQb3N0byhcUGkpPWskCiAgICAqIEFzIGxpbmhhcyBkZSAkXFBpJCBzw6NvIGxpbmVhcm1uZXRlIGluZGVwZW5kZW50ZXMgZSBvICRcbGVmdHxcUGkgXHJpZ2h0fCBcbmVxIDAkIAogICAgKiBFeGlzdGVtICRrJCBjb21iaW5hw6fDtWVzIGVzdGFjaW9uw6FyaWFzIGRhcyB2YXJpw6F2ZWlzLCBtYXMgY29pbnRlZ3Jhw6fDo28gbsOjbyDDqSBwZXJ0aW5lbnRlIGRhZG8gcXVlIGFzIHZhcmnDoXZlaXMgc8OjbyBlc3RhY2lvbsOhcmlhcwogICAgKiAqKkRlY2lzw6NvKio6IE8gbW9kZWxvIFZBUiBkZXZlIHNlciBlc3RpbWFkbyBlbSBuw612ZWwKMy4gJDBcbGVxIFBvc3RvKFxQaSk9ciBcbGVxIGskCiAgICAqIEV4aXN0ZW0gJHIkIGNvbWJpbmHDp8O1ZXMgbGluZWFyZXMgZXN0YWNpb27DoXJpYXMgZSBvICRcbGVmdHwgXFBpIFxyaWdodHwgPSAwJCBjb20gcGVsbyBtZW5vcyB1bWEgbGluaGEgb3UgY29sdW5hIG51bGEKICAgICogU2UgYXMgdmFyacOhdmVpcyBzw6NvICRJKDEpJCwgZXhpc3RlbSAkciQgcmVsYcOnw7VlcyBkZSBjb2ludGVncmHDp8OjbyBxdWUgZm9ybmVjZW0gJHIkIHZldG9yZXMgZGUgY29pbnRlZ3Jhw6fDo28gZSBvIHRlcm1vICRcUGkgWV97dC0xfSQgZm9ybmVjZW0gYXMgY29tYmluYcOnw7VlcyBsaW5lYXJlcyBlc3RhY2lvbsOhcmlhcwogICAgKiAqKkRlY2lzw6NvKio6IE8gbW9kZWxvIFZFQyBkZXZlIHNlciB1dGlsaXphZG8KClteNV06IFNlamEgdW1hIG1hdHJpeiBBIGRlIG9yZGVtICRtIFx0aW1lcyBuJC4gRGVmaW5lLXNlIGNvbW8gcG9zdG8gZGEgbWF0cml6IEEsICRQb3N0byhBKSQsIGNvbW8gc2VuZG8gYSBtYWlzIGFsdGEgb3JkZW0gZGUgZGV0ZXJtaW5hbnRlIGRpZmVyZW50ZSBkZSB6ZXJvIHF1ZSBwb2RlIHNlciBjYWxjdWxhZG8gYSBwYXJ0aXIgZGFzIHN1Ym1hdHJpemVzIGRlIEEuIEF0cmF2w6lzIGRvIHBvc3RvIGRhIG1hdGl6IHBvZGVtb3MgaWRlbnRpZmljYXIgc2UgdW1hIG1hdHJpeiBxdWFkcmFkYSDDqSBzaW5ndWxhciAoZGV0ZXJtaW5hbnRlIGlndWFsIGEgemVybykgb3UgbsOjbyBzaW5ndWxhciAoZGV0ZXJtaW5hbnRlIGRpZmVyZW50ZSBkZSB6ZXJvKSwgaXN0byDDqSwgc2UgQSDDqSB1bWEgbWF0cml6IHF1YWRyYWRhIGRlIG9yZGVtICRrJCwgZW50w6NvOiBpKSBBIMOpIHNpbmd1bGFyLCBzZSBlIHNvbWVudGUgc2UsICRQb3N0byhBKTxrJCwgaWkpIEEgbsOjbyDDqSBzaW5ndWxhciwgc2UgZSBzb21lbnRlIHNlLCAkUG9zdG8oQSk9ayQuIFNlIHVtYSBtYXRyaXogdGVtIHBvc3RvIG51bG8sIG91IHNlamEsICRQb3N0byhBKT0wJCBkaXplbW9zIHF1ZSBBIMOpIHVtYSBtYXRyaXogbnVsYSAoZGUgemVyb3MpLgoKKiAqKlRFU1RFIERPIFRSQcOHTyBFIFRFU1RFIERFIFJBSVogQ0FSQUNURVLDjVNUSUNBIE3DgVhJTUEqKgoKTyBwcm9jZWRpbWVudG8gZGUgSm9oYW5zZW4gY29uc2lzdGUgZW0gdGVzdGFyIG8gbsO6bWVybyBkZSByYcOtemVzIGNhcmFjdGVyw61zdGljYXMgZGlmZXJlbnRlcyBkZSB6ZXJvIG5hIG1hdHJpeiAkXFBpJCBxdWUgY29ycmVzcG9uZGUgYW8gbsO6bWVybyBkZSByZWxhw6fDtWVzIGUgdmV0b3JlcyBkZSBjb2ludGVncmHDp8OjbyBlbnRyZSBhcyB2YXJpw6F2ZWlzLiBTw6NvIHV0aWxpemFkb3MgZG9pcyB0ZXN0ZXM6IFRlc3RlIGRvIFRyYcOnbyBlIFRlc3RlIGRhIFJhaXogQ2FyYWN0ZXLDrXN0aWNhIE3DoXhpbWEuIAoKMS4gVGVzdGUgZG8gVHJhw6dvCgpFc3RlIHRlc3RlIGNvbnNpZGVyYSBjb21vIGhpcMOzdGVzZSBudWxhIGEgZXhpc3TDqm5jaWEgZGUgJHJfMCQgcmHDrXplcyBjYXJhY3RlcsOtc3RpY2FzIGRpZmVyZW50ZXMgZGUgemVybyAoJHJfMCQgdmV0b3JlcyBkZSBjb2ludGVncmHDp8OjbykgY29udHJhIGEgYWx0ZXJuYXRpdmEgZGUgJHI+cl8wJC4gRm9ybWFsbWVudGUsCgokJApcYmVnaW57YWxpZ25lZH0KJiBIXzA6IHI9cl8wIFxcCiYgSF8xOiByPnJfMCBcXApcZW5ke2FsaWduZWR9CiQkCkEgZXN0YXTDrXN0aWNhIGRlIHRlc3RlIMOpIGRhZGEgcG9yOgoKJCQKXGxhbWJkYV97dHJhw6dvfSA9IC1UIFxzdW1fe2k9cl8wKzF9XntrfXtcbG4oMS1caGF0e1xsYW1iZGF9X2kpfQokJAplbSBxdWUgVCDDqSBvIG7Dum1lcm8gZGUgb2JzZXJ2YcOnw7VlcyBlICRcaGF0e1xsYW1iZGF9X2kkIHPDo28gYXMgcmHDrXplcyBjYXJhY3RlcsOtc3RpY2FzIG9idGlkYXMgZGEgbWF0cml6ICRcUGkkIGVzdGltYWRhLgoKMi4gVGVzdGUgZGEgUmFpeiBDYXJhY3RlcsOtc3RpY2EgTcOheGltYQoKTyBzZWd1bmRvIHRlc3RlIHRlbSBjb21vIGhpcMOzdGVzZSBudWxhIGEgZXhpc3TDqm5jaWEgZGUgJHJfMCQgcmHDrXplcyBjYXJhY3RlcsOtc3RpY2FzIGRpZmVyZW50ZXMgZGUgemVybyAoJHJfMCQgdmV0b3JlcyBkZSBjb2ludGVncmHDp8OjbykgY29udHJhIGEgYWx0ZXJuYXRpdmEgZGUgJHI9cl8wICsxJC4gRm9ybWFsbWVudGUsIAoKJCQKXGJlZ2lue2FsaWduZWR9CiYgSF8wOiByPXJfMCBcXAomIEhfMTogcj1yXzAgKzFcXApcZW5ke2FsaWduZWR9CiQkCmUgYSBlc3RhdMOtc3RpY2EgZGUgdGVzdGUgw6k6CgokJApcbGFtYmRhX3ttYXh9ID0gLVQgXGxuKDEtXGhhdHtcbGFtYmRhfV97cl8wKzF9KQokJApPcyB0ZXN0ZXMgc8OjbyByZWFsaXphZG9zIGVtIHNlcXXDqm5jaWEsIGRlIGZvcm1hIGNyZXNjZW50ZSwgYXTDqSBxdWUgYSBoaXDDs3Rlc2UgbnVsYSBuw6NvIHNlamEgcmVqZWl0YWRhLiBQYXJhICRIXzA6IHI9MCQsIHJlamVpdGFyICRIXzAkIHNpZ25pZmljYSBxdWUgaMOhIHVtIG91IG1haXMgdmV0b3JlcyBkZSBjb2ludGVncmHDp8OjbywgcGVsbyB0ZXN0ZSBkbyB0cmHDp28sIGUgdW0gcGVsbyB0ZXN0ZSBkYSByYWl6IG3DoXhpbWEuIFBhcmEgJEhfMDogcj0xJCwgcmVqZWl0YXIgJEhfMCQgc2lnbmlmaWNhIHF1ZSBow6EgZG9pcyBvdSBtYWlzIHZldG9yZXMgZGUgY29pbnRlZ3Jhw6fDo28sIHBlbG8gdGVzdGUgZG8gdHJhw6dvLCBlIG1haXMgdW0gcGVsbyB0ZXN0ZSBkYSByYWl6IG3DoXhpbWEuIAoKIyMjIyMgKipNT0RFTE8gVkVUT1JJQUwgREUgQ09SUkXDh8ODTyBERSBFUlJPUyAoVkVDKSoqCgpTZSBvIHBvc3RvIGRlICRcUGk9cjxrJCwgcG9kZS1zZSBtb3N0cmFyIHF1ZSBleGlzdGVtIG1hdHJpemVzICRcYWxwaGFfe2tcdGltZXMgcn0kIGUgJFxiZXRhX3trXHRpbWVzIHJ9JCB0YWlzIHF1ZSAkXFBpX3trXHRpbWVzIGt9PVxhbHBoYV97a1x0aW1lcyByfVxiZXRhXnsnfV97clx0aW1lcyBrfSQgdGFpcyBxdWU6CgokJApcUGlfe2tcdGltZXMga30gPSBcYWxwaGFfe2sgXHRpbWVzIHJ9IFxiZXRhXnsnfV97ciBcdGltZXMga30KJCQKU3Vic3RpdHVpbmRvIG5hIGVxdWHDp8OjbyBkbyBWQVIgcmVwYXJhbWV0cml6YWRvLCBvYnTDqW0tc2U6CgokJApcYmVnaW57YWxpZ25lZH0KJiBcRGVsdGEgWV90ID0gIFxhbHBoYSBcYmV0YV57J30gWV97dC0xfSArIFxzdW1fe2k9MX1ee3AtMX17XEdhbW1hX2lcRGVsdGEgWV97dC1pfX0gK1xlcHNpbG9uX3QgXFwKXGVuZHthbGlnbmVkfQokJApxdWUgw6kgbyBtb2RlbG8gZGUgY29ycmXDp8OjbyBkZSBlcnJvIG5hIGZvcm1hIG11bHRpdmFyaWFkYSBkZW5vbWluYWRvIE1vZGVsbyBkZSBDb3JyZcOnw6NvIGRlIEVycm8gVmV0b3JpYWwgKFZFQykuIE8gVkVDIMOpIHVtIFZBUiAocmVwYXJhbWV0cml6YWRvKSBjb20gYXMgcmVzdHJpw6fDtWVzIGRlIGNvaW50ZWdyYcOnw6NvIGVudHJlIGFzIHZhcmnDoXZlaXMuIFRlbS1zZSBxdWU6CgoqICRcYmV0YV57J31ZX3t0LTF9JDogc8OjbyBhcyAkciQgcmVsYcOnw7VlcyBkZSBjb2ludGVncmHDp8OjbyBxdWUgZGVmaW5lbSBhIHRyYWpldMOzcmlhIGRlIGxvbmdvIHByYXpvIChlcXVpbMOtYnJpbykgZW50cmUgYXMgdmFyacOhdmVpcy4gCiogJFxhbHBoYSQ6IG1hdHJpeiBkZSBjb2VmaWNpZW50ZXMgZGUgYWp1c3RhbWVudG8gcGFyYSBvIGVxdWlsw61icmlvIGRlIGxvbmdvIHByYXpvCiogJFxHYW1tYV9pJDogbWF0cml6ZXMgZGUgY29lZmljaWVudGVzIHF1ZSBkZWZpbmVtIGEgZGluw6JtaWNhIGRlIGN1cnRvIHByYXpvCgpDb21vIGlsdXN0cmHDp8OjbywgY29uc2lkZXJlIHVtIGV4ZW1wbG8gY29tICRrPTMkIHZhcmnDoXZlaXMgZSBtYXRyaXogJFxQaSQgZGFkYSBwb3I6CgokJApcUGkgPSBcYmVnaW57Ym1hdHJpeH0KLVxmcmFjezF9ezJ9ICYgLVxmcmFjezV9ezE2fSAgJiAtXGZyYWN7MX17MTZ9IFxcIApcZnJhY3sxfXs4fSAmIC1cZnJhY3s0MX17NjR9ICAmIFxmcmFjezV9ezMyfSBcXCAKIFxmcmFjezF9ezR9ICYgLVxmcmFjezExfXszMn0gJiAtXGZyYWN7M317MzJ9ClxlbmR7Ym1hdHJpeH0KJCQKCmNvbSByYcOtemVzIGNhcmFjdGVyw61zdGljYXMgJFxsYW1iZGFfezF9PTAkLCAkXGxhbWJkYV97Mn09LTAsNDQxNiQgZSAkXGxhbWJkYV97M309LTAsNzkyOCQuIEFzc2ltLCBjb20gZHVhcyByYcOtemVzIGNhcmFjdGVyw61zdGljYXMgZGlmZXJlbnRlcyBkZSB6ZXJvIChwb3N0byBkZSAkXFBpPTIkKSBlIGV4aXN0ZW0gMiByZWxhw6fDtWVzIGRlIGNvaW50ZWdyYcOnw6NvLiBQb2RlLXNlIG1vc3RyYXIgcXVlCgokJApcUGkgPSBcYmVnaW57Ym1hdHJpeH0KLVxmcmFjezF9ezJ9ICYgLVxmcmFjezV9ezE2fSAgJiAtXGZyYWN7MX17MTZ9IFxcIApcZnJhY3sxfXs4fSAmIC1cZnJhY3s0MX17NjR9ICAmIFxmcmFjezV9ezMyfSBcXCAKIFxmcmFjezF9ezR9ICYgLVxmcmFjezExfXszMn0gJiAtXGZyYWN7M317MzJ9ClxlbmR7Ym1hdHJpeH0gPSBcYmVnaW57Ym1hdHJpeH0KLVxmcmFjezF9ezJ9ICYgXGZyYWN7MX17NH0gXFwgClxmcmFjezF9ezh9ICYgLVxmcmFjezV9ezh9IFxcIAogXGZyYWN7MX17NH0gJiBcZnJhY3szfXs4fSAKXGVuZHtibWF0cml4fSBcYmVnaW57Ym1hdHJpeH0KMSAmIC1cZnJhY3sxfXs4fSAgJiAwIFxcIAowICYgMSAgJiAtXGZyYWN7MX17NH0KXGVuZHtibWF0cml4fQokJApPIG1vZGVsbyBWRUMsIGRlc2NvbnNpZGVyYW5kbyBvcyB0ZXJtb3MgZGUgZGlmZXJlbsOnYSBkZWZhc2Fkb3MgKCR7XEdhbW1hX2lcRGVsdGEgWV97dC1pfX0kKSwgc2Vyw6E6CgokJApcYmVnaW57YWxpZ25lZH0KXGJlZ2lue2JtYXRyaXh9ClxEZWx0YSBZX3sxdH0gXFwgClxEZWx0YSBZX3sydH0gXFwgClxEZWx0YSBZX3szdH0KXGVuZHtibWF0cml4fSAmJiYgPSBcYmVnaW57Ym1hdHJpeH0KLVxmcmFjezF9ezJ9ICYgXGZyYWN7MX17NH0gXFwgClxmcmFjezF9ezh9ICYgLVxmcmFjezV9ezh9IFxcIAogXGZyYWN7MX17NH0gJiBcZnJhY3szfXs4fSAKXGVuZHtibWF0cml4fSBcYmVnaW57Ym1hdHJpeH0KMSAmIC1cZnJhY3sxfXs4fSAgJiAwIFxcIAowICYgMSAgJiAtXGZyYWN7MX17NH0KXGVuZHtibWF0cml4fSBcYmVnaW57Ym1hdHJpeH0KWV97MXQtMX0gXFwgCllfezJ0LTF9IFxcIApZX3szdC0xfQpcZW5ke2JtYXRyaXh9IFxcCiYmIFxcCiYmJiA9IFxiZWdpbntibWF0cml4fQotXGZyYWN7MX17Mn0gJiBcZnJhY3sxfXs0fSBcXCAKXGZyYWN7MX17OH0gJiAtXGZyYWN7NX17OH0gXFwgCiBcZnJhY3sxfXs0fSAmIFxmcmFjezN9ezh9IApcZW5ke2JtYXRyaXh9XGJlZ2lue2JtYXRyaXh9CllfezF0LTF9LVxmcmFjezF9ezh9WV97MnQtMX0rMFlfezN0LTF9XFwgCjBZX3sxdC0xfStZX3sydC0xfS1cZnJhY3sxfXs0fVlfezN0LTF9ClxlbmR7Ym1hdHJpeH0gXFwKJiYmIFxcCiYmJiA9IFxsZWZ0XHtcYmVnaW57bWF0cml4fQpcRGVsdGEgWV97MXR9ID0gLVxmcmFjezF9ezJ9IFxsZWZ0KFlfezF0LTF9LVxmcmFjezF9ezh9WV97MnQtMX1ccmlnaHQpICtcZnJhY3sxfXs0fSBcbGVmdChZX3sydC0xfS1cZnJhY3sxfXs0fVlfezN0LTF9XHJpZ2h0KSBcXCAKXERlbHRhIFlfezJ0fSA9IFxmcmFjezF9ezh9IFxsZWZ0KFlfezF0LTF9LVxmcmFjezF9ezh9WV97MnQtMX1ccmlnaHQpIC1cZnJhY3s1fXs4fSBcbGVmdChZX3sydC0xfS1cZnJhY3sxfXs0fVlfezN0LTF9XHJpZ2h0KSBcXCAKXERlbHRhIFlfezN0fSA9IFxmcmFjezF9ezR9IFxsZWZ0KFlfezF0LTF9LVxmcmFjezF9ezh9WV97MnQtMX1ccmlnaHQpICtcZnJhY3szfXs4fSBcbGVmdChZX3sydC0xfS1cZnJhY3sxfXs0fVlfezN0LTF9XHJpZ2h0KQpcZW5ke21hdHJpeH1ccmlnaHQuIFxcClxlbmR7YWxpZ25lZH0KJCQKCkFzIGV4cHJlc3PDtWVzICRZX3sxdC0xfS1cZnJhY3sxfXs4fVlfezJ0LTF9JCBlICRZX3sydC0xfS1cZnJhY3sxfXs0fVlfezN0LTF9JCBzw6NvIGFzIHJlbGHDp8O1ZXMgZGUgY29pbnRlZ3Jhw6fDo28gcXVlIGVudHJhbSBlbSBjYWRhIGVxdWHDp8Ojby4gQSBtYW5laXJhIG1haXMgc2ltcGxlcyBkZSBlc3RpbWFyIHVtIG1vZGVsbyBWRUMgw6kgbyBwcm9jZWRpbWVudG8gZW0gZG9pcyBlc3TDoWdpb3MuIFByaW1laXJvLCBlc3RpbWFtb3MgYSByZWxhw6fDo28gZGUgY29pbnRlZ3Jhw6fDo28gZSBjcmlhbW9zIGEgc8OpcmllIGRlIGRlZmFzYWdlbnMgZG9zIHJlc8OtZHVvcy4gQXDDs3MgaXNzbywgZXN0aW1hbW9zIGEgZXF1YcOnw6NvIGRvIG1vZGVsbyBwb3IgbWVpbyBkZSBNw61uaW1vcyBRdWFkcmFkb3MgT3JkaW7DoXJpb3MgKE1RTykuCgojIyMjIyAqKlBST0NFU1NPIERFIEVTVElNQcOHw4NPKioKCkFiYWl4bywgb3MgcGFzc29zIHBhcmEgZXN0aW1hw6fDo28gZSBhdmFsaWHDp8OjbyBkb3MgbW9kZWxvcyBWQVIsIFNWQVIgZSBWRUMuIFBlcmNlYmEgcXVlIGRlcGVuZGVuZG8gZGFzIGRlY2lzw7VlcyBuYXMgZXRhcGFzLCBzZWd1aW1vcyBjb20gYSBlc3RpbWHDp8OjbyBkbyBtb2RlbG8gVkVDLiAKCjEuIFZpc3VhbGl6YXIgb3MgZGFkb3MgZSBpZGVudGlmaWNhciBvYnNlcnZhw6fDtWVzIGZvcmEgZG8gcGFkcsOjbyAob3V0bGllcnMsIHNhem9uYWxpZGFkZSwgdGVuZMOqbmNpYSkKMi4gU2UgbmVjZXNzw6FyaW8sIHRyYW5zZm9ybWFyIG9zIGRhZG9zIHBhcmEgZXN0YWJpbGl6YXIgYSB2YXJpw6JuY2lhIChsb2dhcml0bW8gb3UgcmV0aXJhciBzYXpvbmFsaWRhZGUsIHBvciBleGVtcGxvKQozLiBBdmFsaWFyIGEgZnVuw6fDo28gZGUgY29ycmVsYcOnw6NvIGNydXphZGEgcGFyYSBjb25maXJtYXIgYSBwb3NzaWJpbGlkYWRlIGRlIG1vZGVsYWdlbSBtdWx0aXZhcmlhZGEuCjQuIFRlc3RhciBzZSBvcyBkYWRvcyBzw6NvIGVzdGFjaW9uw6FyaW9zIG91IGNvaW50ZWdyYWRvczoKICAgICogQ2FzbyBuw6NvIHRlbmhhIHJhaXogdW5pdMOhcmlhIChlc3RhY2lvbsOhcmlvcyksIGVzdGltYXIgVkFSIGNvbSBhcyBzw6lyaWVzIGVtIG7DrXZlbAogICAgKiBDYXNvIHRlbmhhIHJhaXogdW5pdMOhcmlhLCBtYXMgc2VtIGNvaW50ZWdyYcOnw6NvIMOpIHByZWNpc28gZGlmZXJlbmNpYXIgb3MgZGFkb3MgYXTDqSBzZSB0b3JuYXJlbSBlc3RhY2lvbsOhcmlvcyBlIGVzdGltYXIgVkFSIGNvbSBhcyBzw6lyaWVzIGRpZmVyZW5jaWFkYXMKICAgICogQ2FzbyB0ZW5oYSByYWl6IHVuaXTDoXJpYSwgbWFzIGNvbSBjb2ludGVncmHDp8OjbyBkZXZlbW9zIGVzdGltYXIgbyBWRUMgY29tIGFzIHPDqXJpZXMgZW0gbsOtdmVsCjUuIERlZmluaXIgYSBvcmRlbSAkcCQgcGFyYSBvcyBkYWRvcyBlbSBhbsOhbGlzZSBwb3IgbWVpbyBkZSBjcml0w6lyaW9zIGRlIGluZm9ybWHDp8OjbyAoZXNjb2xoZXIgbW9kZWxvIGNvbSBtZW5vciBBSUMsIHBvciBleGVtcGxvKQo2LiBFc3RpbWFyIG8gbW9kZWxvIGVzY29saGlkbyBubyBwYXNzbyA0CiAgICAqIFNlIFZBUiAoZm9ybWEgcmVkdXppZGEpOgogICAgICAgIC0gVmVyaWZpY2FyIHNpZ25pZmljw6JuY2lhIGVzdGF0w61zdGljYSBkbyBtb2RlbG8gZXN0aW1hZG8gZSwgY2FzbyBzZWphIG5lY2Vzc8OhcmlvLCBlbGltaW5hciBwYXLDom1ldHJvcyBuw6NvIHNpZ25pZmljYW50ZXMuCiAgICAgICAgLSBBbmFsaXNhciBhIGNhdXNhbGlkYWRlIGRlIEdyYW5nZXIgKHZhcmnDoXZlaXMgcXVlIG7Do28gZ3JhbmdlciBjYXVzYSBhcyBkZW1haXMgcG9kZW0gc2VyIHJldGlyYWRhcyBkbyBtb2RlbG8pCiAgICAqIFNlIFNWQVIgKGZvcm1hIGVzdHJ1dHVyYWwpOgogICAgICAgIC0gRGVmaW5pciBhIGVzdHJ1dHVyYSBwYXJhIGFzIG1hdHJpemVzIEEgZSBCIGUgbyBtb2RlbG8gZGUgaW50ZXJlc3NlIChBLCBCIG91IEFCKQogICAgICAgIC0gVmVyaWZpY2FyIHNpZ25pZmljw6JuY2lhIGVzdGF0w61zdGljYSBkbyBtb2RlbG8gZXN0aW1hZG8gZSwgY2FzbyBzZWphIG5lY2Vzc8OhcmlvLCBlbGltaW5hciBwYXLDom1ldHJvcyBuw6NvIHNpZ25pZmljYW50ZXMuCiAgICAgICAgLSBBbmFsaXNhciBhIGNhdXNhbGlkYWRlIGRlIEdyYW5nZXIgKHZhcmnDoXZlaXMgcXVlIG7Do28gZ3JhbmdlciBjYXVzYSBhcyBkZW1haXMgcG9kZW0gc2VyIHJldGlyYWRhcyBkbyBtb2RlbG8pCiAgICAqIFNlIFZFQyAoTW9kZWxvIFZldG9yaWFsIGRlIENvcnJlw6fDo28gZGUgRXJyb3MpCiAgICAgICAgLSBVc2FyIGEgcXVhbnRpZGFkZSBkZSB2ZXRvcmVzIGRlIGNvaW50ZWdyYcOnw6NvIG9idGlkb3Mgbm8gdGVzdGUgZGUgY29pbnRlZ3Jhw6fDo28gcGFyYSBlc3RpbWFyIG8gbW9kZWxvIFZFQwo4LiBFeGFtaW5hciBzZSBvcyByZXPDrWR1b3Mgc2UgY29tcG9ydGFtIGNvbW8gcnXDrWRvIGJyYW5jbyBlIGNvbmRpw6fDtWVzIGRlIGVzdGFjaW9uYXJpZWRhZGUgZG8gbW9kZWxvLiBDYXNvIGNvbnRyw6FyaW8sIHJldG9ybmFyIGFvIHBhc3NvIDMgb3UgNC4KICAgICogVmVyaWZpY2FyIGEgYXV0b2NvcnJlbGHDp8OjbyBzZXJpYWwgcG9yIG1laW8gZGEgRkFDIGUgRkFDUCBkb3MgcmVzw61kdW9zIGRlIGNhZGEgZXF1YcOnw6NvIGRvIG1vZGVsbyBlc3RpbWFkby4gTyBpZGVhbCDDqSBuw6NvIHRlciBkZWZhc2FnZW5zIHNpZ25pZmljYXRpdmFzLgogICAgKiBWZXJpZmljYXIgY29ycmVsYcOnw6NvIGNydXphZGEgcG9yIG1laW8gZGEgRkNDIGRvcyByZXPDrWR1b3MuCiAgICAqIEFuYWxpc2FyIGEgZXN0YWJpbGRpYWRlIGRvIG1vZGVsbyBlc3RpbWFkbyBhdHJhdsOpcyBkb3MgYXV0b3ZhbG9yZXMgYXNzb2NpYWRvcyBhbyBtZXNtby4KICAgICogVmVyaWZpY2FyIGEgZGlzdHJpYnVpw6fDo28gZGUgcHJvYmFiaWxpZGFkZSAoTm9ybWFsKSBwYXJhIG9zIHJlc8OtZHVvcyBkZSBjYWRhIGVxdWHDp8OjbyBkbyBtb2RlbG8uCiAgICAqIEFuYWxpc2FyIGhldGVyb2NlZGFzdGljaWRhZGUgY29uZGljaW9uYWwgKHJlc8OtZHVvcyBkZXZlbSBzZXIgaG9tb2NlZGFzdGljb3MsIG91IHNlamEsIHZhcmnDom5jaWEgY29uZGljaW9uYWwgY29uc3RhbnRlKQo5LiBVbWEgdmV6IHF1ZSBvcyByZXPDrWR1b3Mgc8OjbyBydcOtZG8gYnJhbmNvIGUgbyBtb2RlbG8gw6kgZXN0w6F2ZWw6CiAgICAqIEFuYWxpc2FyIGZ1bsOnw7VlcyBkZSByZXNwb3N0YSBhbyBpbXB1bHNvCiAgICAqIEFuYWxpc2FyIGEgaW1wb3J0w6JuY2lhIGRhcyB2YXJpw6F2ZWlzIHBhcmEgZXhwbGljYXIgYSB2YXJpw6JuY2lhIGRvIGVycm8gZGUgcHJldmlzw6NvIGRlIGNhZGEgdmFyacOhdmVsCiAgICAqIEZhemVyIHByZXZpc8O1ZXMgcGFyYXMgYXMgdmFyacOhdmVpcyBkbyBtb2RlbG8KCiMjIyMjICoqUkVGRVLDik5DSUFTKioKCg==