Les comparto a continuación una serie de indicadores sociales, desagregados por sexo, calculados con bases públicas de la EPH (Encuesta Permanente de Hogares - INDEC). En esta ocasión corresponden al 2do trimestre de 2017.

1. Inserción laboral

La desigualdad en la inserción laboral entre varones y mujeres se manifiesta muy claramente al observar los principales indicadores de la composición del Mercado de Trabajo: las tasas de Actividad y Empleo son menores para las mujeres que para los varones (las diferencias superan los 20 puntos), mientras que las tasas de Desocupación y Subocupación son más elevadas para la población femenina.(*)

Población de 14 años y más. Principales indicadores de Mercado de Trabajo por sexo. Total de aglomerados urbanos. 2do trimestre 2017.

2. Empleo no registrado

A su vez, las ocupadas asalariadas estamos expuestas a una tasa de empleo no registrado (36.2 % de asalariadas a las cuales sus empleadores no inscriben en la seguridad social) mayor que la de nuestros compañeros varones (31.8%).(*)

Ocupadas/os asalariads/os. Tasas de empleo no registrado por sexo. Total de aglomerados urbanos. 2do trimestre 2017.

3. Cargos jerárquicos

Las ocupadas tenemos menos probabilidades de alcanzar cargos jerárquicos: mientras más del 8% de los ocupados varones tienen cargos de dirección o son jefes, menos del 5% de las mujeres ejercen trabajos de esas características.(*)

Ocupadas/os. Mujeres y Varones según Jerarquía de la ocupación (Porcentajes por columnas). Total de aglomerados urbanos. 2do trimestre 2017.

4. Realización de las tareas de la casa

La inserción de las mujeres en el mercado laboral ha generado una considerable extensión del tiempo de trabajo, puesto que mientras nosotras mantenemos las responsabilidades familiares, los varones no se han incorporado de la misma manera al trabajo no remunerado, sobrecargando a las mujeres y afectando su bienestar. A modo ilustrativo, se señala que: del total de Jefas de hogar mujeres que son ocupadas, un 85% realiza la mayor parte de las tareas de la casa, mientras que para el total de Jefes de hogar varones ocupados, esta tasa es del 27%.(*)

Jefas/es de Hogar ocupadas/os. Realizan la mayor parte de las tareas de la casa, en porcentaje. Total de aglomerados urbanos. 2do trimestre 2017.

5. Sobreocupación

En este contexto, es preocupante constatar que 1 de cada 5 trabajadoras está sobreocupada (trabaja más de 45 horas semanales), acentuando aún más la explotación que vivencian las mujeres.(*)

Ocupadas/os. Mujeres y Varones según Intensidad del trabajo (Porcentajes por columnas). Total de aglomerados urbanos. 2do trimestre 2017.

6. Brecha de ingresos por calificación del puesto de trabajo

Las mujeres trabajadoras ganamos en promedio un 27% menos que los varones (10.328 pesos vs. 14.190 pesos). Esta brecha se genera incluso a iguales niveles de calificación del puesto de trabajo. Por ejemplo, mientras los varones que trabajan en ocupaciones profesionales tienen un ingreso medio de 24.832 pesos, las mujeres ocupadas en ese mismo segmento percibimos un ingreso medio de 18.740 pesos (un 24,5% menos que los varones). En los puestos no calificados, los varones ganan 8.999 pesos en promedio, al tiempo que las mujeres ganamos alrededor de 5.793 pesos.(*)

Ocupadas/os. Media de ingresos de la ocupación principal y brecha de ingresos por sexo. Total de aglomerados urbanos. 2do trimestre 2017.

Ocupadas/os. Media de Ingresos de la Ocupación Principal por calificación del puesto de trabajo y sexo. Total de aglomerados urbanos. 2do trimestre 2017.

7. Brecha de ingresos por nivel educativo

Las mujeres estamos en promedio más formadas que los varones (hay una mayor proporción de mujeres con niveles educativos más altos). Sin embargo, a igual nivel educativo, los ingresos laborales de las mujeres trabajadoras son inferiores a los de los varones. Esta diferencia de ingresos oscila entre el 30.7% (para los que tienen el secundario completo), y el 48,9% (para los que no tienen instrucción). Las mujeres que poseen un nivel universitario completo cobran en promedio un 33.9% menos que los varones con este mismo nivel educativo.(*)

Mujeres y Varones según nivel educativo (Porcentaje por columnas). Total de aglomerados urbanos. 2do trimestre 2017.

Ocupadas/os. Media de Ingresos de la ocupación principal por nivel educativo y sexo. Total de aglomerados urbanos. 2do trimestre 2017.

8. Distribución del Ingreso

8.1

De la masa total de ingresos (incluyendo salarios, jubilaciones, etc.), los varones se llevan la mayor parte (57,3%).(**)

8.2

Mientras el promedio de los ingresos totales de las mujeres es de $12.366, en el caso de los varones asciende a 16.773 pesos. Es decir, los ingresos de los varones son en promedio un 35,6% más altos.(**)

8.3

La desigual distribución de los ingresos entre sexos se verifica también al observar que –considerando el ingreso total individual- las mujeres somos mayoría en los estratos de bajos ingresos, mientras en los deciles de los ingresos más altos predominan los varones.(**)

8.4

Del total de población sin ingresos, la mayoría somos mujeres (57%).(**)

9. Pobreza

Un 28% de las mujeres vive en hogares pobres.(*)

10. Hogares monoparentales y pobreza

Los hogares monoparentales con jefatura femenina más que cuadruplican la cantidad de hogares monoparentales con jefatura masculina. Es decir, hay más hogares con jefas de hogar mujeres, a cargo de hijos y sin cónyuge. Estos hogares tienen una incidencia mayor de la pobreza que el promedio de los hogares (31% vs. 20%, respectivamente) y que el promedio de los hogares monoparentales con jefatura masculina (31% vs. 27%).(*)

Hogares monoparentales según sexo del jefe de hogar. Total de aglomerados urbanos. 2do trimestre 2017.

Tasas de pobreza e indigencia en los hogares monoparentales. Total de aglomerados urbanos. 1er semestre 2017.

Notas

(*) Elaboración propia en base a las bases usuarias publicadas de EPH-INDEC. 2do trimestre 2017.
Los datos de pobreza se estimaron para el 1er semestre 2017, utilizando las bases usuarias de 1er y 2do trimestre 2017.
(**) Informe Técnico Evolución de la distribución del ingreso EPH-INDEC, 3er trimestre 2017. (consultar aquí)

