Acesse
aqui o storytelling dos processos de DataWrangling, DataMunging e
Análise exploratória.
1 - Com base na análise exploratória dos dados da Discorama e
nos objetivos estratégicos apresentados no contexto, quais são as
perguntas de negócio relevantes para esse projeto de analytics? Pergunta
de nível teórico. O seu projeto final não necessariamente precisa
responder todas ou as mesmas perguntas citadas nessa
entrega
- Questões de negócio focadas na relação entre gênero e frequência de
locação:
- Quantos generos foram categorizados
- Qual é a frequência total de locação de cada um
- Qual é o ticket médio de cada gêneto
- Com que percentual cada gênero contribui para o faturamento
- Qual é a taxa média de locação de cada gênero
- qual é o valor médio de multas arrecadas de cada gênero
- qual é o atraso médio de cada gênero
- Questão focada nas lojas:
- Qual é o faturamento
- qual é a taxa de ataso
- Quantidade de clientes
- tickeMédio
- Questões relacionadas à receita
- como se distribui em relação às lojas
- como se distribui em relação às categorias
- como é composta a receita
- como se distribui em relação à observação anterior
- Questões relacionadas aos distritos
- Quais são as Top 10 em faturamento
- Top 10 em número de clientes
- Preferências de gênero por distritos
- Questões relacionadas aos clientes (com base no RFN)
- Quais são os Top 10 clientes em pontuação
- De que distrito são
- Quais as preferências
- QUal é o valor médio gasto de cada um
- Qual é o prazo de retorno dos clientes
- Como se compara ao top 10
- Questões relacionadas ao tempo
- Evolução do faturamento da empresa
- Evolição do faturamento por gênero
- Por Loja
- Evolução da frequência do faturamento
- retornos dos faturamentos
- Decompor a série de frequências
- decompor a série de faturamento mensal
2 - Quais serão os indicadores ou visualizações utilizadas
para responder às perguntas de negócio citadas anteriormente? Pergunta
de nível teórico. O seu projeto final não necessariamente precisa trazer
os mesmos ou todos os indicadores citados nessa entrega
Depois de realizar agregações e sumarizações, de acordo com o que se
pretendia, foram usadas as seguintes visualizações:
- HISTROGRAMAS
- BOXPLOT
- COLUNAS
- ROSCA
- BARRAS
- scatterplot
- DensityPlot
- Matriz de correlação
3 - Apresentar pelo menos duas análises de negócio para cada
uma das categorias. Pergunta de nível teórico. O seu projeto final não
necessariamente precisa ter todas análises citadas nessa
entrega
Análise diagnóstica:
Comparar o desempenho da lojas, em faturamento
Comparar o desempenho das categorias, por frequência de
locação.
Análise descritiva:
Comportamento das vendas, nos dias do mês;
Preferências nos dias de maior movimento (visando aumentar a
disponibilidade dos produtos).
Análise preditiva:
Modelo de classificação para prever gênero de interesse;
Aplicar de previsão numérica, para prever quantos dias o cliente
fica sem alugar um filme, e, assim prever quanto um cliente esta prestar
a deixar a locadora.
Análise prescritiva.
- De acordo com o movimento diário, avaliar a melhor forma de alocar
recursos, visando diminiuir despesas
2 Realizar testes A/B para avaliar o impacto das mudanças de preços e
ajustar a estratégia conforme necessário.
4 - Apresentar as análises que foram necessárias para o
entendimento do negócio e que podem ser úteis no suporte para a tomada
de decisão.
Para o conhecimento dos dados e do negócio, foram aplicadas técnicas
de análise estatísticas e visualização univariada e bivarada.
Primeiramente, foi necessário relacionar as tabelas para se ter uma
visão panorâmica dos dados apresentados. Para conhecer o negócio,
realizou-se uma análise exploratória do conjunto de dados, ainda sem
nenhuma agregação. Neste ponto, a análise de correlação entre a variável
‘amount’ e as variáveis ‘atraso’ e ‘multa’, permitiram concluir, por
exemplo, que há uma correlação positiva forte, e, por isso, a intensão
da empresa de estudar medidas para reduzir o atraso na devolução da
locação, deve ser bem estudada.
Após, ralizando algumas agregações, inicialmente, relacionando-se a
frequência com algumas variáveis, pode-se concluir que, a categoria não
é uma variável relevante para a escolha do filme.
5 - Dashboard. Fazer com power BI
Respondendo às questões de neógcio.
1 - mostrar se existem possíveis correlações entre gêneros
dos filmes, os atores neles presentes e a frequência de
locação.
Após computar a frequência de locação de cada categoria, computou-se
a variabilidade destas frequências (utilizou-se o desvio padrão como
KPI). O que se concluir é que, existe variância na frequência de locação
entre os gêneros, mas, nenhum dos gêneros apresentou diferenças
estatisticamente significativas. Dada a média de locação por categoria,
todas as frequências encontram-se dentro de um intervalo ‘normal’ (2
desvios-padrão).

Contudo, outras questões foram percevidas, em relação ao gênero dos
filmes:
Total receita por categoria

Média de multa ($)

Média dias de ataso

2. A empresa também quer entender melhor seus dados para
aumentar o ticket médio das locações e reduzir o atraso médio na
devolução dos filmes, dois objetivos considerados estratégicos no curto
prazo
O ticket médio das locações é de R$4.22. Já, o ticket médio por cliente e de R$101.48
Primeiramente, faz-se necessário entender o impacto gerado pelos
atrasos.
Proporção da frequência de atrasados e pontuais:

Proporção na receita entre atrasadoe e pontuais:

Aparentemente, existe uma correlação positiva entre o atraso e a
receita

Visualizando

Portanto, à medida que o atraso aumenta, o valor pago pelo cliente
também aumenta.
Vamos recalcular os tickets, separando os atrasados dos pontuais.

O ticket médio das locações em que não houve atrasado é de R$2.95. Já, o ticket médio por cliente e de R$38.43
O ticket médio das locações é de R$5.71. Já, o ticket médio por cliente e de R$63.05
A proporção locações com atraso e pontualidade na devolução é de,
praticamente, 50%. Contudo, as multas gerados pelos atrasos ajudar a
melhorar os seguintes indicadores:
- Faturamento (a receita gerada pelas locações com atraso na devolução
são responsável por 62% do faturamento total);
- Ticket Médio (por cliente e por locação) gerado nas locações com
atraso, é de quase o dobro do valor gerado pelas locações devolvidas com
pontualidade.
Assim sendo, como base nos, dados, adotar medidas para contingenciar
o atraso na devolução não será financeiramente positiva para a
empresa.
Para aumentar o ticket, a empresa deve adotar outras estratégias,
como, sugerir uma locação dupla. O segundo título pode ser sugerido com
base em similaridades de gênero.
Modelo de recomendação baseado em categoria
LS0tDQp0aXRsZTogIkVEQSBlIE1hY2hpbmUgTGVhcm5pbmcgLSBkYWRvcyBkZSBsb2Nhw6fDo28gZGUgZmlsbWVzLiINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMjIyBbQWNlc3NlIGFxdWldKGh0dHBzOi8vY29sYWIucmVzZWFyY2guZ29vZ2xlLmNvbS9kcml2ZS8xQnBXQmM5TGR5VHBWdkVpSTdaemkxN2hVdGRzOEZxQkopIG8gc3Rvcnl0ZWxsaW5nIGRvcyBwcm9jZXNzb3MgZGUgRGF0YVdyYW5nbGluZywgRGF0YU11bmdpbmcgZSBBbsOhbGlzZSBleHBsb3JhdMOzcmlhLg0KDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0KDQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFKQ0Kb3B0aW9ucyh3YXJuID0gLTEpDQoNCmBgYA0KDQoNCioqMSAtIENvbSBiYXNlIG5hIGFuw6FsaXNlIGV4cGxvcmF0w7NyaWEgZG9zIGRhZG9zIGRhIERpc2NvcmFtYSBlIG5vcyBvYmpldGl2b3MgZXN0cmF0w6lnaWNvcyBhcHJlc2VudGFkb3Mgbm8gY29udGV4dG8sIHF1YWlzIHPDo28gYXMgcGVyZ3VudGFzIGRlIG5lZ8OzY2lvIHJlbGV2YW50ZXMgcGFyYSBlc3NlIHByb2pldG8gZGUgYW5hbHl0aWNzPyBQZXJndW50YSBkZSBuw612ZWwgdGXDs3JpY28uIE8gc2V1IHByb2pldG8gZmluYWwgbsOjbyBuZWNlc3NhcmlhbWVudGUgcHJlY2lzYSByZXNwb25kZXIgdG9kYXMgb3UgYXMgbWVzbWFzICBwZXJndW50YXMgY2l0YWRhcyBuZXNzYSBlbnRyZWdhKioNCg0KLSBRdWVzdMO1ZXMgZGUgbmVnw7NjaW8gZm9jYWRhcyBuYSByZWxhw6fDo28gZW50cmUgZ8OqbmVybyBlIGZyZXF1w6puY2lhIGRlIGxvY2HDp8OjbzoNCiAgKiBRdWFudG9zIGdlbmVyb3MgZm9yYW0gY2F0ZWdvcml6YWRvcw0KICAqIFF1YWwgw6kgYSBmcmVxdcOqbmNpYSB0b3RhbCBkZSBsb2Nhw6fDo28gZGUgY2FkYSB1bQ0KICAqIFF1YWwgw6kgbyB0aWNrZXQgbcOpZGlvIGRlIGNhZGEgZ8OqbmV0bw0KICAqIENvbSBxdWUgcGVyY2VudHVhbCBjYWRhIGfDqm5lcm8gY29udHJpYnVpIHBhcmEgbyBmYXR1cmFtZW50bw0KICAqIFF1YWwgw6kgYSB0YXhhIG3DqWRpYSBkZSBsb2Nhw6fDo28gZGUgY2FkYSBnw6puZXJvDQogICogcXVhbCDDqSBvIHZhbG9yIG3DqWRpbyBkZSBtdWx0YXMgYXJyZWNhZGFzIGRlIGNhZGEgZ8OqbmVybw0KICAqIHF1YWwgw6kgbyBhdHJhc28gbcOpZGlvIGRlIGNhZGEgZ8OqbmVybw0KDQotIFF1ZXN0w6NvIGZvY2FkYSBuYXMgbG9qYXM6DQogICogUXVhbCDDqSBvIGZhdHVyYW1lbnRvIA0KICAqIHF1YWwgw6kgYSB0YXhhIGRlIGF0YXNvDQogICogUXVhbnRpZGFkZSBkZSBjbGllbnRlcw0KICAqIHRpY2tlTcOpZGlvDQoNCg0KLSBRdWVzdMO1ZXMgcmVsYWNpb25hZGFzIMOgIHJlY2VpdGENCiAgKiBjb21vIHNlIGRpc3RyaWJ1aSBlbSByZWxhw6fDo28gw6BzIGxvamFzDQogICogY29tbyBzZSBkaXN0cmlidWkgZW0gcmVsYcOnw6NvIMOgcyBjYXRlZ29yaWFzDQogICogY29tbyDDqSBjb21wb3N0YSBhIHJlY2VpdGENCiAgKiBjb21vIHNlIGRpc3RyaWJ1aSBlbSByZWxhw6fDo28gw6Agb2JzZXJ2YcOnw6NvIGFudGVyaW9yDQoNCg0KLSBRdWVzdMO1ZXMgcmVsYWNpb25hZGFzIGFvcyBkaXN0cml0b3MNCiAgKiBRdWFpcyBzw6NvIGFzIFRvcCAxMCBlbSBmYXR1cmFtZW50bw0KICAqIFRvcCAxMCBlbSBuw7ptZXJvIGRlIGNsaWVudGVzDQogICogUHJlZmVyw6puY2lhcyBkZSBnw6puZXJvIHBvciBkaXN0cml0b3MNCg0KLSBRdWVzdMO1ZXMgcmVsYWNpb25hZGFzIGFvcyBjbGllbnRlcyAoY29tIGJhc2Ugbm8gUkZOKQ0KICAqIFF1YWlzIHPDo28gb3MgVG9wIDEwIGNsaWVudGVzIGVtIHBvbnR1YcOnw6NvDQogICogRGUgcXVlIGRpc3RyaXRvIHPDo28NCiAgKiBRdWFpcyBhcyBwcmVmZXLDqm5jaWFzDQogICogUVVhbCDDqSBvIHZhbG9yIG3DqWRpbyBnYXN0byBkZSBjYWRhIHVtDQogICogUXVhbCDDqSBvIHByYXpvIGRlIHJldG9ybm8gZG9zIGNsaWVudGVzDQogICogQ29tbyBzZSBjb21wYXJhIGFvIHRvcCAxMA0KDQotIFF1ZXN0w7VlcyByZWxhY2lvbmFkYXMgYW8gdGVtcG8NCiAgKiBFdm9sdcOnw6NvIGRvIGZhdHVyYW1lbnRvIGRhIGVtcHJlc2ENCiAgKiBFdm9sacOnw6NvIGRvIGZhdHVyYW1lbnRvIHBvciBnw6puZXJvDQogICogUG9yIExvamENCiAgKiBFdm9sdcOnw6NvIGRhIGZyZXF1w6puY2lhIGRvIGZhdHVyYW1lbnRvDQogICogcmV0b3Jub3MgZG9zIGZhdHVyYW1lbnRvcw0KICAqIERlY29tcG9yIGEgc8OpcmllIGRlIGZyZXF1w6puY2lhcw0KICAqIGRlY29tcG9yIGEgc8OpcmllIGRlIGZhdHVyYW1lbnRvIG1lbnNhbA0KDQoNCioqMiAtIFF1YWlzIHNlcsOjbyBvcyBpbmRpY2Fkb3JlcyBvdSB2aXN1YWxpemHDp8O1ZXMgdXRpbGl6YWRhcyBwYXJhIHJlc3BvbmRlciDDoHMgcGVyZ3VudGFzIGRlIG5lZ8OzY2lvIGNpdGFkYXMgYW50ZXJpb3JtZW50ZT8gUGVyZ3VudGEgZGUgbsOtdmVsIHRlw7NyaWNvLiBPIHNldSBwcm9qZXRvIGZpbmFsIG7Do28gbmVjZXNzYXJpYW1lbnRlIHByZWNpc2EgdHJhemVyIG9zIG1lc21vcyBvdSB0b2RvcyBvcyBpbmRpY2Fkb3JlcyBjaXRhZG9zIG5lc3NhIGVudHJlZ2EqKg0KDQoNCkRlcG9pcyBkZSByZWFsaXphciBhZ3JlZ2HDp8O1ZXMgZSBzdW1hcml6YcOnw7VlcywgZGUgYWNvcmRvIGNvbSBvIHF1ZSBzZSBwcmV0ZW5kaWEsIGZvcmFtIHVzYWRhcyBhcyBzZWd1aW50ZXMgdmlzdWFsaXphw6fDtWVzOg0KDQogICAgICAtIEhJU1RST0dSQU1BUw0KDQogICAgICAtIEJPWFBMT1QNCg0KICAgICAgLSBDT0xVTkFTDQoNCiAgICAgIC0gUk9TQ0ENCg0KICAgICAgLSBCQVJSQVMNCg0KICAgICAgLSBzY2F0dGVycGxvdA0KDQogICAgICAtIERlbnNpdHlQbG90DQoNCiAgICAgIC0gTWF0cml6IGRlIGNvcnJlbGHDp8Ojbw0KDQoNCg0KKiozIC0gQXByZXNlbnRhciBwZWxvIG1lbm9zIGR1YXMgYW7DoWxpc2VzIGRlIG5lZ8OzY2lvIHBhcmEgY2FkYSB1bWEgZGFzIGNhdGVnb3JpYXMuIFBlcmd1bnRhIGRlIG7DrXZlbCB0ZcOzcmljby4gTyBzZXUgcHJvamV0byBmaW5hbCBuw6NvIG5lY2Vzc2FyaWFtZW50ZSBwcmVjaXNhIHRlciB0b2RhcyBhbsOhbGlzZXMgY2l0YWRhcyBuZXNzYSBlbnRyZWdhKioNCg0KQW7DoWxpc2UgZGlhZ27Ds3N0aWNhOg0KDQoxLiBDb21wYXJhciBvIGRlc2VtcGVuaG8gZGEgbG9qYXMsIGVtIGZhdHVyYW1lbnRvDQoNCjIuIENvbXBhcmFyIG8gZGVzZW1wZW5obyBkYXMgY2F0ZWdvcmlhcywgcG9yIGZyZXF1w6puY2lhIGRlIGxvY2HDp8Ojby4NCg0KDQpBbsOhbGlzZSBkZXNjcml0aXZhOg0KDQoxLiBDb21wb3J0YW1lbnRvIGRhcyB2ZW5kYXMsIG5vcyBkaWFzIGRvIG3DqnM7DQoNCjIuIFByZWZlcsOqbmNpYXMgbm9zIGRpYXMgZGUgbWFpb3IgbW92aW1lbnRvICh2aXNhbmRvIGF1bWVudGFyIGEgZGlzcG9uaWJpbGlkYWRlIGRvcyBwcm9kdXRvcykuDQoNCg0KQW7DoWxpc2UgcHJlZGl0aXZhOg0KDQoxLiBNb2RlbG8gZGUgY2xhc3NpZmljYcOnw6NvIHBhcmEgcHJldmVyIGfDqm5lcm8gZGUgaW50ZXJlc3NlOw0KDQoyLiBBcGxpY2FyIGRlIHByZXZpc8OjbyBudW3DqXJpY2EsIHBhcmEgcHJldmVyIHF1YW50b3MgZGlhcyBvIGNsaWVudGUgZmljYSBzZW0gYWx1Z2FyIHVtIGZpbG1lLCBlLCBhc3NpbSBwcmV2ZXIgcXVhbnRvIHVtIGNsaWVudGUgZXN0YSBwcmVzdGFyIGEgZGVpeGFyIGEgbG9jYWRvcmEuDQoNCkFuw6FsaXNlIHByZXNjcml0aXZhLg0KDQoxLiBEZSBhY29yZG8gY29tIG8gbW92aW1lbnRvIGRpw6FyaW8sIGF2YWxpYXIgYSBtZWxob3IgZm9ybWEgZGUgYWxvY2FyIHJlY3Vyc29zLCB2aXNhbmRvIGRpbWluaXVpciBkZXNwZXNhcw0KDQoyIFJlYWxpemFyIHRlc3RlcyBBL0IgcGFyYSBhdmFsaWFyIG8gaW1wYWN0byBkYXMgbXVkYW7Dp2FzIGRlIHByZcOnb3MgZSBhanVzdGFyIGEgZXN0cmF0w6lnaWEgY29uZm9ybWUgbmVjZXNzw6FyaW8uDQoNCg0KKio0IC0gQXByZXNlbnRhciBhcyBhbsOhbGlzZXMgcXVlIGZvcmFtIG5lY2Vzc8OhcmlhcyBwYXJhIG8gZW50ZW5kaW1lbnRvIGRvIG5lZ8OzY2lvIGUgcXVlIHBvZGVtIHNlciDDunRlaXMgbm8gc3Vwb3J0ZSBwYXJhIGEgdG9tYWRhIGRlIGRlY2lzw6NvLioqDQoNCg0KUGFyYSBvIGNvbmhlY2ltZW50byBkb3MgZGFkb3MgZSBkbyBuZWfDs2NpbywgZm9yYW0gYXBsaWNhZGFzIHTDqWNuaWNhcyBkZSBhbsOhbGlzZSBlc3RhdMOtc3RpY2FzIGUgdmlzdWFsaXphw6fDo28gdW5pdmFyaWFkYSBlIGJpdmFyYWRhLg0KDQpQcmltZWlyYW1lbnRlLCBmb2kgbmVjZXNzw6FyaW8gcmVsYWNpb25hciBhcyB0YWJlbGFzIHBhcmEgc2UgdGVyIHVtYSB2aXPDo28gcGFub3LDom1pY2EgZG9zIGRhZG9zIGFwcmVzZW50YWRvcy4gUGFyYSBjb25oZWNlciBvIG5lZ8OzY2lvLCByZWFsaXpvdS1zZSB1bWEgYW7DoWxpc2UgZXhwbG9yYXTDs3JpYSBkbyBjb25qdW50byBkZSBkYWRvcywgYWluZGEgc2VtIG5lbmh1bWEgYWdyZWdhw6fDo28uIA0KTmVzdGUgcG9udG8sIGEgYW7DoWxpc2UgZGUgY29ycmVsYcOnw6NvIGVudHJlIGEgdmFyacOhdmVsICdhbW91bnQnIGUgYXMgdmFyacOhdmVpcyAnYXRyYXNvJyBlICdtdWx0YScsIHBlcm1pdGlyYW0gY29uY2x1aXIsIHBvciBleGVtcGxvLCBxdWUgaMOhIHVtYSBjb3JyZWxhw6fDo28gcG9zaXRpdmEgZm9ydGUsIGUsIHBvciBpc3NvLCBhIGludGVuc8OjbyBkYSBlbXByZXNhIGRlIGVzdHVkYXIgbWVkaWRhcyBwYXJhIHJlZHV6aXIgbyBhdHJhc28gbmEgZGV2b2x1w6fDo28gZGEgbG9jYcOnw6NvLCBkZXZlIHNlciBiZW0gZXN0dWRhZGEuDQoNCg0KQXDDs3MsIHJhbGl6YW5kbyBhbGd1bWFzIGFncmVnYcOnw7VlcywgaW5pY2lhbG1lbnRlLCByZWxhY2lvbmFuZG8tc2UgYSBmcmVxdcOqbmNpYSBjb20gYWxndW1hcyB2YXJpw6F2ZWlzLCBwb2RlLXNlIGNvbmNsdWlyIHF1ZSwgYSBjYXRlZ29yaWEgbsOjbyDDqSB1bWEgdmFyacOhdmVsIHJlbGV2YW50ZSBwYXJhIGEgZXNjb2xoYSBkbyBmaWxtZS4NCg0KDQoNCg0KKio1IC0gRGFzaGJvYXJkLioqDQpGYXplciBjb20gcG93ZXIgQkkNCg0KDQojICoqUmVzcG9uZGVuZG8gw6BzIHF1ZXN0w7VlcyBkZSBuZcOzZ2Npby4qKg0KDQoqKjEgLSBtb3N0cmFyIHNlIGV4aXN0ZW0gcG9zc8OtdmVpcyBjb3JyZWxhw6fDtWVzIGVudHJlIGfDqm5lcm9zIGRvcyBmaWxtZXMsIG9zIGF0b3JlcyBuZWxlcyBwcmVzZW50ZXMgZSBhIGZyZXF1w6puY2lhIGRlIGxvY2HDp8Ojby4qKg0KDQpBcMOzcyBjb21wdXRhciBhIGZyZXF1w6puY2lhIGRlIGxvY2HDp8OjbyBkZSBjYWRhIGNhdGVnb3JpYSwgY29tcHV0b3Utc2UgYSB2YXJpYWJpbGlkYWRlIGRlc3RhcyBmcmVxdcOqbmNpYXMgKHV0aWxpem91LXNlIG8gZGVzdmlvIHBhZHLDo28gY29tbyBLUEkpLiBPIHF1ZSBzZSBjb25jbHVpciDDqSBxdWUsIGV4aXN0ZSB2YXJpw6JuY2lhIG5hIGZyZXF1w6puY2lhIGRlIGxvY2HDp8OjbyBlbnRyZSBvcyBnw6puZXJvcywgbWFzLCBuZW5odW0gZG9zIGfDqm5lcm9zIGFwcmVzZW50b3UgZGlmZXJlbsOnYXMgZXN0YXRpc3RpY2FtZW50ZSBzaWduaWZpY2F0aXZhcy4gRGFkYSBhIG3DqWRpYSBkZSBsb2Nhw6fDo28gcG9yIGNhdGVnb3JpYSwgdG9kYXMgYXMgZnJlcXXDqm5jaWFzIGVuY29udHJhbS1zZSBkZW50cm8gZGUgdW0gaW50ZXJ2YWxvICdub3JtYWwnICgyIGRlc3Zpb3MtcGFkcsOjbykuDQoNCmBgYHtyfQ0KDQpkYWRvc0dlbmVybyA8LSBtZXJnZURhdGFDYXRlZ29yeSgpDQoNCmNvbG5hbWVzKGRhZG9zR2VuZXJvKSA8LSBjKCJjYXRlZ29yeV9pZCIsICJ0aWNrZXRHZW5lcm8iLCAidG90YWxBbW91bnQiLCAibkxvY2Fjb2VlcyIsICJtZWRpYVRheGEiLCAibWVkaWFNdWx0YSIsICJtZWRpYUF0cmFzbyIgKQ0KcGxvdENvbHNHZW5lcm8oIm5Mb2NhY29lZXMiKQ0KDQpgYGANCg0KDQoNCkNvbnR1ZG8sIG91dHJhcyBxdWVzdMO1ZXMgZm9yYW0gcGVyY2V2aWRhcywgZW0gcmVsYcOnw6NvIGFvIGfDqm5lcm8gZG9zIGZpbG1lczoNCg0KVG90YWwgcmVjZWl0YSBwb3IgY2F0ZWdvcmlhDQpgYGB7cn0NCnBsb3RDb2xzR2VuZXJvKCJ0b3RhbEFtb3VudCIpDQpgYGANCg0KTcOpZGlhIGRlIG11bHRhICgkKQ0KYGBge3J9DQpwbG90Q29sc0dlbmVybygibWVkaWFNdWx0YSIpDQpgYGANCg0KTcOpZGlhIGRpYXMgZGUgYXRhc28NCmBgYHtyfQ0KcGxvdENvbHNHZW5lcm8oIm1lZGlhQXRyYXNvIikNCmBgYA0KDQoNCg0KKioyLiBBIGVtcHJlc2EgdGFtYsOpbSBxdWVyIGVudGVuZGVyIG1lbGhvciBzZXVzIGRhZG9zIHBhcmEgYXVtZW50YXIgbyB0aWNrZXQgbcOpZGlvIGRhcyBsb2Nhw6fDtWVzIGUgcmVkdXppciBvIGF0cmFzbyBtw6lkaW8gbmEgZGV2b2x1w6fDo28gZG9zIGZpbG1lcywgZG9pcyBvYmpldGl2b3MgY29uc2lkZXJhZG9zIGVzdHJhdMOpZ2ljb3Mgbm8gY3VydG8gcHJhem8qKg0KDQoNCg0KYGBge3J9DQptZXNzYWdlKCJPIHRpY2tldCBtw6lkaW8gZGFzIGxvY2HDp8O1ZXMgw6kgZGUgUiQiLCByb3VuZChtZWFuKGRhZG9zJGFtb3VudCksIDIpLCIuIErDoSwgbyB0aWNrZXQgbcOpZGlvIHBvciBjbGllbnRlIGUgZGUgUiQiLCByb3VuZChtZWFuKHRvdGFsQ2xpZW50ZSR0b3RhbENsaWVudGUpLCAyKSkNCg0KYGBgDQpQcmltZWlyYW1lbnRlLCBmYXotc2UgbmVjZXNzw6FyaW8gZW50ZW5kZXIgbyBpbXBhY3RvIGdlcmFkbyBwZWxvcyBhdHJhc29zLg0KDQpQcm9wb3LDp8OjbyBkYSBmcmVxdcOqbmNpYSBkZSBhdHJhc2Fkb3MgZSBwb250dWFpczoNCmBgYHtyfQ0KcHJvcEF0cmFzYWRvcygpDQoNCmBgYA0KDQoNClByb3BvcsOnw6NvIG5hIHJlY2VpdGEgZW50cmUgYXRyYXNhZG9lIGUgcG9udHVhaXM6DQpgYGB7cn0NCnByb3BBbW91bnRBdHJhc2Fkb3MoKQ0KYGBgDQoNCg0KQXBhcmVudGVtZW50ZSwgZXhpc3RlIHVtYSBjb3JyZWxhw6fDo28gcG9zaXRpdmEgZW50cmUgbyBhdHJhc28gZSBhIHJlY2VpdGENCmBgYHtyfQ0KDQojI0NvcnJlbGHDp8Ojbw0KbGFiZWxzIDwtIGRhZG9zICU+JSBzZWxlY3Qod2hlcmUoaXMubnVtZXJpYykpICU+JSBjb2xuYW1lcygpDQoNCg0KI0NhbGN1bGFuZG8gY29ycmVsYcOnw7Vlcw0KY29ycyA8LSBjb3IoZGFkb3NbLCBsYWJlbHNdKQ0KDQojcGxvdGFuZG8NCnBsb3RfY29yKGNvcnMpDQoNCmBgYA0KDQpWaXN1YWxpemFuZG8NCmBgYHtyfQ0KDQpzY2F0dGVyUGxvdCgiYXRyYXNvIiwgImFtb3VudCIpDQoNCmBgYA0KUG9ydGFudG8sIMOgIG1lZGlkYSBxdWUgbyBhdHJhc28gYXVtZW50YSwgbyB2YWxvciBwYWdvIHBlbG8gY2xpZW50ZSB0YW1iw6ltIGF1bWVudGEuDQoNClZhbW9zIHJlY2FsY3VsYXIgb3MgdGlja2V0cywgc2VwYXJhbmRvIG9zIGF0cmFzYWRvcyBkb3MgcG9udHVhaXMuDQoNCg0KYGBge3J9DQpwbG90VGlja2V0cygpDQpgYGANCg0KDQpgYGB7cn0NCm1lc3NhZ2UoIk8gdGlja2V0IG3DqWRpbyBkYXMgbG9jYcOnw7VlcyBlbSBxdWUgbsOjbyBob3V2ZSBhdHJhc2FkbyDDqSBkZSBSJCIsIHJvdW5kKG1lYW4oZGFkb3NbZGFkb3MkYXRyYXNhZG8gPT0gRkFMU0UsICJhbW91bnQiXSksIDIpLCIuIErDoSwgbyB0aWNrZXQgbcOpZGlvIHBvciBjbGllbnRlIGUgZGUgUiQiLCByb3VuZChtZWFuKHRvdGFsQ2xpZW50ZVBvbnR1YWwkdG90YWxDbGllbnRlKSwgMikpDQoNCm1lc3NhZ2UoIk8gdGlja2V0IG3DqWRpbyBkYXMgbG9jYcOnw7VlcyDDqSBkZSBSJCIsIHJvdW5kKG1lYW4oZGFkb3NbZGFkb3MkYXRyYXNhZG8gPT0gVFJVRSwgImFtb3VudCJdKSwgMiksIi4gSsOhLCBvIHRpY2tldCBtw6lkaW8gcG9yIGNsaWVudGUgZSBkZSBSJCIsIHJvdW5kKG1lYW4odG90YWxDbGllbnRlQXRyYXNhZG8kdG90YWxDbGllbnRlKSwgMikpDQoNCg0KYGBgDQoNCkEgcHJvcG9yw6fDo28gbG9jYcOnw7VlcyBjb20gYXRyYXNvIGUgcG9udHVhbGlkYWRlIG5hIGRldm9sdcOnw6NvIMOpIGRlLCBwcmF0aWNhbWVudGUsIDUwJS4gQ29udHVkbywgYXMgbXVsdGFzIGdlcmFkb3MgcGVsb3MgYXRyYXNvcyBhanVkYXIgYSBtZWxob3JhciBvcyBzZWd1aW50ZXMgaW5kaWNhZG9yZXM6DQoNCi0gRmF0dXJhbWVudG8gKGEgcmVjZWl0YSBnZXJhZGEgcGVsYXMgbG9jYcOnw7VlcyBjb20gYXRyYXNvIG5hIGRldm9sdcOnw6NvIHPDo28gcmVzcG9uc8OhdmVsIHBvciA2MiUgZG8gZmF0dXJhbWVudG8gdG90YWwpOw0KLSBUaWNrZXQgTcOpZGlvIChwb3IgY2xpZW50ZSBlIHBvciBsb2Nhw6fDo28pIGdlcmFkbyBuYXMgbG9jYcOnw7VlcyBjb20gYXRyYXNvLCDDqSBkZSBxdWFzZSBvIGRvYnJvIGRvIHZhbG9yIGdlcmFkbyBwZWxhcyBsb2Nhw6fDtWVzIGRldm9sdmlkYXMgY29tIHBvbnR1YWxpZGFkZS4NCg0KQXNzaW0gc2VuZG8sIGNvbW8gYmFzZSBub3MsIGRhZG9zLCBhZG90YXIgbWVkaWRhcyBwYXJhIGNvbnRpbmdlbmNpYXIgbyBhdHJhc28gbmEgZGV2b2x1w6fDo28gbsOjbyBzZXLDoSBmaW5hbmNlaXJhbWVudGUgcG9zaXRpdmEgcGFyYSBhIGVtcHJlc2EuDQoNClBhcmEgYXVtZW50YXIgbyB0aWNrZXQsIGEgZW1wcmVzYSBkZXZlIGFkb3RhciBvdXRyYXMgZXN0cmF0w6lnaWFzLCBjb21vLCBzdWdlcmlyIHVtYSBsb2Nhw6fDo28gZHVwbGEuIE8gc2VndW5kbyB0w610dWxvIHBvZGUgc2VyIHN1Z2VyaWRvIGNvbSBiYXNlIGVtIHNpbWlsYXJpZGFkZXMgZGUgZ8OqbmVyby4NCg0KIyAqKk1vZGVsbyBkZSByZWNvbWVuZGHDp8OjbyBiYXNlYWRvIGVtIGNhdGVnb3JpYSoqDQoNCmBgYHtyfQ0KDQpyZWdyYXMgPSByZWFkLmNzdigifi9Fc3R1ZG9zL2Rlc2FmaW8vZGlzY29yYW1hL3JlZ3Jhcy5jc3YiKQ0KcmVncmFzID0gcmVncmFzWywgYygyLDMpXQ0KY29sbmFtZXMocmVncmFzKSA9IGMoIlF1ZW0gYWx1Z3VlbCIsICJQb2RlIGFsdWdhciIpDQpyZWdyYXMNCmBgYA0KDQoNCg0KDQoNCg==