LS0tCnRpdGxlOiAiIzhNIMK/UG9yIHF1w6kgcGFyYW1vcz8iCnN1YnRpdGxlOiAiSW5kaWNhZG9yZXMgc29jaWFsZXMgcG9yIHNleG8uIDJkbyB0cmltZXN0cmUgMjAxNy4iCmF1dGhvcjogIk5hdHN1bWkgUy4gU2hva2lkYSAoQE5hdHN1U2gpIgpkYXRlOiAiTWFyem8gMjAxOCIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgZGVwdGg6IDMKLS0tCgpMZXMgY29tcGFydG8gYSBjb250aW51YWNpw7NuIHVuYSBzZXJpZSBkZSBpbmRpY2Fkb3JlcyBzb2NpYWxlcywgZGVzYWdyZWdhZG9zIHBvciBzZXhvLCBjYWxjdWxhZG9zIGNvbiBiYXNlcyBww7pibGljYXMgZGUgbGEgRVBIIChFbmN1ZXN0YSBQZXJtYW5lbnRlIGRlIEhvZ2FyZXMgLSBJTkRFQykuIEVuIGVzdGEgb2Nhc2nDs24gY29ycmVzcG9uZGVuIGFsIDJkbyB0cmltZXN0cmUgZGUgMjAxNy4KCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiMgT3JnYW5pemFjacOzbiBkZSBsb3MgZGF0b3MKIyBMaW1waW8gbGEgbWVtb3JpYSB5IGNhcmdvIGxhcyBsaWJyZXLDrWFzLgoKcm0obGlzdCA9IGxzKCkpCgojTGlicmVyaWFzCmxpYnJhcnkoaGF2ZW4pCmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KHJlYWR4bCkKbGlicmFyeSh4bHN4KQpsaWJyYXJ5KHZpcmlkaXMpCmxpYnJhcnkoSG1pc2MpCmBgYAoKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiMgQWNsYXJvIGVsIHBlcsOtb2RvIGNvbiBlbCBxdWUgdmFtb3MgYSB0cmFiYWphci4KcGVyaW9kbyA8LSAiMlQxNyIKcGVyaW9kby50ZXh0byA8LSAiMmRvIFRyaW1lc3RyZSAyMDE3IgpwZXJpb2RvLnJlc3VsdGFkb3MgPC0gIjIwMTcuMlQiCmBgYAoKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiMgTGV2YW50byBsYXMgYmFzZXMgZGVsIDJkbyB0cmltZXN0cmUgMjAxNwoKaW5kaXYuMlQyMDE3IDwtIHJlYWQudGFibGUoJzIwMTdfdHJpbWVzdHJlXzJfdXN1YXJpYS91c3VfaW5kaXZpZHVhbF90MjE3LnR4dCcsIHNlcD0iOyIsIGRlYz0iLCIsIGhlYWRlciA9IFRSVUUsIGZpbGwgPSBUUlVFKQpob2cuMlQyMDE3IDwtIHJlYWQudGFibGUoJzIwMTdfdHJpbWVzdHJlXzJfdXN1YXJpYS91c3VfaG9nYXJfdDIxNy50eHQnLCBzZXA9IjsiLCBkZWM9IiwiLCBoZWFkZXIgPSBUUlVFLCBmaWxsID0gVFJVRSkKCiMgUGFyYSBwb2JyZXphIGFybWFtb3MgZWwgc2VtZXN0cmUsIGFzaSBxdWUgbGV2YW50byBsYXMgYmFzZXMgZGVsIDFlciB0cmltZXN0cmUgMjAxNyB0YW1iacOpbgoKaW5kaXYuMVQyMDE3IDwtIHJlYWQudGFibGUoJzIwMTdfdHJpbWVzdHJlXzFfdXN1YXJpYS91c3VfaW5kaXZpZHVhbF90MTE3LnR4dCcsIHNlcD0iOyIsIGRlYz0iLCIsIGhlYWRlciA9IFRSVUUsIGZpbGwgPSBUUlVFKQpob2cuMVQyMDE3IDwtIHJlYWQudGFibGUoJzIwMTdfdHJpbWVzdHJlXzFfdXN1YXJpYS91c3VfaG9nYXJfdDExNy50eHQnLCBzZXA9IjsiLCBkZWM9IiwiLCBoZWFkZXIgPSBUUlVFLCBmaWxsID0gVFJVRSkKCmBgYAoKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KIyBNb2RpZmljYWNpb25lcyBlbiBsYSBiYXNlCmluZGl2LjJUMjAxNyA8LSBpbmRpdi4yVDIwMTcgJT4lIAogIG11dGF0ZShTZXhvID0gYXMuY2hhcmFjdGVyKENIMDQpLAogICAgICAgICBTZXhvID0gY2FzZV93aGVuKFNleG89PSIxIiB+ICJWYXJvbmVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBTZXhvPT0iMiIgfiAiTXVqZXJlcyIpLAogICAgICAgICBDQUxJRklDQUNJT04gPSBzdWJzdHIoUFAwNERfQ09ELCA1LCA1KSwKICAgICAgICAgQ0FMSUZJQ0FDSU9OID0gY2FzZV93aGVuKENBTElGSUNBQ0lPTj09IjEiIH4gIjEuIFByb2Zlc2lvbmFsZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FMSUZJQ0FDSU9OPT0iMiIgfiAiMi4gVMOpY25pY29zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENBTElGSUNBQ0lPTj09IjMiIH4gIjMuIE9wZXJhdGl2b3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FMSUZJQ0FDSU9OPT0iNCIgfiAiNC4gTm8gQ2FsaWZpY2Fkb3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+ICIwIiksCiAgICAgICAgIEpFUkFSUVVJQSA9IHN1YnN0cihQUDA0RF9DT0QsIDMsIDMpLAogICAgICAgICBKRVJBUlFVSUEgPSBjYXNlX3doZW4oSkVSQVJRVUlBPT0iMCIgfiAiMC4gRGlyZWNjacOzbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKRVJBUlFVSUE9PSIxIiB+ICIxLiBDdWVudGFwcm9waWEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSkVSQVJRVUlBPT0iMiIgfiAiMi4gSmVmZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSkVSQVJRVUlBPT0iMyIgfiAiMy4gVHJhYmFqYWRvcmVzIEFzYWxhcmlhZG9zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiAiMCIpLAogICAgICAgICBOSVZFTF9FRFVDQVRJVk8gPSBjYXNlX3doZW4oTklWRUxfRUQ9PTEgfiAiMS4gUHJpbWFyaWEgSW5jb21wbGV0YSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSVZFTF9FRD09MiB+ICIyLiBQcmltYXJpYSBDb21wbGV0YSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSVZFTF9FRD09MyB+ICIzLiBTZWN1bmRhcmlhIEluY29tcGxldGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTklWRUxfRUQ9PTQgfiAiNC4gU2VjdW5kYXJpYSBDb21wbGV0YSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSVZFTF9FRD09NSB+ICI1LiBTdXBlcmlvciBVbml2ZXJzaXRhcmlhIEluY29tcGxldGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTklWRUxfRUQ9PTYgfiAiNi4gU3VwZXJpb3IgVW5pdmVyc2l0YXJpYSBDb21wbGV0YSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSVZFTF9FRD09NyB+ICJTaW4gSW5zdHJ1Y2Npw7NuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JVkVMX0VEPT05IH4gIk5TL05SIikpCmBgYAoKIyAxLiBJbnNlcmNpw7NuIGxhYm9yYWwKTGEgZGVzaWd1YWxkYWQgZW4gbGEgaW5zZXJjacOzbiBsYWJvcmFsIGVudHJlIHZhcm9uZXMgeSBtdWplcmVzIHNlIG1hbmlmaWVzdGEgbXV5IGNsYXJhbWVudGUgYWwgb2JzZXJ2YXIgbG9zIHByaW5jaXBhbGVzIGluZGljYWRvcmVzIGRlIGxhIGNvbXBvc2ljacOzbiBkZWwgTWVyY2FkbyBkZSBUcmFiYWpvOiBsYXMgdGFzYXMgZGUgQWN0aXZpZGFkIHkgRW1wbGVvIHNvbiBtZW5vcmVzIHBhcmEgbGFzIG11amVyZXMgcXVlIHBhcmEgbG9zIHZhcm9uZXMgKGxhcyBkaWZlcmVuY2lhcyBzdXBlcmFuIGxvcyAyMCBwdW50b3MpLCBtaWVudHJhcyBxdWUgbGFzIHRhc2FzIGRlIERlc29jdXBhY2nDs24geSBTdWJvY3VwYWNpw7NuIHNvbiBtw6FzIGVsZXZhZGFzIHBhcmEgbGEgcG9ibGFjacOzbiBmZW1lbmluYS4oKikKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CnRhYmxhMSA8LSBpbmRpdi4yVDIwMTcgJT4lIAogIGZpbHRlcihDSDA2Pj0xNCkgJT4lIAogIGdyb3VwX2J5KFNleG8pICU+JSAKICBzdW1tYXJpc2UoUG9ibGFjaW9uICAgICAgICAgPSBzdW0oUE9OREVSQSksCiAgICAgICAgICAgIE9jdXBhZG9zICAgICAgICAgID0gc3VtKFBPTkRFUkFbRVNUQURPID09IDFdKSwKICAgICAgICAgICAgRGVzb2N1cGFkb3MgICAgICAgPSBzdW0oUE9OREVSQVtFU1RBRE8gPT0gMl0pLAogICAgICAgICAgICBQRUEgICAgICAgICAgICAgICA9IE9jdXBhZG9zICsgRGVzb2N1cGFkb3MsCiAgICAgICAgICAgIE9jdXBhZG9zX2RlbWFuZCAgID0gc3VtKFBPTkRFUkFbRVNUQURPID09IDEgJiBQUDAzSiA9PTFdKSwKICAgICAgICAgICAgU3Vib2NfZGVtYW5kYW50ZSAgPSBzdW0oUE9OREVSQVtFU1RBRE8gPT0gMSAmIElOVEVOU0kgPT0xICYgUFAwM0o9PTFdKSwKICAgICAgICAgICAgU3Vib2Nfbm9fZGVtYW5kICAgPSBzdW0oUE9OREVSQVtFU1RBRE8gPT0gMSAmIElOVEVOU0kgPT0xICYgUFAwM0ogJWluJSBjKDIsOSldKSwKICAgICAgICAgICAgU3Vib2N1cGFkb3MgICAgICAgPSBTdWJvY19kZW1hbmRhbnRlICsgU3Vib2Nfbm9fZGVtYW5kKSAlPiUgCiAgZ2F0aGVyKEluZGljYWRvcmVzLCBWYWxvciwgMjo5KSAlPiUgCiAgc3ByZWFkKC4sIFNleG8sIFZhbG9yKQpgYGAKCl9Qb2JsYWNpw7NuIGRlIDE0IGHDsW9zIHkgbcOhcy4gUHJpbmNpcGFsZXMgaW5kaWNhZG9yZXMgZGUgTWVyY2FkbyBkZSBUcmFiYWpvIHBvciBzZXhvLiBUb3RhbCBkZSBhZ2xvbWVyYWRvcyB1cmJhbm9zLiAyZG8gdHJpbWVzdHJlIDIwMTcuXwpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQp0YWJsYTIgPC0gaW5kaXYuMlQyMDE3ICU+JSAKICBmaWx0ZXIoQ0gwNj49MTQpICU+JSAKICBncm91cF9ieShTZXhvKSAlPiUgCiAgc3VtbWFyaXNlKFBvYmxhY2lvbiAgICAgICAgID0gc3VtKFBPTkRFUkEpLAogICAgICAgICAgICBPY3VwYWRvcyAgICAgICAgICA9IHN1bShQT05ERVJBW0VTVEFETyA9PSAxXSksCiAgICAgICAgICAgIERlc29jdXBhZG9zICAgICAgID0gc3VtKFBPTkRFUkFbRVNUQURPID09IDJdKSwKICAgICAgICAgICAgUEVBICAgICAgICAgICAgICAgPSBPY3VwYWRvcyArIERlc29jdXBhZG9zLAogICAgICAgICAgICBPY3VwYWRvc19kZW1hbmQgICA9IHN1bShQT05ERVJBW0VTVEFETyA9PSAxICYgUFAwM0ogPT0xXSksCiAgICAgICAgICAgIFN1Ym9jX2RlbWFuZGFudGUgID0gc3VtKFBPTkRFUkFbRVNUQURPID09IDEgJiBJTlRFTlNJID09MSAmIFBQMDNKPT0xXSksCiAgICAgICAgICAgIFN1Ym9jX25vX2RlbWFuZCAgID0gc3VtKFBPTkRFUkFbRVNUQURPID09IDEgJiBJTlRFTlNJID09MSAmIFBQMDNKICVpbiUgYygyLDkpXSksCiAgICAgICAgICAgIFN1Ym9jdXBhZG9zICAgICAgID0gU3Vib2NfZGVtYW5kYW50ZSArIFN1Ym9jX25vX2RlbWFuZCwKICAgICAgICAgICAgJ1Rhc2EgQWN0aXZpZGFkJyAgICAgICAgICAgICAgICAgID0gcm91bmQoUEVBL1BvYmxhY2lvbioxMDAsIDEpLAogICAgICAgICAgICAnVGFzYSBFbXBsZW8nICAgICAgICAgICAgICAgICAgICAgPSByb3VuZChPY3VwYWRvcy9Qb2JsYWNpb24qMTAwLCAxKSwKICAgICAgICAgICAgJ1Rhc2EgRGVzb2N1cGFjaW9uJyAgICAgICAgICAgICAgID0gcm91bmQoRGVzb2N1cGFkb3MvUEVBKjEwMCwgMSksCiAgICAgICAgICAgICdUYXNhIE9jdXBhZG9zIERlbWFuZGFudGVzJyAgICAgICA9IHJvdW5kKE9jdXBhZG9zX2RlbWFuZC9QRUEqMTAwLCAxKSwKICAgICAgICAgICAgJ1Rhc2EgU3Vib2N1cGFjacOzbicgICAgICAgICAgICAgICA9IHJvdW5kKFN1Ym9jdXBhZG9zL1BFQSoxMDAsIDEpLAogICAgICAgICAgICAnVGFzYSBTdWJvY3VwYWNpw7NuIGRlbWFuZGFudGUnICAgID0gcm91bmQoU3Vib2NfZGVtYW5kYW50ZS9QRUEqMTAwLCAxKSwKICAgICAgICAgICAgJ1Rhc2EgU3Vib2N1cGFjacOzbiBubyBkZW1hbmRhbnRlJyA9IHJvdW5kKFN1Ym9jX25vX2RlbWFuZC9QRUEqMTAwLCAxKSkgJT4lIAogIHNlbGVjdCgtYygyOjkpKSAlPiUgCiAgZ2F0aGVyKEluZGljYWRvcmVzLCBWYWxvciwgMjo4KSAlPiUgCiAgc3ByZWFkKC4sIFNleG8sIFZhbG9yKQoKdGFibGEyW2MoMSwgMywgMiwgNDo3KSxdCmBgYAoKIyAyLiBFbXBsZW8gbm8gcmVnaXN0cmFkbwpBIHN1IHZleiwgbGFzIG9jdXBhZGFzIGFzYWxhcmlhZGFzIGVzdGFtb3MgZXhwdWVzdGFzIGEgdW5hIHRhc2EgZGUgZW1wbGVvIG5vIHJlZ2lzdHJhZG8gKDM2LjIgJSBkZSBhc2FsYXJpYWRhcyBhIGxhcyBjdWFsZXMgc3VzIGVtcGxlYWRvcmVzIG5vIGluc2NyaWJlbiBlbiBsYSBzZWd1cmlkYWQgc29jaWFsKSBtYXlvciBxdWUgbGEgZGUgbnVlc3Ryb3MgY29tcGHDsWVyb3MgdmFyb25lcyAoMzEuOCUpLigqKQoKX09jdXBhZGFzL29zIGFzYWxhcmlhZHMvb3MuIFRhc2FzIGRlIGVtcGxlbyBubyByZWdpc3RyYWRvIHBvciBzZXhvLiBUb3RhbCBkZSBhZ2xvbWVyYWRvcyB1cmJhbm9zLiAyZG8gdHJpbWVzdHJlIDIwMTcuXwpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQp0YWJsYTMgPC0gaW5kaXYuMlQyMDE3ICU+JSAKICBmaWx0ZXIoRVNUQURPPT0xLAogICAgICAgICBDQVRfT0NVUD09MykgJT4lIAogIGdyb3VwX2J5KFNleG8pICU+JSAKICBzdW1tYXJpc2UoIlRhc2EgZGUgbm8gUmVnaXN0cmFkb3MiID0gcm91bmQoc3VtKFBPTkRFUkFbUFAwN0g9PTJdKS9zdW0oUE9OREVSQSkqMTAwLCAyKSkKCnRhYmxhMwpgYGAKCiMgMy4gQ2FyZ29zIGplcsOhcnF1aWNvcwpMYXMgb2N1cGFkYXMgdGVuZW1vcyBtZW5vcyBwcm9iYWJpbGlkYWRlcyBkZSBhbGNhbnphciBjYXJnb3MgamVyw6FycXVpY29zOiBtaWVudHJhcyBtw6FzIGRlbCA4JSBkZSBsb3Mgb2N1cGFkb3MgdmFyb25lcyB0aWVuZW4gY2FyZ29zIGRlIGRpcmVjY2nDs24gbyBzb24gamVmZXMsIG1lbm9zIGRlbCA1JSBkZSBsYXMgbXVqZXJlcyBlamVyY2VuIHRyYWJham9zIGRlIGVzYXMgY2FyYWN0ZXLDrXN0aWNhcy4oKikKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KdGFibGE0IDwtIGluZGl2LjJUMjAxNyAlPiUgCiAgZmlsdGVyKEpFUkFSUVVJQSAhPSAiMCIsCiAgICAgICAgIEVTVEFETyA9PSAxKSAlPiUKICBncm91cF9ieShTZXhvLCBKRVJBUlFVSUEpICU+JSAKICBzdW1tYXJpc2UoRnJlY3VlbmNpYSA9IHN1bShQT05ERVJBKSkgJT4lIAogIHNwcmVhZCguLCBTZXhvLCBGcmVjdWVuY2lhKQoKdGFibGE0CmBgYAoKX09jdXBhZGFzL29zLiBNdWplcmVzIHkgVmFyb25lcyBzZWfDum4gSmVyYXJxdcOtYSBkZSBsYSBvY3VwYWNpw7NuIChQb3JjZW50YWplcyBwb3IgY29sdW1uYXMpLiBUb3RhbCBkZSBhZ2xvbWVyYWRvcyB1cmJhbm9zLiAyZG8gdHJpbWVzdHJlIDIwMTcuXwpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpUb3RhbC5NdWplcmVzIDwtIHN1bSh0YWJsYTQkTXVqZXJlcykKVG90YWwuVmFyb25lcyA8LSBzdW0odGFibGE0JFZhcm9uZXMpCgp0YWJsYTUgPC0gdGFibGE0ICU+JSAKICBtdXRhdGUoTXVqZXJlcyA9IHJvdW5kKE11amVyZXMvVG90YWwuTXVqZXJlcyoxMDAsIDIpLAogICAgICAgICBWYXJvbmVzID0gcm91bmQoVmFyb25lcy9Ub3RhbC5WYXJvbmVzKjEwMCwgMikpCgp0YWJsYTUgIApgYGAKCiMgNC4gUmVhbGl6YWNpw7NuIGRlIGxhcyB0YXJlYXMgZGUgbGEgY2FzYQpMYSBpbnNlcmNpw7NuIGRlIGxhcyBtdWplcmVzIGVuIGVsIG1lcmNhZG8gbGFib3JhbCBoYSBnZW5lcmFkbyB1bmEgY29uc2lkZXJhYmxlIGV4dGVuc2nDs24gZGVsIHRpZW1wbyBkZSB0cmFiYWpvLCBwdWVzdG8gcXVlIG1pZW50cmFzIG5vc290cmFzIG1hbnRlbmVtb3MgbGFzIHJlc3BvbnNhYmlsaWRhZGVzIGZhbWlsaWFyZXMsIGxvcyB2YXJvbmVzIG5vIHNlIGhhbiBpbmNvcnBvcmFkbyBkZSBsYSBtaXNtYSBtYW5lcmEgYWwgdHJhYmFqbyBubyByZW11bmVyYWRvLCBzb2JyZWNhcmdhbmRvIGEgbGFzIG11amVyZXMgeSBhZmVjdGFuZG8gc3UgYmllbmVzdGFyLiBBIG1vZG8gaWx1c3RyYXRpdm8sIHNlIHNlw7FhbGEgcXVlOiBkZWwgdG90YWwgZGUgSmVmYXMgZGUgaG9nYXIgbXVqZXJlcyBxdWUgc29uIG9jdXBhZGFzLCB1biA4NSUgcmVhbGl6YSBsYSBtYXlvciBwYXJ0ZSBkZSBsYXMgdGFyZWFzIGRlIGxhIGNhc2EsIG1pZW50cmFzIHF1ZSBwYXJhIGVsIHRvdGFsIGRlIEplZmVzIGRlIGhvZ2FyIHZhcm9uZXMgb2N1cGFkb3MsIGVzdGEgdGFzYSBlcyBkZWwgMjclLigqKQoKX0plZmFzL2VzIGRlIEhvZ2FyIG9jdXBhZGFzL29zLiBSZWFsaXphbiBsYSBtYXlvciBwYXJ0ZSBkZSBsYXMgdGFyZWFzIGRlIGxhIGNhc2EsIGVuIHBvcmNlbnRhamUuIFRvdGFsIGRlIGFnbG9tZXJhZG9zIHVyYmFub3MuIDJkbyB0cmltZXN0cmUgMjAxNy5fCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CgpqZWZlc29jdXBhZG9zIDwtIGluZGl2LjJUMjAxNyAlPiUgCiAgZmlsdGVyKENIMDM9PTEsIEVTVEFETz09MSkKCnRhYmxhNiA8LSBqZWZlc29jdXBhZG9zICU+JSAKICBsZWZ0X2pvaW4oLiwgaG9nLjJUMjAxNywgYnkgPWMoIkNPRFVTVSIsICJOUk9fSE9HQVIiKSkgJT4lIAogIGdyb3VwX2J5KFNleG8sIFZJSTFfMSkgJT4lIAogIHN1bW1hcmlzZShGcmVjdWVuY2lhID0gc3VtKFBPTkRFUkEueCkpICU+JSAKICBzcHJlYWQoLiwgU2V4bywgRnJlY3VlbmNpYSkKCmplZmVzLnZhcm9uZXMgPC0gc3VtKHRhYmxhNiRWYXJvbmVzLCBuYS5ybSA9IFRSVUUpCmplZmFzLm11amVyZXMgPC0gc3VtKHRhYmxhNiRNdWplcmVzLCBuYS5ybSA9IFRSVUUpCgp0YWJsYTcgPC0gdGFibGE2ICU+JSAKICBtdXRhdGUoIlZhcm9uZXMiID0gVmFyb25lcy9qZWZlcy52YXJvbmVzKjEwMCwKICAgICAgICAgIk11amVyZXMiID0gTXVqZXJlcy9qZWZhcy5tdWplcmVzKjEwMCwKICAgICAgICAgVklJMV8xID0gIkplZmEvZSIpICU+JSAKICBzZWxlY3QoIk1pZW1icm8gcXVlIHJlYWxpemEgbGEgbWF5b3IgcGFydGUgZGUgbGFzIHRhcmVhcyBkZSBsYSBjYXNhIj1WSUkxXzEsIE11amVyZXMsIFZhcm9uZXMpCiAgCnRhYmxhN1sxLCBdCmBgYAoKIyA1LiBTb2JyZW9jdXBhY2nDs24KRW4gZXN0ZSBjb250ZXh0bywgZXMgcHJlb2N1cGFudGUgY29uc3RhdGFyIHF1ZSAxIGRlIGNhZGEgNSB0cmFiYWphZG9yYXMgZXN0w6Egc29icmVvY3VwYWRhICh0cmFiYWphIG3DoXMgZGUgNDUgaG9yYXMgc2VtYW5hbGVzKSwgYWNlbnR1YW5kbyBhw7puIG3DoXMgbGEgZXhwbG90YWNpw7NuIHF1ZSB2aXZlbmNpYW4gbGFzIG11amVyZXMuKCopCgpfT2N1cGFkYXMvb3MuIE11amVyZXMgeSBWYXJvbmVzIHNlZ8O6biBJbnRlbnNpZGFkIGRlbCB0cmFiYWpvIChQb3JjZW50YWplcyBwb3IgY29sdW1uYXMpLiBUb3RhbCBkZSBhZ2xvbWVyYWRvcyB1cmJhbm9zLiAyZG8gdHJpbWVzdHJlIDIwMTcuXwpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQp0YWJsYTggPC0gaW5kaXYuMlQyMDE3ICU+JSAKICBmaWx0ZXIoRVNUQURPID09IDEpICU+JSAKICBncm91cF9ieShJTlRFTlNJLCBTZXhvKSAlPiUgCiAgc3VtbWFyaXNlKEZyZWN1ZW5jaWEgPSBzdW0oUE9OREVSQSkpICU+JSAKICBzcHJlYWQoLiwgU2V4bywgRnJlY3VlbmNpYSkKCnZhbG9yMSA8LSBzdW0odGFibGE4JE11amVyZXMpCnZhbG9yMiA8LSBzdW0odGFibGE4JFZhcm9uZXMpCgp0YWJsYTkgPC0gdGFibGE4ICU+JSAKICBtdXRhdGUoSU5URU5TSURBRCA9IGNhc2Vfd2hlbihJTlRFTlNJPT0xIH4gIlN1Ym9jdXBhZG8gcG9yIGluc3VmaWNpZW5jaWEgaG9yYXJpYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URU5TST09MiB+ICJPY3VwYWRvIHBsZW5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlRFTlNJPT0zIH4gIlNvYnJlb2N1cGFkbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5URU5TST09NCB+ICJPY3VwYWRvIHF1ZSBubyB0cmFiYWrDsyBlbiBsYSBzZW1hbmEiKSwKICAgICAgICAgTXVqZXJlcyA9IHJvdW5kKE11amVyZXMvdmFsb3IxKjEwMCwgMiksCiAgICAgICAgIFZhcm9uZXMgPSByb3VuZChWYXJvbmVzL3ZhbG9yMioxMDAsIDIpKSAlPiUgCiAgc2VsZWN0KElOVEVOU0lEQUQsIE11amVyZXMsIFZhcm9uZXMpCgp0YWJsYTkKYGBgCgojIDYuIEJyZWNoYSBkZSBpbmdyZXNvcyBwb3IgY2FsaWZpY2FjacOzbiBkZWwgcHVlc3RvIGRlIHRyYWJham8KTGFzIG11amVyZXMgdHJhYmFqYWRvcmFzIGdhbmFtb3MgZW4gcHJvbWVkaW8gdW4gMjclIG1lbm9zIHF1ZSBsb3MgdmFyb25lcyAoMTAuMzI4IHBlc29zIHZzLiAxNC4xOTAgcGVzb3MpLiBFc3RhIGJyZWNoYSBzZSBnZW5lcmEgaW5jbHVzbyBhIGlndWFsZXMgbml2ZWxlcyBkZSBjYWxpZmljYWNpw7NuIGRlbCBwdWVzdG8gZGUgdHJhYmFqby4gUG9yIGVqZW1wbG8sIG1pZW50cmFzIGxvcyB2YXJvbmVzIHF1ZSB0cmFiYWphbiBlbiBvY3VwYWNpb25lcyBwcm9mZXNpb25hbGVzIHRpZW5lbiB1biBpbmdyZXNvIG1lZGlvIGRlIDI0LjgzMiBwZXNvcywgbGFzIG11amVyZXMgb2N1cGFkYXMgZW4gZXNlIG1pc21vIHNlZ21lbnRvIHBlcmNpYmltb3MgdW4gaW5ncmVzbyBtZWRpbyBkZSAxOC43NDAgcGVzb3MgKHVuIDI0LDUlIG1lbm9zIHF1ZSBsb3MgdmFyb25lcykuIEVuIGxvcyBwdWVzdG9zIG5vIGNhbGlmaWNhZG9zLCBsb3MgdmFyb25lcyBnYW5hbiA4Ljk5OSBwZXNvcyBlbiBwcm9tZWRpbywgYWwgdGllbXBvIHF1ZSBsYXMgbXVqZXJlcyBnYW5hbW9zIGFscmVkZWRvciBkZSA1Ljc5MyBwZXNvcy4oKikKCl9PY3VwYWRhcy9vcy4gTWVkaWEgZGUgaW5ncmVzb3MgZGUgbGEgb2N1cGFjacOzbiBwcmluY2lwYWwgeSBicmVjaGEgZGUgaW5ncmVzb3MgcG9yIHNleG8uIFRvdGFsIGRlIGFnbG9tZXJhZG9zIHVyYmFub3MuIDJkbyB0cmltZXN0cmUgMjAxNy5fCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CnRhYmxhMTAgPC0gaW5kaXYuMlQyMDE3ICU+JSAKICBmaWx0ZXIoRVNUQURPID09IDEpICU+JSAKICBncm91cF9ieShTZXhvKSAlPiUgCiAgc3VtbWFyaXNlKE1lZGlhLklPUCA9IHJvdW5kKHdlaWdodGVkLm1lYW4oUDIxLCBQT05ESUlPKSwgMikpICU+JSAKICBzcHJlYWQoLiwgU2V4bywgTWVkaWEuSU9QKSAlPiUgCiAgbXV0YXRlKCJYJSBtZW5vcyBxdWUgbG9zIGhvbWJyZXMiID0gcm91bmQoKChWYXJvbmVzLU11amVyZXMpL1Zhcm9uZXMpKjEwMCwgMikpCgp0YWJsYTEwCmBgYAoKX09jdXBhZGFzL29zLiBNZWRpYSBkZSBJbmdyZXNvcyBkZSBsYSBPY3VwYWNpw7NuIFByaW5jaXBhbCBwb3IgY2FsaWZpY2FjacOzbiBkZWwgcHVlc3RvIGRlIHRyYWJham8geSBzZXhvLiBUb3RhbCBkZSBhZ2xvbWVyYWRvcyB1cmJhbm9zLiAyZG8gdHJpbWVzdHJlIDIwMTcuXwpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQp0YWJsYTExIDwtIGluZGl2LjJUMjAxNyAlPiUgCiAgZmlsdGVyKENBTElGSUNBQ0lPTiE9IjAiLAogICAgICAgICBFU1RBRE8gPT0gMSkgJT4lIAogIGdyb3VwX2J5KFNleG8sIENBTElGSUNBQ0lPTikgJT4lIAogIHN1bW1hcmlzZShNZWRpYS5JT1AgPSByb3VuZCh3ZWlnaHRlZC5tZWFuKFAyMSwgUE9ORElJTyksIDIpKSAlPiUgCiAgc3ByZWFkKC4sIFNleG8sIE1lZGlhLklPUCkKCnRhYmxhMTEKYGBgCgojIDcuIEJyZWNoYSBkZSBpbmdyZXNvcyBwb3Igbml2ZWwgZWR1Y2F0aXZvCkxhcyBtdWplcmVzIGVzdGFtb3MgZW4gcHJvbWVkaW8gbcOhcyBmb3JtYWRhcyBxdWUgbG9zIHZhcm9uZXMgKGhheSB1bmEgbWF5b3IgcHJvcG9yY2nDs24gZGUgbXVqZXJlcyBjb24gbml2ZWxlcyBlZHVjYXRpdm9zIG3DoXMgYWx0b3MpLiBTaW4gZW1iYXJnbywgYSBpZ3VhbCBuaXZlbCBlZHVjYXRpdm8sIGxvcyBpbmdyZXNvcyBsYWJvcmFsZXMgZGUgbGFzIG11amVyZXMgdHJhYmFqYWRvcmFzIHNvbiBpbmZlcmlvcmVzIGEgbG9zIGRlIGxvcyB2YXJvbmVzLiBFc3RhIGRpZmVyZW5jaWEgZGUgaW5ncmVzb3Mgb3NjaWxhIGVudHJlIGVsIDMwLjclIChwYXJhIGxvcyBxdWUgdGllbmVuIGVsIHNlY3VuZGFyaW8gY29tcGxldG8pLCB5IGVsIDQ4LDklIChwYXJhIGxvcyBxdWUgbm8gdGllbmVuIGluc3RydWNjacOzbikuIExhcyBtdWplcmVzIHF1ZSBwb3NlZW4gdW4gbml2ZWwgdW5pdmVyc2l0YXJpbyBjb21wbGV0byBjb2JyYW4gZW4gcHJvbWVkaW8gdW4gMzMuOSUgbWVub3MgcXVlIGxvcyB2YXJvbmVzIGNvbiBlc3RlIG1pc21vIG5pdmVsIGVkdWNhdGl2by4oKikKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CnRhYmxhMTIgPC0gaW5kaXYuMlQyMDE3ICU+JSAKICBncm91cF9ieShOSVZFTF9FRFVDQVRJVk8sIFNleG8pICU+JSAKICBzdW1tYXJpc2UoRnJlY3VlbmNpYSA9IHN1bShQT05ERVJBKSkgJT4lIAogIHNwcmVhZCguLCBTZXhvLCBGcmVjdWVuY2lhKQpgYGAKCl9NdWplcmVzIHkgVmFyb25lcyBzZWfDum4gbml2ZWwgZWR1Y2F0aXZvIChQb3JjZW50YWplIHBvciBjb2x1bW5hcykuIFRvdGFsIGRlIGFnbG9tZXJhZG9zIHVyYmFub3MuIDJkbyB0cmltZXN0cmUgMjAxNy5fCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9ClRvdGFsLk11amVyZXMyIDwtIHN1bSh0YWJsYTEyJE11amVyZXMpClRvdGFsLlZhcm9uZXMyIDwtIHN1bSh0YWJsYTEyJFZhcm9uZXMpCgp0YWJsYTEzIDwtIHRhYmxhMTIgJT4lIAogIG11dGF0ZShNdWplcmVzID0gcm91bmQoTXVqZXJlcy9Ub3RhbC5NdWplcmVzMioxMDAsIDIpLAogICAgICAgICBWYXJvbmVzID0gcm91bmQoVmFyb25lcy9Ub3RhbC5WYXJvbmVzMioxMDAsIDIpKQoKdGFibGExMwoKYGBgCgpfT2N1cGFkYXMvb3MuIE1lZGlhIGRlIEluZ3Jlc29zIGRlIGxhIG9jdXBhY2nDs24gcHJpbmNpcGFsIHBvciBuaXZlbCBlZHVjYXRpdm8geSBzZXhvLiBUb3RhbCBkZSBhZ2xvbWVyYWRvcyB1cmJhbm9zLiAyZG8gdHJpbWVzdHJlIDIwMTcuXwpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQp0YWJsYTE0IDwtIGluZGl2LjJUMjAxNyAlPiUgCiAgZmlsdGVyKEVTVEFETyA9PSAxKSAlPiUgCiAgZ3JvdXBfYnkoU2V4bywgTklWRUxfRURVQ0FUSVZPKSAlPiUgCiAgc3VtbWFyaXNlKE1lZGlhLklPUCA9IHJvdW5kKHdlaWdodGVkLm1lYW4oUDIxLCBQT05ESUlPKSwgMikpICU+JSAKICBzcHJlYWQoLiwgU2V4bywgTWVkaWEuSU9QKQoKdGFibGExNApgYGAKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CnRhYmxhMTUgPC0gdGFibGExNCAlPiUgCiAgbXV0YXRlKCJYJSBtZW5vcyBxdWUgbG9zIGhvbWJyZXMiID0gcm91bmQoKChWYXJvbmVzLU11amVyZXMpL1Zhcm9uZXMpKjEwMCwgMikpIAoKdGFibGExNQpgYGAKCiMgOC4gRGlzdHJpYnVjacOzbiBkZWwgSW5ncmVzbwoKIyMgOC4xCkRlIGxhIG1hc2EgdG90YWwgZGUgaW5ncmVzb3MgKGluY2x1eWVuZG8gc2FsYXJpb3MsIGp1YmlsYWNpb25lcywgZXRjLiksIGxvcyB2YXJvbmVzIHNlIGxsZXZhbiBsYSBtYXlvciBwYXJ0ZSAoNTcsMyUpLigqKikKCiMjIDguMgpNaWVudHJhcyBlbCBwcm9tZWRpbyBkZSBsb3MgaW5ncmVzb3MgdG90YWxlcyBkZSBsYXMgbXVqZXJlcyBlcyBkZSAkMTIuMzY2LCBlbiBlbCBjYXNvIGRlIGxvcyB2YXJvbmVzIGFzY2llbmRlIGEgMTYuNzczIHBlc29zLiBFcyBkZWNpciwgbG9zIGluZ3Jlc29zIGRlIGxvcyB2YXJvbmVzIHNvbiBlbiBwcm9tZWRpbyB1biAzNSw2JSBtw6FzIGFsdG9zLigqKikKCiMjIDguMwpMYSBkZXNpZ3VhbCBkaXN0cmlidWNpw7NuIGRlIGxvcyBpbmdyZXNvcyBlbnRyZSBzZXhvcyBzZSB2ZXJpZmljYSB0YW1iacOpbiBhbCBvYnNlcnZhciBxdWUg4oCTY29uc2lkZXJhbmRvIGVsIGluZ3Jlc28gdG90YWwgaW5kaXZpZHVhbC0gbGFzIG11amVyZXMgc29tb3MgbWF5b3LDrWEgZW4gbG9zIGVzdHJhdG9zIGRlIGJham9zIGluZ3Jlc29zLCBtaWVudHJhcyBlbiBsb3MgZGVjaWxlcyBkZSBsb3MgaW5ncmVzb3MgbcOhcyBhbHRvcyBwcmVkb21pbmFuIGxvcyB2YXJvbmVzLigqKikKCiMjIDguNApEZWwgdG90YWwgZGUgcG9ibGFjacOzbiBzaW4gaW5ncmVzb3MsIGxhIG1heW9yw61hIHNvbW9zIG11amVyZXMgKDU3JSkuKCoqKQoKIyA5LiBQb2JyZXphClVuIDI4JSBkZSBsYXMgbXVqZXJlcyB2aXZlIGVuIGhvZ2FyZXMgcG9icmVzLigqKQoKIyAxMC4gSG9nYXJlcyBtb25vcGFyZW50YWxlcyB5IHBvYnJlemEKTG9zIGhvZ2FyZXMgbW9ub3BhcmVudGFsZXMgY29uIGplZmF0dXJhIGZlbWVuaW5hIG3DoXMgcXVlIGN1YWRydXBsaWNhbiBsYSBjYW50aWRhZCBkZSBob2dhcmVzIG1vbm9wYXJlbnRhbGVzIGNvbiBqZWZhdHVyYSBtYXNjdWxpbmEuIEVzIGRlY2lyLCBoYXkgbcOhcyBob2dhcmVzIGNvbiBqZWZhcyBkZSBob2dhciBtdWplcmVzLCBhIGNhcmdvIGRlIGhpam9zIHkgc2luIGPDs255dWdlLiBFc3RvcyBob2dhcmVzIHRpZW5lbiB1bmEgaW5jaWRlbmNpYSBtYXlvciBkZSBsYSBwb2JyZXphIHF1ZSBlbCBwcm9tZWRpbyBkZSBsb3MgaG9nYXJlcyAoMzElIHZzLiAyMCUsIHJlc3BlY3RpdmFtZW50ZSkgeSBxdWUgZWwgcHJvbWVkaW8gZGUgbG9zIGhvZ2FyZXMgbW9ub3BhcmVudGFsZXMgY29uIGplZmF0dXJhIG1hc2N1bGluYSAoMzElIHZzLiAyNyUpLigqKQoKX0hvZ2FyZXMgbW9ub3BhcmVudGFsZXMgc2Vnw7puIHNleG8gZGVsIGplZmUgZGUgaG9nYXIuIFRvdGFsIGRlIGFnbG9tZXJhZG9zIHVyYmFub3MuIDJkbyB0cmltZXN0cmUgMjAxNy5fCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmplZmFzIDwtIGluZGl2LjJUMjAxNyAlPiUgCiAgZmlsdGVyKENIMDQ9PTIgJiBDSDAzPT0xKSAlPiUgCiAgbXV0YXRlKENvbi5KZWZhID0gMSkgJT4lIAogIHNlbGVjdChDT0RVU1UsIE5ST19IT0dBUiwgQ29uLkplZmEpCgpqZWZlcyA8LSBpbmRpdi4yVDIwMTcgJT4lIAogIGZpbHRlcihDSDA0PT0xICYgQ0gwMz09MSkgJT4lIAogIG11dGF0ZShDb24uSmVmZSA9IDEpICU+JSAKICBzZWxlY3QoQ09EVVNVLCBOUk9fSE9HQVIsIENvbi5KZWZlKQoKY29ueXVnZS5tdWplciA8LSBpbmRpdi4yVDIwMTcgJT4lIAogIGZpbHRlcihDSDA0PT0yICYgQ0gwMz09MikgJT4lIAogIG11dGF0ZShDb24uQ29ueXVnZS5NdWplciA9IDEpICU+JSAKICBzZWxlY3QoQ09EVVNVLCBOUk9fSE9HQVIsIENvbi5Db255dWdlLk11amVyKQoKY29ueXVndWUudmFyb24gPC0gaW5kaXYuMlQyMDE3ICU+JSAKICBmaWx0ZXIoQ0gwND09MSAmIENIMDM9PTIpICU+JSAKICBtdXRhdGUoQ29uLkNvbnl1Z2UuVmFyb24gPSAxKSAlPiUgCiAgc2VsZWN0KENPRFVTVSwgTlJPX0hPR0FSLCBDb24uQ29ueXVnZS5WYXJvbikKCmNvbi5oaWpvcyA8LSBpbmRpdi4yVDIwMTcgJT4lIAogIGZpbHRlcihDSDAzPT0zKSAlPiUgCiAgZ3JvdXBfYnkoQ09EVVNVLCBOUk9fSE9HQVIpICU+JSAKICBzdW1tYXJpc2UoQ29uLkhpam9zID0gMSkgJT4lIAogIHNlbGVjdChDT0RVU1UsIE5ST19IT0dBUiwgQ29uLkhpam9zKQoKdGFibGExNiA8LSBpbmRpdi4yVDIwMTcgJT4lIAogIGxlZnRfam9pbiguLCBqZWZhcywgYnk9YygiQ09EVVNVIiwgIk5ST19IT0dBUiIpKSAlPiUgCiAgbGVmdF9qb2luKC4sIGplZmVzLCBieT1jKCJDT0RVU1UiLCAiTlJPX0hPR0FSIikpICU+JSAKICBsZWZ0X2pvaW4oLiwgY29ueXVnZS5tdWplciwgYnk9YygiQ09EVVNVIiwgIk5ST19IT0dBUiIpKSAlPiUgCiAgbGVmdF9qb2luKC4sIGNvbnl1Z3VlLnZhcm9uLCBieT1jKCJDT0RVU1UiLCAiTlJPX0hPR0FSIikpICU+JSAKICBsZWZ0X2pvaW4oLiwgY29uLmhpam9zLCBieT1jKCJDT0RVU1UiLCAiTlJPX0hPR0FSIikpICU+JSAKICBncm91cF9ieShDT0RVU1UsIE5ST19IT0dBUikgJT4lIAogIHN1bW1hcmlzZShDb24uSmVmYT11bmlxdWUoQ29uLkplZmEpLAogICAgICAgICBDb24uSmVmZT11bmlxdWUoQ29uLkplZmUpLAogICAgICAgICBDb24uQ29ueXVnZS5NdWplcj11bmlxdWUoQ29uLkNvbnl1Z2UuTXVqZXIpLAogICAgICAgICBDb24uQ29ueXVnZS5WYXJvbj11bmlxdWUoQ29uLkNvbnl1Z2UuVmFyb24pLAogICAgICAgICBDb24uSGlqb3M9dW5pcXVlKENvbi5IaWpvcyksCiAgICAgICAgIFBPTkRFUkE9dW5pcXVlKFBPTkRFUkEpLAogICAgICAgICBNb25vcGFyZW50YWwgPSBjYXNlX3doZW4oQ29uLkplZmE9PTEgJiBpcy5uYShDb24uQ29ueXVnZS5WYXJvbikgJiBDb24uSGlqb3M9PTEgfiAiSG9nYXJlcyBjb24gSmVmYXMgTXVqZXJlcywgc2luIGNvbnl1Z2UsIGNvbiBoaWpvcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb24uSmVmZT09MSAmIGlzLm5hKENvbi5Db255dWdlLk11amVyKSAmIENvbi5IaWpvcz09MSB+ICJIb2dhcmVzIGNvbiBKZWZlcyBWYXJvbmVzLCBzaW4gY29ueXVnZSwgY29uIGhpam9zIikpCiAgCnRhYmxhMTcgPC0gdGFibGExNiAlPiUgCiAgZ3JvdXBfYnkoTW9ub3BhcmVudGFsKSAlPiUgCiAgc3VtbWFyaXNlKEZyZWN1ZW5jaWEgPSBzdW0oUE9OREVSQSksCiAgICAgICAgICAgIFBvcmNlbnRhamVzID0gcm91bmQoRnJlY3VlbmNpYS8oMTQyMTc0NCszMTA4NzYrNzEyNTk1NikqMTAwLCAyKSkgJT4lIAogIG11dGF0ZShNb25vcGFyZW50YWwgPSBjYXNlX3doZW4oaXMubmEoTW9ub3BhcmVudGFsKSB+ICJSZXN0byIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gTW9ub3BhcmVudGFsKSkKCnRhYmxhMTcKCmBgYAoKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgaW5jbHVkZT1GQUxTRX0KQWRlcXVpIDwtIHJlYWRfZXhjZWwoIkFERVFVSS54bHMiKSAjIFRhYmxhIHF1ZSBjb250aWVuZSBsYSByZWxhY2nDs24gcmVzcGVjdG8gZGVsIGFkdWx0byBlcXVpdmFsZW50ZSBzZWfDum4gc2V4byB5IGVkYWQKQ0JBIDwtIHJlYWRfZXhjZWwoIkNBTkFTVEFTLnhscyIsIHNoZWV0ID0gIkNCQSIpICMgQ2FuYXN0YXMgcHVibGljYWRhcyBwb3IgSVBDLUlOREVDCkNCVCA8LSByZWFkX2V4Y2VsKCJDQU5BU1RBUy54bHMiLCBzaGVldCA9ICJDQlQiKSAjIENhbmFzdGFzIHB1YmxpY2FkYXMgcG9yIElQQy1JTkRFQwpkaWMucmVnaW9uZXMgPC0gcmVhZF9leGNlbCgiUmVnaW9uZXMueGxzeCIpICMgRGljY2lvbmFyaW8gZGUgY8OzZGlnb3MgeSBub21icmUgZGUgbGFzIHJlZ2lvbmVzCgpDQkEkQ2FuYXN0YSA8LSAnQ0JBJwpDQlQkQ2FuYXN0YSA8LSAnQ0JUJwpDYW5hc3RhIDwtIGJpbmRfcm93cyhDQkEsQ0JUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPiUgCiAgZ2F0aGVyKC4sIFJlZ2lvbiwgVmFsb3IsIGMoMzoobmNvbCguKS0xKSApKSAgICAgICAgICAgICU+JQogIG11dGF0ZShUcmltZXN0cmUgPSBjYXNlX3doZW4oTWVzICVpbiUgYygxOjMpICAgfjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXMgJWluJSBjKDQ6NikgICB+MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lcyAlaW4lIGMoNzo5KSAgIH4zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzICVpbiUgYygxMDoxMikgfjQpLAogICAgICAgICBQZXJpb2RvID0gcGFzdGUoYEHDsW9gLCBUcmltZXN0cmUsIHNlcD0nLicpKSAgICAgICAlPiUgCiAgZ3JvdXBfYnkoQ2FuYXN0YSwgUmVnaW9uLCBQZXJpb2RvKSAgICAgICAgICAgICAgICAgICAgICU+JSAKICBzdW1tYXJpc2UoVmFsb3IgPSBtZWFuKFZhbG9yKSkgICAgICAgICAgICAgICAgICAgICAgICAgJT4lIAogIHNwcmVhZCguLCBDYW5hc3RhLFZhbG9yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPiUgCiAgbGVmdF9qb2luKC4sIGRpYy5yZWdpb25lcywgYnkgPSAiUmVnaW9uIikgICAgICAgICAgICAgICU+JSAKICB1bmdyb3VwKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJT4lIAogIHNlbGVjdCgtUmVnaW9uKQoKdmFyLmluZCA8LSBjKCdDT0RVU1UnLCAnQU5PNCcsJ1RSSU1FU1RSRScsJ05ST19IT0dBUicsJ0NPTVBPTkVOVEUnLCAnQ0gwMycsJ1JFR0lPTicsCiAgICAgICAgICAgICAnQUdMT01FUkFETycsICdQT05ERVJBJywgJ0NIMDQnLCAnQ0gwNicsICdJVEYnLCAnUE9ORElIJywnUDIxJykKClBvYnJlemFfSW5kaXZpZHVhbCA8LSBiaW5kX3Jvd3MoaW5kaXYuMVQyMDE3ICAgICAgICAlPiUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0KHZhci5pbmQpLAogICAgICAgICAgICAgICAgICAgICAgICBpbmRpdi4yVDIwMTcgICAgICAgICAgICAgICAgJT4lIAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCh2YXIuaW5kKSkgICAgICAgICAgICAgICAgICAgICAgJT4lIAogIG11dGF0ZShQZXJpb2RvID0gcGFzdGUoQU5PNCwgVFJJTUVTVFJFLCBzZXA9Jy4nKSkgICAgICAgICAgICAgJT4lIAogIGxlZnRfam9pbiguLCBBZGVxdWksIGJ5ID0gYygiQ0gwNCIsICJDSDA2IikpICAgICAgICAgICAgICAgICAgJT4lCiAgZ3JvdXBfYnkoQ09EVVNVLCBOUk9fSE9HQVIsIFBlcmlvZG8pICAgICAgICAgICAgICAgICAgICAgICAgICAlPiUgCiAgbXV0YXRlKEFkZXF1aV9ob2dhciA9IHN1bShhZGVxdWkpLAogICAgICAgICBJVEYgPSB1bmlxdWUoSVRGKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJT4lCiAgdW5ncm91cCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPiUgCiAgbGVmdF9qb2luKC4sIENhbmFzdGEsIGJ5ID0gYygiUkVHSU9OIiwgIlBlcmlvZG8iKSkgICAgICAgICAgICAlPiUgCiAgbXV0YXRlKENCQSA9IENCQSpBZGVxdWlfaG9nYXIsCiAgICAgICAgIENCVCA9IENCVCpBZGVxdWlfaG9nYXIsCiAgICAgICAgIFNpdHVhY2lvbiA9IGNhc2Vfd2hlbihJVEY8Q0JBICAgICAgICAgICAgfiAnSW5kaWdlbnRlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElURj49Q0JBICYgSVRGPENCVCB+ICdQb2JyZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJVEY+PUNCVCAgICAgICAgICAgfiAnTm8uUG9icmUnKSkgIAoKc2FyYXNhIDwtIFBvYnJlemFfSW5kaXZpZHVhbCAlPiUgCiAgZ3JvdXBfYnkoQ09EVVNVLCBOUk9fSE9HQVIsIFBlcmlvZG8pICU+JSAKICBzdW1tYXJpc2UoU2l0dWFjaW9uPXVuaXF1ZShTaXR1YWNpb24pKQoKUG9icmV6YV9Ib2dhcmVzIDwtIGJpbmRfcm93cyhob2cuMVQyMDE3LCBob2cuMlQyMDE3KSAlPiUgCiAgbXV0YXRlKFBlcmlvZG8gPSBwYXN0ZShBTk80LCBUUklNRVNUUkUsIHNlcCA9ICIuIikpICU+JSAKICBsZWZ0X2pvaW4oLiwgc2FyYXNhLCBieT1jKCJDT0RVU1UiLCAiTlJPX0hPR0FSIiwgIlBlcmlvZG8iKSkgJT4lIAogIG11dGF0ZShQT05ESUhfU0VNPXJvdW5kKFBPTkRJSC8yLCAyKSkgJT4lIAogIGdyb3VwX2J5KEFOTzQpICU+JSAKICBzdW1tYXJpc2UoVGFzYS5JbmRpZ2VuY2lhID0gcm91bmQoc3VtKFBPTkRJSF9TRU1bU2l0dWFjaW9uPT0iSW5kaWdlbnRlIl0pICAgICAgICAgICAgICAgIC9zdW0oUE9ORElIX1NFTSkqMTAwLCAyKSwKICAgICAgICAgICAgVGFzYS5Qb2JyZXphICAgID0gcm91bmQoc3VtKFBPTkRJSF9TRU1bU2l0dWFjaW9uICVpbiUgYygiSW5kaWdlbnRlIiwgIlBvYnJlIildKS9zdW0oUE9ORElIX1NFTSkqMTAwLCAyKSkKICAKdGFibGExOCA8LSBQb2JyZXphX0luZGl2aWR1YWwgJT4lIAogIGZpbHRlcihDSDAzPT0xKSAlPiUgCiAgbXV0YXRlKFBPTkRJSF9TRU0gPSByb3VuZChQT05ESUgvMiwgMCkpICU+JSAKICBncm91cF9ieShDSDA0KSAlPiUgCiAgc3VtbWFyaXNlKFRhc2EuSW5kaWdlbmNpYSA9IHJvdW5kKHN1bShQT05ESUhfU0VNW1NpdHVhY2lvbj09IkluZGlnZW50ZSJdKSAgICAgICAgICAgICAgICAvc3VtKFBPTkRJSF9TRU0pKjEwMCwgMiksCiAgICAgICAgICAgIFRhc2EuUG9icmV6YSAgICA9IHJvdW5kKHN1bShQT05ESUhfU0VNW1NpdHVhY2lvbiAlaW4lIGMoIkluZGlnZW50ZSIsICJQb2JyZSIpXSkvc3VtKFBPTkRJSF9TRU0pKjEwMCwgMikpICU+JSAKICBtdXRhdGUoIlNleG8gZGVsIEplZmUgZGUgSG9nYXIiID0gY2FzZV93aGVuKENIMDQ9PTEgfiAiVmFyb25lcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDSDA0PT0yIH4gIk11amVyZXMiKSkgJT4lIAogIHNlbGVjdChgU2V4byBkZWwgSmVmZSBkZSBIb2dhcmAsIFRhc2EuSW5kaWdlbmNpYSwgVGFzYS5Qb2JyZXphKQoKdGFibGExOAoKYGBgCgpfVGFzYXMgZGUgcG9icmV6YSBlIGluZGlnZW5jaWEgZW4gbG9zIGhvZ2FyZXMgbW9ub3BhcmVudGFsZXMuIFRvdGFsIGRlIGFnbG9tZXJhZG9zIHVyYmFub3MuIDFlciBzZW1lc3RyZSAyMDE3Ll8KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KamVmYXMgPC0gUG9icmV6YV9JbmRpdmlkdWFsICU+JSAKICBmaWx0ZXIoQ0gwND09MiAmIENIMDM9PTEpICU+JSAKICBtdXRhdGUoQ29uLkplZmEgPSAxKSAlPiUgCiAgc2VsZWN0KENPRFVTVSwgTlJPX0hPR0FSLCBQZXJpb2RvLCBDb24uSmVmYSkKCmplZmVzIDwtIFBvYnJlemFfSW5kaXZpZHVhbCAlPiUgCiAgZmlsdGVyKENIMDQ9PTEgJiBDSDAzPT0xKSAlPiUgCiAgbXV0YXRlKENvbi5KZWZlID0gMSkgJT4lIAogIHNlbGVjdChDT0RVU1UsIE5ST19IT0dBUiwgUGVyaW9kbywgQ29uLkplZmUpCgpjb255dWdlLm11amVyIDwtIFBvYnJlemFfSW5kaXZpZHVhbCAlPiUgCiAgZmlsdGVyKENIMDQ9PTIgJiBDSDAzPT0yKSAlPiUgCiAgbXV0YXRlKENvbi5Db255dWdlLk11amVyID0gMSkgJT4lIAogIHNlbGVjdChDT0RVU1UsIE5ST19IT0dBUiwgUGVyaW9kbywgQ29uLkNvbnl1Z2UuTXVqZXIpCgpjb255dWdlLnZhcm9uIDwtIFBvYnJlemFfSW5kaXZpZHVhbCAlPiUgCiAgZmlsdGVyKENIMDQ9PTEgJiBDSDAzPT0yKSAlPiUgCiAgbXV0YXRlKENvbi5Db255dWdlLlZhcm9uID0gMSkgJT4lIAogIHNlbGVjdChDT0RVU1UsIE5ST19IT0dBUiwgUGVyaW9kbywgQ29uLkNvbnl1Z2UuVmFyb24pCgpjb24uaGlqb3MgPC0gUG9icmV6YV9JbmRpdmlkdWFsICU+JSAKICBmaWx0ZXIoQ0gwMz09MykgJT4lIAogIGdyb3VwX2J5KENPRFVTVSwgTlJPX0hPR0FSLCBQZXJpb2RvKSAlPiUgCiAgc3VtbWFyaXNlKENvbi5IaWpvcyA9IDEpICU+JSAKICBzZWxlY3QoQ09EVVNVLCBOUk9fSE9HQVIsIFBlcmlvZG8sIENvbi5IaWpvcykKCnRhYmxhMTkgPC0gUG9icmV6YV9JbmRpdmlkdWFsICU+JSAKICBsZWZ0X2pvaW4oLiwgamVmYXMsIGJ5PWMoIkNPRFVTVSIsICJOUk9fSE9HQVIiLCAiUGVyaW9kbyIpKSAlPiUgCiAgbGVmdF9qb2luKC4sIGplZmVzLCBieT1jKCJDT0RVU1UiLCAiTlJPX0hPR0FSIiwgIlBlcmlvZG8iKSkgJT4lIAogIGxlZnRfam9pbiguLCBjb255dWdlLm11amVyLCBieT1jKCJDT0RVU1UiLCAiTlJPX0hPR0FSIiwgIlBlcmlvZG8iKSkgJT4lIAogIGxlZnRfam9pbiguLCBjb255dWdlLnZhcm9uLCBieT1jKCJDT0RVU1UiLCAiTlJPX0hPR0FSIiwgIlBlcmlvZG8iKSkgJT4lIAogIGxlZnRfam9pbiguLCBjb24uaGlqb3MsIGJ5PWMoIkNPRFVTVSIsICJOUk9fSE9HQVIiLCAiUGVyaW9kbyIpKSAlPiUgCiAgZ3JvdXBfYnkoQ09EVVNVLCBOUk9fSE9HQVIsIFBlcmlvZG8pICU+JSAKICBzdW1tYXJpc2UoQ29uLkplZmE9dW5pcXVlKENvbi5KZWZhKSwKICAgICAgICAgQ29uLkplZmU9dW5pcXVlKENvbi5KZWZlKSwKICAgICAgICAgQ29uLkNvbnl1Z2UuTXVqZXI9dW5pcXVlKENvbi5Db255dWdlLk11amVyKSwKICAgICAgICAgQ29uLkNvbnl1Z2UuVmFyb249dW5pcXVlKENvbi5Db255dWdlLlZhcm9uKSwKICAgICAgICAgQ29uLkhpam9zPXVuaXF1ZShDb24uSGlqb3MpLAogICAgICAgICBQT05ESUg9dW5pcXVlKFBPTkRJSCksCiAgICAgICAgIFBPTkRJSF9TRU09cm91bmQoUE9ORElILzIsMCksCiAgICAgICAgIFNpdHVhY2lvbj11bmlxdWUoU2l0dWFjaW9uKSwKICAgICAgICAgTW9ub3BhcmVudGFsID0gY2FzZV93aGVuKENvbi5KZWZhPT0xICYgaXMubmEoQ29uLkNvbnl1Z2UuVmFyb24pICYgQ29uLkhpam9zPT0xIH4gIkhvZ2FyZXMgY29uIEplZmFzIE11amVyZXMsIHNpbiBjb255dWdlLCBjb24gaGlqb3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uLkplZmU9PTEgJiBpcy5uYShDb24uQ29ueXVnZS5NdWplcikgJiBDb24uSGlqb3M9PTEgfiAiSG9nYXJlcyBjb24gSmVmZXMgVmFyb25lcywgc2luIGNvbnl1Z2UsIGNvbiBoaWpvcyIpKQogIAp0YWJsYTIwIDwtIHRhYmxhMTkgJT4lIAogIGdyb3VwX2J5KE1vbm9wYXJlbnRhbCwgU2l0dWFjaW9uKSAlPiUgCiAgc3VtbWFyaXNlKEZyZWN1ZW5jaWEgPSBzdW0oUE9ORElIX1NFTSkpICU+JSAKICBzcHJlYWQoLiwgU2l0dWFjaW9uLCBGcmVjdWVuY2lhKSAlPiUgCiAgbXV0YXRlKFRhc2EuUG9icmV6YSA9IHJvdW5kKChQb2JyZStJbmRpZ2VudGUpLyhJbmRpZ2VudGUrTm8uUG9icmUrUG9icmUpKjEwMCwgMiksCiAgICAgICAgIFRhc2EuSW5kaWdlbmNpYSA9IHJvdW5kKEluZGlnZW50ZS8oSW5kaWdlbnRlK05vLlBvYnJlK1BvYnJlKSoxMDAsIDIpKSAlPiUgCiAgc2VsZWN0KE1vbm9wYXJlbnRhbCwgVGFzYS5Qb2JyZXphLCBUYXNhLkluZGlnZW5jaWEpCgp0YWJsYTIwW2MoMSwgMiksXQpgYGAKCiMgTm90YXMKICAgICAgCigqKSBFbGFib3JhY2nDs24gcHJvcGlhIGVuIGJhc2UgYSBsYXMgYmFzZXMgdXN1YXJpYXMgcHVibGljYWRhcyBkZSBFUEgtSU5ERUMuIDJkbyB0cmltZXN0cmUgMjAxNy4gICAgICAKTG9zIGRhdG9zIGRlIHBvYnJlemEgc2UgZXN0aW1hcm9uIHBhcmEgZWwgMWVyIHNlbWVzdHJlIDIwMTcsIHV0aWxpemFuZG8gbGFzIGJhc2VzIHVzdWFyaWFzIGRlIDFlciB5IDJkbyB0cmltZXN0cmUgMjAxNy4gICAgICAgICAgCigqKikgSW5mb3JtZSBUw6ljbmljbyBFdm9sdWNpw7NuIGRlIGxhIGRpc3RyaWJ1Y2nDs24gZGVsIGluZ3Jlc28gRVBILUlOREVDLCAzZXIgdHJpbWVzdHJlIDIwMTcuIChjb25zdWx0YXIgW2FxdcOtXShodHRwczovL3d3dy5pbmRlYy5nb2IuYXIvdXBsb2Fkcy9pbmZvcm1lc2RlcHJlbnNhL2luZ3Jlc29zXzN0cmltMTcucGRmKSkgICAgCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg==