South Summit: Where Innovation Meets Business

[fusion_builder_container admin_label=”Desktop” hundred_percent=”yes” hundred_percent_height=”no” hundred_percent_height_scroll=”no” hundred_percent_height_center_content=”yes” equal_height_columns=”no” menu_anchor=”” hide_on_mobile=”medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_position=”center center” background_repeat=”no-repeat” fade=”no” background_parallax=”none” enable_mobile=”no” parallax_speed=”0.3″ video_mp4=”” video_webm=”” video_ogv=”” video_url=”” video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” video_preview_image=”” border_size=”” border_color=”” border_style=”solid” margin_top=”” margin_bottom=”” padding_top=”2%” padding_right=”10%” padding_bottom=”2%” padding_left=”10%”][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ spacing=”yes” center_content=”no” link=”” target=”_self” min_height=”” hide_on_mobile=”medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” hover_type=”none” border_size=”” border_color=”” border_style=”solid” border_position=”all” padding_top=”2%” padding_right=”10%” padding_bottom=”2%” padding_left=”10%” margin_top=”0px” margin_bottom=”0px” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_text columns=”” column_min_width=”” column_spacing=”” rule_style=”default” rule_size=”” rule_color=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=””]

South Summit: Where Innovation Meets Business

Earlier this month CFTE attended the 5th annual South Summit in Madrid, one of the biggest events dedicated to innovation in South Europe and Latam, which focused on the theme of: “Where innovation meets business.” Our co-founder & CEO, Huy Nguyen Trieu, was invited as a thought leader to give a keynote speech on: Is AI the new blockchain? He also interviewed Paul Misener, VP, Innovation, Policy & Communications at Amazon, to learn more about “Innovating the Amazon way”.

Huy wasn’t the only CFTE representative at the event as Nicolas Tonnard –COO– flew from London to meet with the Iberian ecosystem and a few of our learners and alumni were able to attend as well.

The event was a great success and we wanted to pay tribute to the organiser by wrapping up the main learning outcomes we gathered and share them with our international community.

Spain has talent

The South Summit is an event that gathers startups, big corporations, and investors. This year it was celebrated at the innovation campus “La Nave” in Madrid with over 12,000 participants.  There were around 650 investors, 3,500 startups and notable business leaders, as well as big corporations looking for startups to team up with for innovation and growth.

The summit was founded by entrepreneur and visionary Maria Benjumea in the midst of the Spanish crisis in 2012. She knew the crisis was going to pass by and a big change was approaching, which Spain had to be ready for. With the summit, Benjumea was putting Spain on the map, by showing the world the Spanish startup ecosystem has very talented entrepreneurs. As she points out: “We have nothing to envy of Silicon Valley.”

Indeed, the startup ecosystem in Spain has been growing fast since its foundation, going from being a lowkey figure to a substantial player against countries like the UK and France. According to a report from Startupxplore, the investment in startups in 2017 increased by 45 percent in Spain, with a total of 845M euros invested. At the moment Spain has 3500 startups, Madrid and Barcelona being the main cities where they are established (Barcelona also occupies the 5th place in the European ranking on startups). Moreover, 66% of the Spanish startups have survived to the first and most difficult year in the market.

In this climate, were Spain is becoming a powerful player, the South Summit appears as the perfect playground to continue pushing forward the development of the Spanish startup ecosystem. Let’s take a look at what our team witnessed in this Spanish celebration of innovation.

Spain wants to be the next startup nation

The spirit and motivation were palpable from  day one: Spain wants to keep on boosting the investment in startups and become a hub for entrepreneurs. During the ceremony that marked the opening, the keynote speakers included Europe’s institutions such as Banco Sabadell and Telefonica – big promoters of the European startup ecosystem as a fuel for innovation.  

“We all need to rethink in order to innovate and change the world to the best,” said José Álvarez Pallete, Chairman of Telefonica, who wants to continue leading the digital transformation in the private sector.

“We believe, innovation drives you to success,” added Javier Uriarte, Regional Director of Banco Sabadell.  

Present also at the opening ceremony, was Nadia Calvino, Minister of Economy, who remains a strong advocate of promoting innovation within the industry. “Our two core values are, innovation and think big,” she said.

As Benjumea explained on an interview at radio COPE, the key role of the government is to remove any obstacles that prevent the development of startups. It was clear by the end of the summit that nowadays, Spanish startups count strongly with the government’s backup.

Both the Spanish President, Pedro Sánchez Pérez-Castejón and the mayor of Madrid, Manuela Carmena, spoke at the closing ceremony, showing a strong commitment in wanting Spain to become the next startup nation. The President emphasised that for this to happen it is fundamental to promote incubators and accelerators, as well as the connection of startups with investors.

More so, the mayor highlighted the need for startups concentrating on building smarter cities. Urbanisation is growing and as Maria Garrido, CEO of HavasX, explained, in 2050 68% of the population will live in cities. Spain definitely wants to be ready for this change, so space for 70 startups has been allocated at “La Nave” for them to develop smart urban innovation.

Learning how to learn

An important topic of discussion during the summit was how we must rethink the education model in today’s digital age. To address the different issues the summit dedicated a special side event called enlightED, which brought together experts in education technology and innovation to foster the debate about the challenges education is going to face in the next ten years.

Some of the big questions discussed were: What will the education of the future look like? Do we still need traditional learning institutions? Percy Harrison, from ETON Online Ventures, pointed out: “If students don’t learn the way we teach, we must teach the way they want to learn.”

Amongst others present, Sir Ken Robinson gave a brilliant speech. “Education should promote diversity of intelligence, talents, ability, not conformity,” he said.

As well, several Edtech programs took place that focused on topics like “When Technology Reinvents the Professions”, “Higher Education in the Age of Artificial Intelligence”, “Disrupting College”, “The future of higher education”.   

We learned that plenty of research is being done on the matter, but as Barbara Oakley, from Oakland University, explained during one of the conferences, there is a big challenge: getting this knowledge out to the masses, the teachers and the students who need it.

“One of the big breakthroughs that are going to be happening in the next decade is online learning in ways to disseminate this important information so everyone can learn it.”

Innovation is moving at such high pace with the breakthrough in technology that the biggest concern is how can professionals remain relevant. Pushing forward with models of online alternative education, such as CFTE, is one of the ways to proceed, because there is a need for changing the initial education model with a continuous model, were individuals keep on learning and updating their skills to be prepared for the new technologies rising.  

Open innovation is changing

Moreover, another big topic dealt with at the summit was “Open innovation” and the changes the ecosystem has been facing recently due to the rapid increase of open ecosystems in organizations to foster innovation. A special  forum was dedicated for its discussion, moderated by US Academic Henry Chesbrough, known as the father of Open Innovation.

At the forum different speakers gathered to provide their perspective on what’s going on with “Open Innovation” in the present and what will happen in the future, in order to explore what could be the best solutions for both the emerging thinking startups and the businesses.

Mario Pardo, global head of Enterprise Solutions at BBVA, sat down with Chesbrough to discuss how BBVA is working with startups to develop better banking solutions for their clients. “Now more than ever we are firmly set on working together both with startups as well as our big corporate clients to develop better solutions and products,” he said.

For big corporations it is not enough to innovate within their organisation, today they must think out of the box and beyond their comfort zone and connect with startups to get fresh ideas. Companies like Ferrovial and Telefonica were present to share their experiences and give insights on how they have worked and succeeded with open innovation.

However, not everyone agrees with open innovation and, it is often seen by startups as poison. Philippe Gelis, CEO at Kantox was among the critics. Instead, he called on large organisations to start learning and doing, as opposed to investing and “playing around” as tools for innovation.

While competitive advantages arise during corporate and startup partnerships, the problem with innovation still tends to be structural and cultural. The startup culture is too ‘relaxed’ for corporations and the corporations are too “structured” for startups. There is still work to do in this area, where corporates and startups must start playing complementary roles for a win-win collaboration.

Nevertheless, Ken Morse, President at Entrepreneurship Ventures, was one of the big sustainers that: “Large companies need to innovate openly and rapidly with the help of young companies.”

During the closing remarks, Chesbrough pointed out some elements that define where “Open Innovation” is heading to: useful ideas will be abundant and organizations of all sizes will employ them; intellectual property will help create value, as well as capture value; the State will become an engaged, supportive actor.

Lastly, he concluded: “The future of innovation will be collaborative; your company will still need smart people, but their new mission will be to work with the smart people from other companies.”

What’s the Amazon way of doing?

On the last day, Paul Misener, VP of Global Innovation policy at Amazon, shared some of the secrets on how Amazon innovates. “Everyone is supposed to be thinking  innovatively at Amazon. Is that what’s going on at your company?” he questioned.

Innovation is blended in the Amazon culture and in every process. It is not something that is done for a particular purpose as would be the example of “Open Innovation”. It is constant and focused fully on their customers.

During the discussion with our CEO Huy Nguyen Trieu, we learned that innovating the Amazon way means we must innovate continuously. Obsessing about our customers and finding out what they need, but also being ready to fail while we are experimenting on something new. Failure is part of the startup ecosystem, and to reach success, you must go through it several times.  

“We spent a lot of effort in things that didn’t work, but we have to experiment,” he said. “If someone fails, they shouldn’t be punished, they should be rewarded.”

Misener also pointed out that Artificial Intelligence is now the key place to be, as it is the most competitive form of innovation at the moment.  

Overall, the 5th annual South Summit revealed Spain’s increasing strength and talent in innovation, as well as its potential to become a startup hub. Furthermore, it offered insight on hot topics such as rethinking the current education model to ensure society can rapidly adapt to the coming changes via constantly learning, together with the importance of building strong relationships between corporates and startups to deliver optimal innovation.

Moreover, the fruitful conversation between our CEO Huy Nguyen Trieu and the VP of Global Innovation Policy at Amazon, Paul Misener, shed light into the successful “Amazon way of innovating”, which consists on focusing on clients and maintaining an innovative mindset at all times.

All in all the South Summit was a great place to be, network and learn. We are looking forward to next year’s edition!

[/fusion_text][/fusion_builder_column][fusion_builder_column type=”1_1″ layout=”1_1″ spacing=”” center_content=”no” link=”” target=”_self” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_position=”left top” background_repeat=”no-repeat” hover_type=”none” border_size=”0″ border_color=”” border_style=”solid” border_position=”all” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_code]PHN0eWxlPgogI19mb3JtXzMxXyB7IGZvbnQtc2l6ZToxNHB4OyBsaW5lLWhlaWdodDoxLjY7IGZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IG1hcmdpbjowOyB9CiAjX2Zvcm1fMzFfICogeyBvdXRsaW5lOjA7IH0KIC5fZm9ybV9oaWRlIHsgZGlzcGxheTpub25lOyB2aXNpYmlsaXR5OmhpZGRlbjsgfQogLl9mb3JtX3Nob3cgeyBkaXNwbGF5OmJsb2NrOyB2aXNpYmlsaXR5OnZpc2libGU7IH0KICNfZm9ybV8zMV8uX2Zvcm0tdG9wIHsgdG9wOjA7IH0KICNfZm9ybV8zMV8uX2Zvcm0tYm90dG9tIHsgYm90dG9tOjA7IH0KICNfZm9ybV8zMV8uX2Zvcm0tbGVmdCB7IGxlZnQ6MDsgfQogI19mb3JtXzMxXy5fZm9ybS1yaWdodCB7IHJpZ2h0OjA7IH0KICNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0iZGF0ZSJdLCNfZm9ybV8zMV8gdGV4dGFyZWEgeyBwYWRkaW5nOjZweDsgaGVpZ2h0OmF1dG87IGJvcmRlcjojOTc5Nzk3IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czo0cHg7IGNvbG9yOiMwMDAgIWltcG9ydGFudDsgZm9udC1zaXplOjEzcHg7IC13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94OyAtbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fMzFfIHRleHRhcmVhIHsgcmVzaXplOm5vbmU7IH0KICNfZm9ybV8zMV8gLl9zdWJtaXQgeyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtZmFtaWx5OmFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MTRweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6IzhmMDcwNyAhaW1wb3J0YW50OyBib3JkZXI6MCAhaW1wb3J0YW50OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4ICFpbXBvcnRhbnQ7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHggIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czo0cHggIWltcG9ydGFudDsgY29sb3I6I2ZmZiAhaW1wb3J0YW50OyBwYWRkaW5nOjEwcHggIWltcG9ydGFudDsgfQogI19mb3JtXzMxXyAuX2Nsb3NlLWljb24geyBjdXJzb3I6cG9pbnRlcjsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2h0dHBzOi8vZDIyNmFqNGFvMXQ2MXEuY2xvdWRmcm9udC5uZXQvZXNma3lqaDF1X2Zvcm1zLWNsb3NlLWRhcmsucG5nJyk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjE0LjJweCAxNC4ycHg7IHBvc2l0aW9uOmFic29sdXRlOyBkaXNwbGF5OmJsb2NrOyB0b3A6MTFweDsgcmlnaHQ6OXB4OyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjE2LjJweDsgaGVpZ2h0OjE2LjJweDsgfQogI19mb3JtXzMxXyAuX2Nsb3NlLWljb246YmVmb3JlIHsgcG9zaXRpb246cmVsYXRpdmU7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWJvZHkgeyBtYXJnaW4tYm90dG9tOjMwcHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWltYWdlLWxlZnQgeyB3aWR0aDoxNTBweDsgZmxvYXQ6bGVmdDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tY29udGVudC1yaWdodCB7IG1hcmdpbi1sZWZ0OjE2NHB4OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1icmFuZGluZyB7IGNvbG9yOiNmZmY7IGZvbnQtc2l6ZToxMHB4OyBjbGVhcjpib3RoOyB0ZXh0LWFsaWduOmxlZnQ7IG1hcmdpbi10b3A6MzBweDsgZm9udC13ZWlnaHQ6MTAwOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1icmFuZGluZyAuX2xvZ28geyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMzBweDsgaGVpZ2h0OjE0cHg7IG1hcmdpbi10b3A6NnB4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnaHR0cHM6Ly9kMjI2YWo0YW8xdDYxcS5jbG91ZGZyb250Lm5ldC9oaDl1anFndjVfYWNsb2dvX2xpLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MTMwcHggYXV0bzsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1sYWJlbCwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IC5fZm9ybS1sYWJlbCB7IGZvbnQtd2VpZ2h0OmJvbGQ7IG1hcmdpbi1ib3R0b206NXB4OyBkaXNwbGF5OmJsb2NrOyB9CiAjX2Zvcm1fMzFfLl9kYXJrIC5fZm9ybS1icmFuZGluZyB7IGNvbG9yOiMzMzM7IH0KICNfZm9ybV8zMV8uX2RhcmsgLl9mb3JtLWJyYW5kaW5nIC5fbG9nbyB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCdodHRwczovL2QyMjZhajRhbzF0NjFxLmNsb3VkZnJvbnQubmV0L2pmdHEyYzhzX2FjbG9nb19kay5wbmcnKTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudCB7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW4tYm90dG9tOjEwcHg7IGZvbnQtc2l6ZTowOyBtYXgtd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudCAqIHsgZm9udC1zaXplOjE0cHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQuX2NsZWFyIHsgY2xlYXI6Ym90aDsgd2lkdGg6MTAwJTsgZmxvYXQ6bm9uZTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudC5fY2xlYXI6YWZ0ZXIgeyBjbGVhcjpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IGlucHV0W3R5cGU9InRleHQiXSwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IGlucHV0W3R5cGU9ImRhdGUiXSwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IHNlbGVjdCwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IHRleHRhcmVhOm5vdCguZy1yZWNhcHRjaGEtcmVzcG9uc2UpIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0KICNfZm9ybV8zMV8gLl9maWVsZC13cmFwcGVyIHsgcG9zaXRpb246cmVsYXRpdmU7IH0KICNfZm9ybV8zMV8gLl9pbmxpbmUtc3R5bGUgeyBmbG9hdDpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9InRleHQiXSB7IHdpZHRoOjE1MHB4OyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlOm5vdCguX2NsZWFyKSArIC5faW5saW5lLXN0eWxlOm5vdCguX2NsZWFyKSB7IG1hcmdpbi1sZWZ0OjIwcHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQgaW1nLl9mb3JtLWltYWdlIHsgbWF4LXdpZHRoOjEwMCU7IH0KICNfZm9ybV8zMV8gLl9jbGVhci1lbGVtZW50IHsgY2xlYXI6bGVmdDsgfQogI19mb3JtXzMxXyAuX2Z1bGxfd2lkdGggeyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybV9mdWxsX2ZpZWxkIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbToxMHB4OyB9CiAjX2Zvcm1fMzFfIGlucHV0W3R5cGU9InRleHQiXS5faGFzX2Vycm9yLCNfZm9ybV8zMV8gdGV4dGFyZWEuX2hhc19lcnJvciB7IGJvcmRlcjojZjM3YzdiIDFweCBzb2xpZDsgfQogI19mb3JtXzMxXyBpbnB1dFt0eXBlPSJjaGVja2JveCJdLl9oYXNfZXJyb3IgeyBvdXRsaW5lOiNmMzdjN2IgMXB4IHNvbGlkOyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3IgeyBkaXNwbGF5OmJsb2NrOyBwb3NpdGlvbjphYnNvbHV0ZTsgZm9udC1zaXplOjEzcHg7IHotaW5kZXg6MTAwMDAwMDE7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYWJvdmUgeyBwYWRkaW5nLWJvdHRvbTo0cHg7IHRvcDotNDFweDsgcmlnaHQ6MDsgfQogI19mb3JtXzMxXyAuX2Vycm9yLl9iZWxvdyB7IHBhZGRpbmctdG9wOjRweDsgdG9wOjEwMCU7IHJpZ2h0OjA7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYWJvdmUgLl9lcnJvci1hcnJvdyB7IGJvdHRvbTowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYmVsb3cgLl9lcnJvci1hcnJvdyB7IHRvcDowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1ib3R0b206NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV8zMV8gLl9lcnJvci1pbm5lciB7IHBhZGRpbmc6OHB4IDEycHg7IGJhY2tncm91bmQtY29sb3I6I2YzN2M3YjsgZm9udC1zaXplOjEzcHg7IGZvbnQtZmFtaWx5OmFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3ItaW5uZXIuX2Zvcm1fZXJyb3IgeyBtYXJnaW4tYm90dG9tOjVweDsgdGV4dC1hbGlnbjpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5fYnV0dG9uLXdyYXBwZXIgLl9lcnJvci1pbm5lci5fZm9ybV9lcnJvciB7IHBvc2l0aW9uOnN0YXRpYzsgfQogI19mb3JtXzMxXyAuX2Vycm9yLWlubmVyLl9ub19hcnJvdyB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogI19mb3JtXzMxXyAuX2Vycm9yLWFycm93IHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjA7IGhlaWdodDowOyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3ItaHRtbCB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogLnBpa2Etc2luZ2xlIHsgei1pbmRleDoxMDAwMDAwMSAhaW1wb3J0YW50OyB9CiBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KSBhbmQgKG1heC13aWR0aDo2NjdweCkgeyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgZGlzcGxheTpub25lOyB9CiAjX2Zvcm1fMzFfIHsgbWFyZ2luOjA7IHdpZHRoOjEwMCU7IG1pbi13aWR0aDoxMDAlOyBtYXgtd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fMzFfICogeyAtd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgLW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgZm9udC1zaXplOjFlbTsgfQogI19mb3JtXzMxXyAuX2Zvcm0tY29udGVudCB7IG1hcmdpbjowOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1pbm5lciB7IGRpc3BsYXk6YmxvY2s7IG1pbi13aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS10aXRsZSwjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luLXRvcDowOyBtYXJnaW4tcmlnaHQ6MDsgbWFyZ2luLWxlZnQ6MDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tdGl0bGUgeyBmb250LXNpemU6MS4yZW07IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQgeyBtYXJnaW46MCAwIDIwcHg7IHBhZGRpbmc6MDsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX2Zvcm0tZWxlbWVudCwjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV8zMV8gbGFiZWwsI19mb3JtXzMxXyBwLCNfZm9ybV8zMV8gdGV4dGFyZWE6bm90KC5nLXJlY2FwdGNoYS1yZXNwb25zZSkgeyBmbG9hdDpub25lOyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fcm93Ll9jaGVja2JveC1yYWRpbyBsYWJlbCB7IGRpc3BsYXk6aW5saW5lOyB9CiAjX2Zvcm1fMzFfIC5fcm93LCNfZm9ybV8zMV8gcCwjX2Zvcm1fMzFfIGxhYmVsIHsgbWFyZ2luLWJvdHRvbTowLjdlbTsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX3JvdyBpbnB1dFt0eXBlPSJjaGVja2JveCJdLCNfZm9ybV8zMV8gLl9yb3cgaW5wdXRbdHlwZT0icmFkaW8iXSB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHZlcnRpY2FsLWFsaWduOm1pZGRsZSAhaW1wb3J0YW50OyB9CiAjX2Zvcm1fMzFfIC5fcm93IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gKyBzcGFuIGxhYmVsIHsgZGlzcGxheTppbmxpbmU7IH0KICNfZm9ybV8zMV8gLl9yb3cgc3BhbiBsYWJlbCB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHdpZHRoOmluaXRpYWwgIWltcG9ydGFudDsgdmVydGljYWwtYWxpZ246bWlkZGxlICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWltYWdlIHsgbWF4LXdpZHRoOjEwMCU7IGhlaWdodDphdXRvICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdIHsgcGFkZGluZy1sZWZ0OjEwcHg7IHBhZGRpbmctcmlnaHQ6MTBweDsgZm9udC1zaXplOjE2cHg7IGxpbmUtaGVpZ2h0OjEuM2VtOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgfQogI19mb3JtXzMxXyBpbnB1dFt0eXBlPSJyYWRpbyJdLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB3aWR0aDoxLjNlbTsgaGVpZ2h0OjEuM2VtOyBmb250LXNpemU6MWVtOyBtYXJnaW46MCAwLjNlbSAwIDA7IHZlcnRpY2FsLWFsaWduOmJhc2VsaW5lOyB9CiAjX2Zvcm1fMzFfIGJ1dHRvblt0eXBlPSJzdWJtaXQiXSB7IHBhZGRpbmc6MjBweDsgZm9udC1zaXplOjEuNWVtOyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luOjIwcHggMCAwICFpbXBvcnRhbnQ7IH0KIH0KICNfZm9ybV8zMV8geyBwb3NpdGlvbjpyZWxhdGl2ZTsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW46MjVweCBhdXRvIDA7IHBhZGRpbmc6MjBweDsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7ICp6b29tOjE7IGJhY2tncm91bmQ6I2ZmZiAhaW1wb3J0YW50OyBib3JkZXI6MHB4IHNvbGlkICNiMGIwYjAgIWltcG9ydGFudDsgd2lkdGg6NTAwcHg7IC1tb3otYm9yZGVyLXJhZGl1czowcHggIWltcG9ydGFudDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjBweCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjBweCAhaW1wb3J0YW50OyBjb2xvcjojMDAwICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gLl9mb3JtLXRpdGxlIHsgZm9udC1zaXplOjIycHg7IGxpbmUtaGVpZ2h0OjIycHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLWJvdHRvbTowOyB9CiAjX2Zvcm1fMzFfOmJlZm9yZSwjX2Zvcm1fMzFfOmFmdGVyIHsgY29udGVudDoiICI7IGRpc3BsYXk6dGFibGU7IH0KICNfZm9ybV8zMV86YWZ0ZXIgeyBjbGVhcjpib3RoOyB9CiAjX2Zvcm1fMzFfLl9pbmxpbmUtc3R5bGUgeyB3aWR0aDphdXRvOyBkaXNwbGF5OmlubGluZS1ibG9jazsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9InRleHQiXSwjX2Zvcm1fMzFfLl9pbmxpbmUtc3R5bGUgaW5wdXRbdHlwZT0iZGF0ZSJdIHsgcGFkZGluZzoxMHB4IDEycHg7IH0KICNfZm9ybV8zMV8uX2lubGluZS1zdHlsZSBidXR0b24uX2lubGluZS1zdHlsZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6MjdweDsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIHAgeyBtYXJnaW46MDsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIC5fYnV0dG9uLXdyYXBwZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luOjI3cHggMTIuNXB4IDAgMjBweDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tdGhhbmsteW91IHsgcG9zaXRpb246cmVsYXRpdmU7IGxlZnQ6MDsgcmlnaHQ6MDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxOHB4OyB9CiBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KSBhbmQgKG1heC13aWR0aDo2NjdweCkgeyAjX2Zvcm1fMzFfLl9pbmxpbmUtZm9ybS5faW5saW5lLXN0eWxlIC5faW5saW5lLXN0eWxlLl9idXR0b24td3JhcHBlciB7IG1hcmdpbi10b3A6MjBweCAhaW1wb3J0YW50OyBtYXJnaW4tbGVmdDowICFpbXBvcnRhbnQ7IH0KIH0KPC9zdHlsZT4KPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249Imh0dHBzOi8vY2Z0ZS5hY3RpdmVob3N0ZWQuY29tL3Byb2MucGhwIiBpZD0iX2Zvcm1fMzFfIiBjbGFzcz0iX2Zvcm0gX2Zvcm1fMzEgX2lubGluZS1mb3JtICBfZGFyayIgbm92YWxpZGF0ZT4KICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ1IiB2YWx1ZT0iMzEiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZiIgdmFsdWU9IjMxIiAvPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InMiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYyIgdmFsdWU9IjAiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibSIgdmFsdWU9IjAiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3ViIiAvPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InYiIHZhbHVlPSIyIiAvPgogIDxkaXYgY2xhc3M9Il9mb3JtLWNvbnRlbnQiPgogICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDU0MjQzOTgyIF9mdWxsX3dpZHRoIF9jbGVhciIgPgogICAgICA8ZGl2IGNsYXNzPSJfZm9ybS10aXRsZSI+CiAgICAgICAgU3Vic2NyaWJlIHRvIENGVEUmIzAzOTtzIEV2ZW50IE5ld3NsZXR0ZXIKICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX3g2MDkzMzQ3MiBfZnVsbF93aWR0aCAiID4KICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgRmlyc3QgTmFtZSoKICAgICAgPC9sYWJlbD4KICAgICAgPGRpdiBjbGFzcz0iX2ZpZWxkLXdyYXBwZXIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaXJzdG5hbWUiIHBsYWNlaG9sZGVyPSJUeXBlIHlvdXIgZmlyc3QgbmFtZSIgcmVxdWlyZWQvPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDQyNjQ4NjAwIF9mdWxsX3dpZHRoICIgPgogICAgICA8bGFiZWwgY2xhc3M9Il9mb3JtLWxhYmVsIj4KICAgICAgICBMYXN0IE5hbWUqCiAgICAgIDwvbGFiZWw+CiAgICAgIDxkaXYgY2xhc3M9Il9maWVsZC13cmFwcGVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibGFzdG5hbWUiIHBsYWNlaG9sZGVyPSJUeXBlIHlvdXIgbGFzdCBuYW1lIiByZXF1aXJlZC8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF94MDQ5NzQ5MTkgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgIEVtYWlsKgogICAgICA8L2xhYmVsPgogICAgICA8ZGl2IGNsYXNzPSJfZmllbGQtd3JhcHBlciI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImVtYWlsIiBwbGFjZWhvbGRlcj0iVHlwZSB5b3VyIGVtYWlsIiByZXF1aXJlZC8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF9maWVsZDEgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgIENvdW50cnkqCiAgICAgIDwvbGFiZWw+CiAgICAgIDxkaXYgY2xhc3M9Il9maWVsZC13cmFwcGVyIj4KICAgICAgICA8c2VsZWN0IG5hbWU9ImZpZWxkWzFdIiByZXF1aXJlZD4KICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFmZ2hhbmlzdGFuIiA+CiAgICAgICAgICAgIEFmZ2hhbmlzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFsYmFuaWEiID4KICAgICAgICAgICAgQWxiYW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBbGdlcmlhIiA+CiAgICAgICAgICAgIEFsZ2VyaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW1lcmljYW4gU2Ftb2EiID4KICAgICAgICAgICAgQW1lcmljYW4gU2Ftb2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW5kb3JyYSIgPgogICAgICAgICAgICBBbmRvcnJhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFuZ29sYSIgPgogICAgICAgICAgICBBbmdvbGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW5ndWlsbGEiID4KICAgICAgICAgICAgQW5ndWlsbGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW50YXJjdGljYSIgPgogICAgICAgICAgICBBbnRhcmN0aWNhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFudGlndWEgYW5kIEJhcmJ1ZGEiID4KICAgICAgICAgICAgQW50aWd1YSBhbmQgQmFyYnVkYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBcmdlbnRpbmEiID4KICAgICAgICAgICAgQXJnZW50aW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFybWVuaWEiID4KICAgICAgICAgICAgQXJtZW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBcnViYSIgPgogICAgICAgICAgICBBcnViYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBdXN0cmFsaWEiID4KICAgICAgICAgICAgQXVzdHJhbGlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkF1c3RyaWEiID4KICAgICAgICAgICAgQXVzdHJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBemVyYmFpamFuIiA+CiAgICAgICAgICAgIEF6ZXJiYWlqYW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmFoYW1hcyIgPgogICAgICAgICAgICBCYWhhbWFzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJhaHJhaW4iID4KICAgICAgICAgICAgQmFocmFpbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCYW5nbGFkZXNoIiA+CiAgICAgICAgICAgIEJhbmdsYWRlc2gKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmFyYmFkb3MiID4KICAgICAgICAgICAgQmFyYmFkb3MKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmVsYXJ1cyIgPgogICAgICAgICAgICBCZWxhcnVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlbGdpdW0iID4KICAgICAgICAgICAgQmVsZ2l1bQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCZWxpemUiID4KICAgICAgICAgICAgQmVsaXplCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlbmluIiA+CiAgICAgICAgICAgIEJlbmluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlcm11ZGEiID4KICAgICAgICAgICAgQmVybXVkYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCaHV0YW4iID4KICAgICAgICAgICAgQmh1dGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJvbGl2aWEiID4KICAgICAgICAgICAgQm9saXZpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCb3NuaWEgYW5kIEhlcnplZ292aW5hIiA+CiAgICAgICAgICAgIEJvc25pYSBhbmQgSGVyemVnb3ZpbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQm90c3dhbmEiID4KICAgICAgICAgICAgQm90c3dhbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQm91dmV0IElzbGFuZCIgPgogICAgICAgICAgICBCb3V2ZXQgSXNsYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJyYXppbCIgPgogICAgICAgICAgICBCcmF6aWwKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQnJpdGlzaCBJbmRpYW4gT2NlYW4gVGVycml0b3J5IiA+CiAgICAgICAgICAgIEJyaXRpc2ggSW5kaWFuIE9jZWFuIFRlcnJpdG9yeQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCcnVuZWkgRGFydXNzYWxhbSIgPgogICAgICAgICAgICBCcnVuZWkgRGFydXNzYWxhbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCdWxnYXJpYSIgPgogICAgICAgICAgICBCdWxnYXJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCdXJraW5hIEZhc28iID4KICAgICAgICAgICAgQnVya2luYSBGYXNvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJ1cnVuZGkiID4KICAgICAgICAgICAgQnVydW5kaQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW1ib2RpYSIgPgogICAgICAgICAgICBDYW1ib2RpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW1lcm9vbiIgPgogICAgICAgICAgICBDYW1lcm9vbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW5hZGEiID4KICAgICAgICAgICAgQ2FuYWRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNhcGUgVmVyZGUiID4KICAgICAgICAgICAgQ2FwZSBWZXJkZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYXltYW4gSXNsYW5kcyIgPgogICAgICAgICAgICBDYXltYW4gSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMiID4KICAgICAgICAgICAgQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNoYWQiID4KICAgICAgICAgICAgQ2hhZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaGlsZSIgPgogICAgICAgICAgICBDaGlsZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaGluYSIgPgogICAgICAgICAgICBDaGluYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaHJpc3RtYXMgSXNsYW5kIiA+CiAgICAgICAgICAgIENocmlzdG1hcyBJc2xhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29jb3MgKEtlZWxpbmcpIElzbGFuZHMiID4KICAgICAgICAgICAgQ29jb3MgKEtlZWxpbmcpIElzbGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29sb21iaWEiID4KICAgICAgICAgICAgQ29sb21iaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29tb3JvcyIgPgogICAgICAgICAgICBDb21vcm9zCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvbmdvIiA+CiAgICAgICAgICAgIENvbmdvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvbmdvLCB0aGUgRGVtb2NyYXRpYyBSZXB1YmxpYyBvZiB0aGUiID4KICAgICAgICAgICAgQ29uZ28sIHRoZSBEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDb29rIElzbGFuZHMiID4KICAgICAgICAgICAgQ29vayBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvc3RhIFJpY2EiID4KICAgICAgICAgICAgQ29zdGEgUmljYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDb3RlIEQmIzAzOTtJdm9pcmUiID4KICAgICAgICAgICAgQ290ZSBEJiMwMzk7SXZvaXJlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNyb2F0aWEiID4KICAgICAgICAgICAgQ3JvYXRpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDdWJhIiA+CiAgICAgICAgICAgIEN1YmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ3lwcnVzIiA+CiAgICAgICAgICAgIEN5cHJ1cwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDemVjaCBSZXB1YmxpYyIgPgogICAgICAgICAgICBDemVjaCBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJEZW5tYXJrIiA+CiAgICAgICAgICAgIERlbm1hcmsKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRGppYm91dGkiID4KICAgICAgICAgICAgRGppYm91dGkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRG9taW5pY2EiID4KICAgICAgICAgICAgRG9taW5pY2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRG9taW5pY2FuIFJlcHVibGljIiA+CiAgICAgICAgICAgIERvbWluaWNhbiBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFY3VhZG9yIiA+CiAgICAgICAgICAgIEVjdWFkb3IKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRWd5cHQiID4KICAgICAgICAgICAgRWd5cHQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRWwgU2FsdmFkb3IiID4KICAgICAgICAgICAgRWwgU2FsdmFkb3IKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRXF1YXRvcmlhbCBHdWluZWEiID4KICAgICAgICAgICAgRXF1YXRvcmlhbCBHdWluZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRXJpdHJlYSIgPgogICAgICAgICAgICBFcml0cmVhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkVzdG9uaWEiID4KICAgICAgICAgICAgRXN0b25pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFdGhpb3BpYSIgPgogICAgICAgICAgICBFdGhpb3BpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGYWxrbGFuZCBJc2xhbmRzIChNYWx2aW5hcykiID4KICAgICAgICAgICAgRmFsa2xhbmQgSXNsYW5kcyAoTWFsdmluYXMpCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZhcm9lIElzbGFuZHMiID4KICAgICAgICAgICAgRmFyb2UgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGaWppIiA+CiAgICAgICAgICAgIEZpamkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRmlubGFuZCIgPgogICAgICAgICAgICBGaW5sYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZyYW5jZSIgPgogICAgICAgICAgICBGcmFuY2UKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRnJlbmNoIEd1aWFuYSIgPgogICAgICAgICAgICBGcmVuY2ggR3VpYW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZyZW5jaCBQb2x5bmVzaWEiID4KICAgICAgICAgICAgRnJlbmNoIFBvbHluZXNpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMiID4KICAgICAgICAgICAgRnJlbmNoIFNvdXRoZXJuIFRlcnJpdG9yaWVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdhYm9uIiA+CiAgICAgICAgICAgIEdhYm9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdhbWJpYSIgPgogICAgICAgICAgICBHYW1iaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR2VvcmdpYSIgPgogICAgICAgICAgICBHZW9yZ2lhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikdlcm1hbnkiID4KICAgICAgICAgICAgR2VybWFueQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHaGFuYSIgPgogICAgICAgICAgICBHaGFuYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHaWJyYWx0YXIiID4KICAgICAgICAgICAgR2licmFsdGFyCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdyZWVjZSIgPgogICAgICAgICAgICBHcmVlY2UKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3JlZW5sYW5kIiA+CiAgICAgICAgICAgIEdyZWVubGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHcmVuYWRhIiA+CiAgICAgICAgICAgIEdyZW5hZGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3VhZGVsb3VwZSIgPgogICAgICAgICAgICBHdWFkZWxvdXBlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1YW0iID4KICAgICAgICAgICAgR3VhbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHdWF0ZW1hbGEiID4KICAgICAgICAgICAgR3VhdGVtYWxhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1ZXJuc2V5IiA+CiAgICAgICAgICAgIEd1ZXJuc2V5CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1aW5lYSIgPgogICAgICAgICAgICBHdWluZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3VpbmVhLUJpc3NhdSIgPgogICAgICAgICAgICBHdWluZWEtQmlzc2F1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1eWFuYSIgPgogICAgICAgICAgICBHdXlhbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSGFpdGkiID4KICAgICAgICAgICAgSGFpdGkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSGVhcmQgSXNsYW5kIGFuZCBNY2RvbmFsZCBJc2xhbmRzIiA+CiAgICAgICAgICAgIEhlYXJkIElzbGFuZCBhbmQgTWNkb25hbGQgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKSIgPgogICAgICAgICAgICBIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb25kdXJhcyIgPgogICAgICAgICAgICBIb25kdXJhcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb25nIEtvbmciID4KICAgICAgICAgICAgSG9uZyBLb25nCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikh1bmdhcnkiID4KICAgICAgICAgICAgSHVuZ2FyeQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJY2VsYW5kIiA+CiAgICAgICAgICAgIEljZWxhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSW5kaWEiID4KICAgICAgICAgICAgSW5kaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSW5kb25lc2lhIiA+CiAgICAgICAgICAgIEluZG9uZXNpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJcmFuLCBJc2xhbWljIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIElyYW4sIElzbGFtaWMgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSXJhcSIgPgogICAgICAgICAgICBJcmFxCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IklyZWxhbmQiID4KICAgICAgICAgICAgSXJlbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJc3JhZWwiID4KICAgICAgICAgICAgSXNyYWVsCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikl0YWx5IiA+CiAgICAgICAgICAgIEl0YWx5CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkphbWFpY2EiID4KICAgICAgICAgICAgSmFtYWljYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJKYXBhbiIgPgogICAgICAgICAgICBKYXBhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJKb3JkYW4iID4KICAgICAgICAgICAgSm9yZGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkthemFraHN0YW4iID4KICAgICAgICAgICAgS2F6YWtoc3RhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLZW55YSIgPgogICAgICAgICAgICBLZW55YQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLaXJpYmF0aSIgPgogICAgICAgICAgICBLaXJpYmF0aQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLb3JlYSwgRGVtb2NyYXRpYyBQZW9wbGUmIzAzOTtzIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIEtvcmVhLCBEZW1vY3JhdGljIFBlb3BsZSYjMDM5O3MgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS29yZWEsIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIEtvcmVhLCBSZXB1YmxpYyBvZgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLdXdhaXQiID4KICAgICAgICAgICAgS3V3YWl0CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikt5cmd5enN0YW4iID4KICAgICAgICAgICAgS3lyZ3l6c3RhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMYW8gUGVvcGxlJiMwMzk7cyBEZW1vY3JhdGljIFJlcHVibGljIiA+CiAgICAgICAgICAgIExhbyBQZW9wbGUmIzAzOTtzIERlbW9jcmF0aWMgUmVwdWJsaWMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGF0dmlhIiA+CiAgICAgICAgICAgIExhdHZpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMZWJhbm9uIiA+CiAgICAgICAgICAgIExlYmFub24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGVzb3RobyIgPgogICAgICAgICAgICBMZXNvdGhvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkxpYmVyaWEiID4KICAgICAgICAgICAgTGliZXJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMaWJ5YW4gQXJhYiBKYW1haGlyaXlhIiA+CiAgICAgICAgICAgIExpYnlhbiBBcmFiIEphbWFoaXJpeWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGllY2h0ZW5zdGVpbiIgPgogICAgICAgICAgICBMaWVjaHRlbnN0ZWluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkxpdGh1YW5pYSIgPgogICAgICAgICAgICBMaXRodWFuaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTHV4ZW1ib3VyZyIgPgogICAgICAgICAgICBMdXhlbWJvdXJnCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hY2FvIiA+CiAgICAgICAgICAgIE1hY2FvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hY2Vkb25pYSwgdGhlIEZvcm1lciBZdWdvc2xhdiBSZXB1YmxpYyBvZiIgPgogICAgICAgICAgICBNYWNlZG9uaWEsIHRoZSBGb3JtZXIgWXVnb3NsYXYgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFkYWdhc2NhciIgPgogICAgICAgICAgICBNYWRhZ2FzY2FyCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hbGF3aSIgPgogICAgICAgICAgICBNYWxhd2kKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsYXlzaWEiID4KICAgICAgICAgICAgTWFsYXlzaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsZGl2ZXMiID4KICAgICAgICAgICAgTWFsZGl2ZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsaSIgPgogICAgICAgICAgICBNYWxpCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hbHRhIiA+CiAgICAgICAgICAgIE1hbHRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hcnNoYWxsIElzbGFuZHMiID4KICAgICAgICAgICAgTWFyc2hhbGwgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNYXJ0aW5pcXVlIiA+CiAgICAgICAgICAgIE1hcnRpbmlxdWUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWF1cml0YW5pYSIgPgogICAgICAgICAgICBNYXVyaXRhbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hdXJpdGl1cyIgPgogICAgICAgICAgICBNYXVyaXRpdXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWF5b3R0ZSIgPgogICAgICAgICAgICBNYXlvdHRlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1leGljbyIgPgogICAgICAgICAgICBNZXhpY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWljcm9uZXNpYSwgRmVkZXJhdGVkIFN0YXRlcyBvZiIgPgogICAgICAgICAgICBNaWNyb25lc2lhLCBGZWRlcmF0ZWQgU3RhdGVzIG9mCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbGRvdmEsIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIE1vbGRvdmEsIFJlcHVibGljIG9mCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbmFjbyIgPgogICAgICAgICAgICBNb25hY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW9uZ29saWEiID4KICAgICAgICAgICAgTW9uZ29saWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW9udGVuZWdybyIgPgogICAgICAgICAgICBNb250ZW5lZ3JvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbnRzZXJyYXQiID4KICAgICAgICAgICAgTW9udHNlcnJhdAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNb3JvY2NvIiA+CiAgICAgICAgICAgIE1vcm9jY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW96YW1iaXF1ZSIgPgogICAgICAgICAgICBNb3phbWJpcXVlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik15YW5tYXIiID4KICAgICAgICAgICAgTXlhbm1hcgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOYW1pYmlhIiA+CiAgICAgICAgICAgIE5hbWliaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmF1cnUiID4KICAgICAgICAgICAgTmF1cnUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmVwYWwiID4KICAgICAgICAgICAgTmVwYWwKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV0aGVybGFuZHMiID4KICAgICAgICAgICAgTmV0aGVybGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV0aGVybGFuZHMgQW50aWxsZXMiID4KICAgICAgICAgICAgTmV0aGVybGFuZHMgQW50aWxsZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV3IENhbGVkb25pYSIgPgogICAgICAgICAgICBOZXcgQ2FsZWRvbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5ldyBaZWFsYW5kIiA+CiAgICAgICAgICAgIE5ldyBaZWFsYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5pY2FyYWd1YSIgPgogICAgICAgICAgICBOaWNhcmFndWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmlnZXIiID4KICAgICAgICAgICAgTmlnZXIKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmlnZXJpYSIgPgogICAgICAgICAgICBOaWdlcmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5pdWUiID4KICAgICAgICAgICAgTml1ZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOb3Jmb2xrIElzbGFuZCIgPgogICAgICAgICAgICBOb3Jmb2xrIElzbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOb3J0aGVybiBNYXJpYW5hIElzbGFuZHMiID4KICAgICAgICAgICAgTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5vcndheSIgPgogICAgICAgICAgICBOb3J3YXkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iT21hbiIgPgogICAgICAgICAgICBPbWFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBha2lzdGFuIiA+CiAgICAgICAgICAgIFBha2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhbGF1IiA+CiAgICAgICAgICAgIFBhbGF1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhbGVzdGluaWFuIFRlcnJpdG9yeSwgT2NjdXBpZWQiID4KICAgICAgICAgICAgUGFsZXN0aW5pYW4gVGVycml0b3J5LCBPY2N1cGllZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQYW5hbWEiID4KICAgICAgICAgICAgUGFuYW1hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhcHVhIE5ldyBHdWluZWEiID4KICAgICAgICAgICAgUGFwdWEgTmV3IEd1aW5lYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQYXJhZ3VheSIgPgogICAgICAgICAgICBQYXJhZ3VheQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQZXJ1IiA+CiAgICAgICAgICAgIFBlcnUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGhpbGlwcGluZXMiID4KICAgICAgICAgICAgUGhpbGlwcGluZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGl0Y2Fpcm4iID4KICAgICAgICAgICAgUGl0Y2Fpcm4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUG9sYW5kIiA+CiAgICAgICAgICAgIFBvbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQb3J0dWdhbCIgPgogICAgICAgICAgICBQb3J0dWdhbAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQdWVydG8gUmljbyIgPgogICAgICAgICAgICBQdWVydG8gUmljbwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJRYXRhciIgPgogICAgICAgICAgICBRYXRhcgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJSZXVuaW9uIiA+CiAgICAgICAgICAgIFJldW5pb24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUm9tYW5pYSIgPgogICAgICAgICAgICBSb21hbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlJ1c3NpYW4gRmVkZXJhdGlvbiIgPgogICAgICAgICAgICBSdXNzaWFuIEZlZGVyYXRpb24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUndhbmRhIiA+CiAgICAgICAgICAgIFJ3YW5kYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTYWludCBIZWxlbmEiID4KICAgICAgICAgICAgU2FpbnQgSGVsZW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhaW50IEtpdHRzIGFuZCBOZXZpcyIgPgogICAgICAgICAgICBTYWludCBLaXR0cyBhbmQgTmV2aXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2FpbnQgTHVjaWEiID4KICAgICAgICAgICAgU2FpbnQgTHVjaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2FpbnQgUGllcnJlIGFuZCBNaXF1ZWxvbiIgPgogICAgICAgICAgICBTYWludCBQaWVycmUgYW5kIE1pcXVlbG9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzIiA+CiAgICAgICAgICAgIFNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhbW9hIiA+CiAgICAgICAgICAgIFNhbW9hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhbiBNYXJpbm8iID4KICAgICAgICAgICAgU2FuIE1hcmlubwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTYW8gVG9tZSBhbmQgUHJpbmNpcGUiID4KICAgICAgICAgICAgU2FvIFRvbWUgYW5kIFByaW5jaXBlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhdWRpIEFyYWJpYSIgPgogICAgICAgICAgICBTYXVkaSBBcmFiaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2VuZWdhbCIgPgogICAgICAgICAgICBTZW5lZ2FsCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNlcmJpYSIgPgogICAgICAgICAgICBTZXJiaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2V5Y2hlbGxlcyIgPgogICAgICAgICAgICBTZXljaGVsbGVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNpZXJyYSBMZW9uZSIgPgogICAgICAgICAgICBTaWVycmEgTGVvbmUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2luZ2Fwb3JlIiA+CiAgICAgICAgICAgIFNpbmdhcG9yZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTbG92YWtpYSIgPgogICAgICAgICAgICBTbG92YWtpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTbG92ZW5pYSIgPgogICAgICAgICAgICBTbG92ZW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTb2xvbW9uIElzbGFuZHMiID4KICAgICAgICAgICAgU29sb21vbiBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNvbWFsaWEiID4KICAgICAgICAgICAgU29tYWxpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTb3V0aCBBZnJpY2EiID4KICAgICAgICAgICAgU291dGggQWZyaWNhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzIiA+CiAgICAgICAgICAgIFNvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNwYWluIiA+CiAgICAgICAgICAgIFNwYWluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNyaSBMYW5rYSIgPgogICAgICAgICAgICBTcmkgTGFua2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3VkYW4iID4KICAgICAgICAgICAgU3VkYW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3VyaW5hbWUiID4KICAgICAgICAgICAgU3VyaW5hbWUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3ZhbGJhcmQgYW5kIEphbiBNYXllbiIgPgogICAgICAgICAgICBTdmFsYmFyZCBhbmQgSmFuIE1heWVuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlN3YXppbGFuZCIgPgogICAgICAgICAgICBTd2F6aWxhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3dlZGVuIiA+CiAgICAgICAgICAgIFN3ZWRlbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTd2l0emVybGFuZCIgPgogICAgICAgICAgICBTd2l0emVybGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTeXJpYW4gQXJhYiBSZXB1YmxpYyIgPgogICAgICAgICAgICBTeXJpYW4gQXJhYiBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUYWl3YW4sIFByb3ZpbmNlIG9mIENoaW5hIiA+CiAgICAgICAgICAgIFRhaXdhbiwgUHJvdmluY2Ugb2YgQ2hpbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVGFqaWtpc3RhbiIgPgogICAgICAgICAgICBUYWppa2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRhbnphbmlhLCBVbml0ZWQgUmVwdWJsaWMgb2YiID4KICAgICAgICAgICAgVGFuemFuaWEsIFVuaXRlZCBSZXB1YmxpYyBvZgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUaGFpbGFuZCIgPgogICAgICAgICAgICBUaGFpbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUaW1vci1MZXN0ZSIgPgogICAgICAgICAgICBUaW1vci1MZXN0ZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUb2dvIiA+CiAgICAgICAgICAgIFRvZ28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVG9rZWxhdSIgPgogICAgICAgICAgICBUb2tlbGF1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRvbmdhIiA+CiAgICAgICAgICAgIFRvbmdhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRyaW5pZGFkIGFuZCBUb2JhZ28iID4KICAgICAgICAgICAgVHJpbmlkYWQgYW5kIFRvYmFnbwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUdW5pc2lhIiA+CiAgICAgICAgICAgIFR1bmlzaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVHVya2V5IiA+CiAgICAgICAgICAgIFR1cmtleQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUdXJrbWVuaXN0YW4iID4KICAgICAgICAgICAgVHVya21lbmlzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlR1cmtzIGFuZCBDYWljb3MgSXNsYW5kcyIgPgogICAgICAgICAgICBUdXJrcyBhbmQgQ2FpY29zIElzbGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVHV2YWx1IiA+CiAgICAgICAgICAgIFR1dmFsdQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVZ2FuZGEiID4KICAgICAgICAgICAgVWdhbmRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlVrcmFpbmUiID4KICAgICAgICAgICAgVWtyYWluZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgQXJhYiBFbWlyYXRlcyIgPgogICAgICAgICAgICBVbml0ZWQgQXJhYiBFbWlyYXRlcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgS2luZ2RvbSIgPgogICAgICAgICAgICBVbml0ZWQgS2luZ2RvbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgU3RhdGVzIiA+CiAgICAgICAgICAgIFVuaXRlZCBTdGF0ZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVW5pdGVkIFN0YXRlcyBNaW5vciBPdXRseWluZyBJc2xhbmRzIiA+CiAgICAgICAgICAgIFVuaXRlZCBTdGF0ZXMgTWlub3IgT3V0bHlpbmcgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVcnVndWF5IiA+CiAgICAgICAgICAgIFVydWd1YXkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVXpiZWtpc3RhbiIgPgogICAgICAgICAgICBVemJla2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlZhbnVhdHUiID4KICAgICAgICAgICAgVmFudWF0dQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWZW5lenVlbGEiID4KICAgICAgICAgICAgVmVuZXp1ZWxhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlZpZXRuYW0iID4KICAgICAgICAgICAgVmlldG5hbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWaXJnaW4gSXNsYW5kcywgQnJpdGlzaCIgPgogICAgICAgICAgICBWaXJnaW4gSXNsYW5kcywgQnJpdGlzaAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWaXJnaW4gSXNsYW5kcywgVS5zLiIgPgogICAgICAgICAgICBWaXJnaW4gSXNsYW5kcywgVS5zLgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJXYWxsaXMgYW5kIEZ1dHVuYSIgPgogICAgICAgICAgICBXYWxsaXMgYW5kIEZ1dHVuYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJXZXN0ZXJuIFNhaGFyYSIgPgogICAgICAgICAgICBXZXN0ZXJuIFNhaGFyYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJZZW1lbiIgPgogICAgICAgICAgICBZZW1lbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJaYW1iaWEiID4KICAgICAgICAgICAgWmFtYmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlppbWJhYndlIiA+CiAgICAgICAgICAgIFppbWJhYndlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNHIiA+CiAgICAgICAgICAgIFNHCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNBTkFEQSIgPgogICAgICAgICAgICBDQU5BREEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS29yZWEiID4KICAgICAgICAgICAgS29yZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIiA+CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikx1eGVtYm91cmdoIiA+CiAgICAgICAgICAgIEx1eGVtYm91cmdoCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1ZIiA+CiAgICAgICAgICAgIE1ZCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkVTV0FSVElOSSIgPgogICAgICAgICAgICBFU1dBUlRJTkkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZVN3YXRpbmkgIiA+CiAgICAgICAgICAgIGVTd2F0aW5pCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNaIiA+CiAgICAgICAgICAgIFNaCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNBIiA+CiAgICAgICAgICAgIENBCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdyZWF0IEJyaXRhaW4iID4KICAgICAgICAgICAgR3JlYXQgQnJpdGFpbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJSdXNzaWEiID4KICAgICAgICAgICAgUnVzc2lhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkhvbmcgS29uZyBTQVIgQ2hpbmEiID4KICAgICAgICAgICAgSG9uZyBLb25nIFNBUiBDaGluYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMb25kb24iID4KICAgICAgICAgICAgTG9uZG9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICA8L3NlbGVjdD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX2ZpZWxkMiBfZnVsbF93aWR0aCAiID4KICAgICAgPGRpdiBjbGFzcz0iX3JvdyI+CiAgICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgICBQcml2YWN5IFBvbGljeSoKICAgICAgICA8L2xhYmVsPgogICAgICA8L2Rpdj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmllbGRbMl1bXSIgdmFsdWU9In58Ij4KICAgICAgPGRpdiBjbGFzcz0iX3JvdyBfY2hlY2tib3gtcmFkaW8iPgogICAgICAgIDxpbnB1dCBpZD0iZmllbGRfMkkgcmVhZCBhbmQgdW5kZXJzdG9vZCBDRlRFIFByaXZhY3kgUG9saWN5ICh3d3cuY2Z0ZS5lZHVjYXRpb24vcHJpdmFjeS1wb2xpY3kpIiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmllbGRbMl1bXSIgdmFsdWU9IkkgcmVhZCBhbmQgdW5kZXJzdG9vZCBDRlRFIFByaXZhY3kgUG9saWN5ICh3d3cuY2Z0ZS5lZHVjYXRpb24vcHJpdmFjeS1wb2xpY3kpIiBjbGFzcz0iYW55IiAgcmVxdWlyZWQ+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8ySSByZWFkIGFuZCB1bmRlcnN0b29kIENGVEUgUHJpdmFjeSBQb2xpY3kgKHd3dy5jZnRlLmVkdWNhdGlvbi9wcml2YWN5LXBvbGljeSkiPgogICAgICAgICAgICBJIHJlYWQgYW5kIHVuZGVyc3Rvb2QgQ0ZURSBQcml2YWN5IFBvbGljeSAod3d3LmNmdGUuZWR1Y2F0aW9uL3ByaXZhY3ktcG9saWN5KQogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF9maWVsZDMgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3ciPgogICAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgICAgQ29tbXVuaWNhdGlvbiBvcHRpb25zCiAgICAgICAgPC9sYWJlbD4KICAgICAgPC9kaXY+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpZWxkWzNdW10iIHZhbHVlPSJ+fCI+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3cgX2NoZWNrYm94LXJhZGlvIj4KICAgICAgICA8aW5wdXQgaWQ9ImZpZWxkXzNJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbCIgdHlwZT0iY2hlY2tib3giIG5hbWU9ImZpZWxkWzNdW10iIHZhbHVlPSJJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbCIgICA+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8zSSYjMDM5O20gaGFwcHkgdG8gcmVjZWl2ZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IENGVEUmIzAzOTtzIGNvdXJzZXMgYnkgZW1haWwiPgogICAgICAgICAgICBJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbAogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJfcm93IF9jaGVja2JveC1yYWRpbyI+CiAgICAgICAgPGlucHV0IGlkPSJmaWVsZF8zSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyIiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmllbGRbM11bXSIgdmFsdWU9Ikkgd2FudCB0byByZWNlaXZlIENGVEUmIzAzOTtzIGdlbmVyYWwgbmV3c2xldHRlciIgICA+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8zSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyIj4KICAgICAgICAgICAgSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyCiAgICAgICAgICA8L2xhYmVsPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3cgX2NoZWNrYm94LXJhZGlvIj4KICAgICAgICA8aW5wdXQgaWQ9ImZpZWxkXzNJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlciAiIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJmaWVsZFszXVtdIiB2YWx1ZT0iSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZXZlbnRzIG5ld3NsZXR0ZXIgIiAgID4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxsYWJlbCBmb3I9ImZpZWxkXzNJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlciAiPgogICAgICAgICAgICBJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlcgogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfYnV0dG9uLXdyYXBwZXIgX2Z1bGxfd2lkdGgiPgogICAgICA8YnV0dG9uIGlkPSJfZm9ybV8zMV9zdWJtaXQiIGNsYXNzPSJfc3VibWl0IiB0eXBlPSJzdWJtaXQiPgogICAgICAgIFN1Ym1pdAogICAgICA8L2J1dHRvbj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iX2NsZWFyLWVsZW1lbnQiPgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iX2Zvcm0tdGhhbmsteW91IiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgPC9kaXY+CjwvZm9ybT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CndpbmRvdy5jZmllbGRzID0geyIxIjoiY291bnRyeSIsIjIiOiJwcml2YWN5X3BvbGljeSIsIjMiOiJjb21tdW5pY2F0aW9uX29wdGlvbnMifTsKd2luZG93Ll9zaG93X3RoYW5rX3lvdSA9IGZ1bmN0aW9uKGlkLCBtZXNzYWdlLCB0cmFja2NtcF91cmwpIHsKICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfZm9ybV8nICsgaWQgKyAnXycpLCB0aGFua195b3UgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybS10aGFuay15b3UnKTsKICBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybS1jb250ZW50Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICB0aGFua195b3UuaW5uZXJIVE1MID0gbWVzc2FnZTsKICB0aGFua195b3Uuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgaWYgKHR5cGVvZih0cmFja2NtcF91cmwpICE9ICd1bmRlZmluZWQnICYmIHRyYWNrY21wX3VybCkgewogICAgLy8gU2l0ZSB0cmFja2luZyBVUkwgdG8gdXNlIGFmdGVyIGlubGluZSBmb3JtIHN1Ym1pc3Npb24uCiAgICBfbG9hZF9zY3JpcHQodHJhY2tjbXBfdXJsKTsKICB9CiAgaWYgKHR5cGVvZiB3aW5kb3cuX2Zvcm1fY2FsbGJhY2sgIT09ICd1bmRlZmluZWQnKSB3aW5kb3cuX2Zvcm1fY2FsbGJhY2soaWQpOwp9Owp3aW5kb3cuX3Nob3dfZXJyb3IgPSBmdW5jdGlvbihpZCwgbWVzc2FnZSwgaHRtbCkgewogIHZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ19mb3JtXycgKyBpZCArICdfJyksIGVyciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCBidXR0b24gPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpLCBvbGRfZXJyb3IgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybV9lcnJvcicpOwogIGlmIChvbGRfZXJyb3IpIG9sZF9lcnJvci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG9sZF9lcnJvcik7CiAgZXJyLmlubmVySFRNTCA9IG1lc3NhZ2U7CiAgZXJyLmNsYXNzTmFtZSA9ICdfZXJyb3ItaW5uZXIgX2Zvcm1fZXJyb3IgX25vX2Fycm93JzsKICB2YXIgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogIHdyYXBwZXIuY2xhc3NOYW1lID0gJ19mb3JtLWlubmVyJzsKICB3cmFwcGVyLmFwcGVuZENoaWxkKGVycik7CiAgYnV0dG9uLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHdyYXBwZXIsIGJ1dHRvbik7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2lkXj0iX2Zvcm0iXVtpZCQ9Il9zdWJtaXQiXScpLmRpc2FibGVkID0gZmFsc2U7CiAgaWYgKGh0bWwpIHsKICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGRpdi5jbGFzc05hbWUgPSAnX2Vycm9yLWh0bWwnOwogICAgZGl2LmlubmVySFRNTCA9IGh0bWw7CiAgICBlcnIuYXBwZW5kQ2hpbGQoZGl2KTsKICB9Cn07CndpbmRvdy5fbG9hZF9zY3JpcHQgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKSB7CiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKSwgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksIHIgPSBmYWxzZTsKICAgIHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICBzY3JpcHQuY2hhcnNldCA9ICd1dGYtOCc7CiAgICBzY3JpcHQuc3JjID0gdXJsOwogICAgaWYgKGNhbGxiYWNrKSB7CiAgICAgIHNjcmlwdC5vbmxvYWQgPSBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgIGlmICghciAmJiAoIXRoaXMucmVhZHlTdGF0ZSB8fCB0aGlzLnJlYWR5U3RhdGUgPT0gJ2NvbXBsZXRlJykpIHsKICAgICAgICByID0gdHJ1ZTsKICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH0KICAgICAgfTsKICAgIH0KICAgIGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKfTsKKGZ1bmN0aW9uKCkgewogIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoLnNlYXJjaCgiZXhjbHVkZWZvcm0iKSAhPT0gLTEpIHJldHVybiBmYWxzZTsKICB2YXIgZ2V0Q29va2llID0gZnVuY3Rpb24obmFtZSkgewogICAgdmFyIG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDsgKScgKyBuYW1lICsgJz0oW147XSspJykpOwogICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMl0gOiBudWxsOwogIH0KICB2YXIgc2V0Q29va2llID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHsKICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpOwogICAgdmFyIHRpbWUgPSBub3cuZ2V0VGltZSgpOwogICAgdmFyIGV4cGlyZVRpbWUgPSB0aW1lICsgMTAwMCAqIDYwICogNjAgKiAyNCAqIDM2NTsKICAgIG5vdy5zZXRUaW1lKGV4cGlyZVRpbWUpOwogICAgZG9jdW1lbnQuY29va2llID0gbmFtZSArICc9JyArIHZhbHVlICsgJzsgZXhwaXJlcz0nICsgbm93ICsgJztwYXRoPS8nOwogIH0KICAgICAgdmFyIGFkZEV2ZW50ID0gZnVuY3Rpb24oZWxlbWVudCwgZXZlbnQsIGZ1bmMpIHsKICAgIGlmIChlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBmdW5jKTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBvbGRGdW5jID0gZWxlbWVudFsnb24nICsgZXZlbnRdOwogICAgICBlbGVtZW50WydvbicgKyBldmVudF0gPSBmdW5jdGlvbigpIHsKICAgICAgICBvbGRGdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICB9OwogICAgfQogIH0KICB2YXIgX3JlbW92ZWQgPSBmYWxzZTsKICB2YXIgZm9ybV90b19zdWJtaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX2Zvcm1fMzFfJyk7CiAgdmFyIGFsbElucHV0cyA9IGZvcm1fdG9fc3VibWl0LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0LCBzZWxlY3QsIHRleHRhcmVhJyksIHRvb2x0aXBzID0gW10sIHN1Ym1pdHRlZCA9IGZhbHNlOwoKICB2YXIgZ2V0VXJsUGFyYW0gPSBmdW5jdGlvbihuYW1lKSB7CiAgICB2YXIgcmVnZXhTdHIgPSAnW1w/Jl0nICsgbmFtZSArICc9KFteJiNdKiknOwogICAgdmFyIHJlc3VsdHMgPSBuZXcgUmVnRXhwKHJlZ2V4U3RyLCAnaScpLmV4ZWMod2luZG93LmxvY2F0aW9uLmhyZWYpOwogICAgcmV0dXJuIHJlc3VsdHMgIT0gdW5kZWZpbmVkID8gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMV0pIDogZmFsc2U7CiAgfTsKCiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxJbnB1dHMubGVuZ3RoOyBpKyspIHsKICAgIHZhciByZWdleFN0ciA9ICJmaWVsZFxcWyhcXGQrKVxcXSI7CiAgICB2YXIgcmVzdWx0cyA9IG5ldyBSZWdFeHAocmVnZXhTdHIpLmV4ZWMoYWxsSW5wdXRzW2ldLm5hbWUpOwogICAgaWYgKHJlc3VsdHMgIT0gdW5kZWZpbmVkKSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSB3aW5kb3cuY2ZpZWxkc1tyZXN1bHRzWzFdXTsKICAgIH0gZWxzZSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSBhbGxJbnB1dHNbaV0ubmFtZTsKICAgIH0KICAgIHZhciBmaWVsZFZhbCA9IGdldFVybFBhcmFtKGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUpOwoKICAgIGlmIChmaWVsZFZhbCkgewogICAgICBpZiAoYWxsSW5wdXRzW2ldLnR5cGUgPT0gInJhZGlvIiB8fCBhbGxJbnB1dHNbaV0udHlwZSA9PSAiY2hlY2tib3giKSB7CiAgICAgICAgaWYgKGFsbElucHV0c1tpXS52YWx1ZSA9PSBmaWVsZFZhbCkgewogICAgICAgICAgYWxsSW5wdXRzW2ldLmNoZWNrZWQgPSB0cnVlOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBhbGxJbnB1dHNbaV0udmFsdWUgPSBmaWVsZFZhbDsKICAgICAgfQogICAgfQogIH0KCiAgdmFyIHJlbW92ZV90b29sdGlwcyA9IGZ1bmN0aW9uKCkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b29sdGlwcy5sZW5ndGg7IGkrKykgewogICAgICB0b29sdGlwc1tpXS50aXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0b29sdGlwc1tpXS50aXApOwogICAgfQogICAgICB0b29sdGlwcyA9IFtdOwogIH07CiAgdmFyIHJlbW92ZV90b29sdGlwID0gZnVuY3Rpb24oZWxlbSkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b29sdGlwcy5sZW5ndGg7IGkrKykgewogICAgICBpZiAodG9vbHRpcHNbaV0uZWxlbSA9PT0gZWxlbSkgewogICAgICAgIHRvb2x0aXBzW2ldLnRpcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRvb2x0aXBzW2ldLnRpcCk7CiAgICAgICAgdG9vbHRpcHMuc3BsaWNlKGksIDEpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQogIH07CiAgdmFyIGNyZWF0ZV90b29sdGlwID0gZnVuY3Rpb24oZWxlbSwgdGV4dCkgewogICAgdmFyIHRvb2x0aXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgYXJyb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgaW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgbmV3X3Rvb2x0aXAgPSB7fTsKICAgIGlmIChlbGVtLnR5cGUgIT0gJ3JhZGlvJyAmJiBlbGVtLnR5cGUgIT0gJ2NoZWNrYm94JykgewogICAgICB0b29sdGlwLmNsYXNzTmFtZSA9ICdfZXJyb3InOwogICAgICBhcnJvdy5jbGFzc05hbWUgPSAnX2Vycm9yLWFycm93JzsKICAgICAgaW5uZXIuY2xhc3NOYW1lID0gJ19lcnJvci1pbm5lcic7CiAgICAgIGlubmVyLmlubmVySFRNTCA9IHRleHQ7CiAgICAgIHRvb2x0aXAuYXBwZW5kQ2hpbGQoYXJyb3cpOwogICAgICB0b29sdGlwLmFwcGVuZENoaWxkKGlubmVyKTsKICAgICAgZWxlbS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRvb2x0aXApOwogICAgfSBlbHNlIHsKICAgICAgdG9vbHRpcC5jbGFzc05hbWUgPSAnX2Vycm9yLWlubmVyIF9ub19hcnJvdyc7CiAgICAgIHRvb2x0aXAuaW5uZXJIVE1MID0gdGV4dDsKICAgICAgZWxlbS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0b29sdGlwLCBlbGVtKTsKICAgICAgbmV3X3Rvb2x0aXAubm9fYXJyb3cgPSB0cnVlOwogICAgfQogICAgbmV3X3Rvb2x0aXAudGlwID0gdG9vbHRpcDsKICAgIG5ld190b29sdGlwLmVsZW0gPSBlbGVtOwogICAgdG9vbHRpcHMucHVzaChuZXdfdG9vbHRpcCk7CiAgICByZXR1cm4gbmV3X3Rvb2x0aXA7CiAgfTsKICB2YXIgcmVzaXplX3Rvb2x0aXAgPSBmdW5jdGlvbih0b29sdGlwKSB7CiAgICB2YXIgcmVjdCA9IHRvb2x0aXAuZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHNjcm9sbFBvc2l0aW9uID0gcmVjdC50b3AgLSAoKHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2Muc2Nyb2xsVG9wKSAgLSAoZG9jLmNsaWVudFRvcCB8fCAwKSk7CiAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPCA0MCkgewogICAgICB0b29sdGlwLnRpcC5jbGFzc05hbWUgPSB0b29sdGlwLnRpcC5jbGFzc05hbWUucmVwbGFjZSgvID8oX2Fib3ZlfF9iZWxvdykgPy9nLCAnJykgKyAnIF9iZWxvdyc7CiAgICB9IGVsc2UgewogICAgICB0b29sdGlwLnRpcC5jbGFzc05hbWUgPSB0b29sdGlwLnRpcC5jbGFzc05hbWUucmVwbGFjZSgvID8oX2Fib3ZlfF9iZWxvdykgPy9nLCAnJykgKyAnIF9hYm92ZSc7CiAgICB9CiAgfTsKICB2YXIgcmVzaXplX3Rvb2x0aXBzID0gZnVuY3Rpb24oKSB7CiAgICBpZiAoX3JlbW92ZWQpIHJldHVybjsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9vbHRpcHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKCF0b29sdGlwc1tpXS5ub19hcnJvdykgcmVzaXplX3Rvb2x0aXAodG9vbHRpcHNbaV0pOwogICAgfQogIH07CiAgdmFyIHZhbGlkYXRlX2ZpZWxkID0gZnVuY3Rpb24oZWxlbSwgcmVtb3ZlKSB7CiAgICB2YXIgdG9vbHRpcCA9IG51bGwsIHZhbHVlID0gZWxlbS52YWx1ZSwgbm9fZXJyb3IgPSB0cnVlOwogICAgcmVtb3ZlID8gcmVtb3ZlX3Rvb2x0aXAoZWxlbSkgOiBmYWxzZTsKICAgIGlmIChlbGVtLnR5cGUgIT0gJ2NoZWNrYm94JykgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZS5yZXBsYWNlKC8gP19oYXNfZXJyb3IgPy9nLCAnJyk7CiAgICBpZiAoZWxlbS5nZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJykgIT09IG51bGwpIHsKICAgICAgaWYgKGVsZW0udHlwZSA9PSAncmFkaW8nIHx8IChlbGVtLnR5cGUgPT0gJ2NoZWNrYm94JyAmJiAvYW55Ly50ZXN0KGVsZW0uY2xhc3NOYW1lKSkpIHsKICAgICAgICB2YXIgZWxlbXMgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbGVtLm5hbWVdOwogICAgICAgIGlmICghKGVsZW1zIGluc3RhbmNlb2YgTm9kZUxpc3QgfHwgZWxlbXMgaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbikgfHwgZWxlbXMubGVuZ3RoIDw9IDEpIHsKICAgICAgICAgIG5vX2Vycm9yID0gZWxlbS5jaGVja2VkOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIG5vX2Vycm9yID0gZmFsc2U7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChlbGVtc1tpXS5jaGVja2VkKSBub19lcnJvciA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghbm9fZXJyb3IpIHsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiUGxlYXNlIHNlbGVjdCBhbiBvcHRpb24uIik7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGVsZW0udHlwZSA9PSdjaGVja2JveCcpIHsKICAgICAgICB2YXIgZWxlbXMgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbGVtLm5hbWVdLCBmb3VuZCA9IGZhbHNlLCBlcnIgPSBbXTsKICAgICAgICBub19lcnJvciA9IHRydWU7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgaWYgKGVsZW1zW2ldLmdldEF0dHJpYnV0ZSgncmVxdWlyZWQnKSA9PT0gbnVsbCkgY29udGludWU7CiAgICAgICAgICBpZiAoIWZvdW5kICYmIGVsZW1zW2ldICE9PSBlbGVtKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgIGVsZW1zW2ldLmNsYXNzTmFtZSA9IGVsZW1zW2ldLmNsYXNzTmFtZS5yZXBsYWNlKC8gP19oYXNfZXJyb3IgPy9nLCAnJyk7CiAgICAgICAgICBpZiAoIWVsZW1zW2ldLmNoZWNrZWQpIHsKICAgICAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgICAgICAgZWxlbXNbaV0uY2xhc3NOYW1lID0gZWxlbXNbaV0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICAgICAgZXJyLnB1c2goIkNoZWNraW5nICVzIGlzIHJlcXVpcmVkIi5yZXBsYWNlKCIlcyIsIGVsZW1zW2ldLnZhbHVlKSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghbm9fZXJyb3IpIHsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCBlcnIuam9pbignPGJyLz4nKSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGVsZW0udGFnTmFtZSA9PSAnU0VMRUNUJykgewogICAgICAgIHZhciBzZWxlY3RlZCA9IHRydWU7CiAgICAgICAgaWYgKGVsZW0ubXVsdGlwbGUpIHsKICAgICAgICAgIHNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW0ub3B0aW9ucy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZWxlbS5vcHRpb25zW2ldLnNlbGVjdGVkKSB7CiAgICAgICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbS5vcHRpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChlbGVtLm9wdGlvbnNbaV0uc2VsZWN0ZWQgJiYgIWVsZW0ub3B0aW9uc1tpXS52YWx1ZSkgewogICAgICAgICAgICAgIHNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFzZWxlY3RlZCkgewogICAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZSArICcgX2hhc19lcnJvcic7CiAgICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgICAgdG9vbHRpcCA9IGNyZWF0ZV90b29sdGlwKGVsZW0sICJQbGVhc2Ugc2VsZWN0IGFuIG9wdGlvbi4iKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKTsKICAgICAgfQogICAgfQogICAgaWYgKG5vX2Vycm9yICYmIGVsZW0ubmFtZSA9PSAnZW1haWwnKSB7CiAgICAgIGlmICghdmFsdWUubWF0Y2goL15bXCtfYS16MC05LScmPV0rKFwuW1wrX2EtejAtOS0nXSspKkBbYS16MC05LV0rKFwuW2EtejAtOS1dKykqKFwuW2Etel17Mix9KSQvaSkpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLiIpOwogICAgICB9CiAgICB9CiAgICBpZiAobm9fZXJyb3IgJiYgL2RhdGVfZmllbGQvLnRlc3QoZWxlbS5jbGFzc05hbWUpKSB7CiAgICAgIGlmICghdmFsdWUubWF0Y2goL15cZFxkXGRcZC1cZFxkLVxkXGQkLykpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiRW50ZXIgYSB2YWxpZCBkYXRlLiIpOwogICAgICB9CiAgICB9CiAgICB0b29sdGlwID8gcmVzaXplX3Rvb2x0aXAodG9vbHRpcCkgOiBmYWxzZTsKICAgIHJldHVybiBub19lcnJvcjsKICB9OwogIHZhciBuZWVkc192YWxpZGF0ZSA9IGZ1bmN0aW9uKGVsKSB7CiAgICByZXR1cm4gZWwubmFtZSA9PSAnZW1haWwnIHx8IGVsLmdldEF0dHJpYnV0ZSgncmVxdWlyZWQnKSAhPT0gbnVsbDsKICB9OwogIHZhciB2YWxpZGF0ZV9mb3JtID0gZnVuY3Rpb24oZSkgewogICAgdmFyIGVyciA9IGZvcm1fdG9fc3VibWl0LnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybV9lcnJvcicpLCBub19lcnJvciA9IHRydWU7CiAgICBpZiAoIXN1Ym1pdHRlZCkgewogICAgICBzdWJtaXR0ZWQgPSB0cnVlOwogICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYWxsSW5wdXRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgdmFyIGlucHV0ID0gYWxsSW5wdXRzW2ldOwogICAgICAgIGlmIChuZWVkc192YWxpZGF0ZShpbnB1dCkpIHsKICAgICAgICAgIGlmIChpbnB1dC50eXBlID09ICd0ZXh0JykgewogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJ2JsdXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS50cmltKCk7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJ2lucHV0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC50eXBlID09ICdyYWRpbycgfHwgaW5wdXQudHlwZSA9PSAnY2hlY2tib3gnKSB7CiAgICAgICAgICAgIChmdW5jdGlvbihlbCkgewogICAgICAgICAgICAgIHZhciByYWRpb3MgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbC5uYW1lXTsKICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhZGlvcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgYWRkRXZlbnQocmFkaW9zW2ldLCAnY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQoZWwsIHRydWUpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KShpbnB1dCk7CiAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnRhZ05hbWUgPT0gJ1NFTEVDVCcpIHsKICAgICAgICAgICAgYWRkRXZlbnQoaW5wdXQsICdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB2YWxpZGF0ZV9maWVsZCh0aGlzLCB0cnVlKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZW1vdmVfdG9vbHRpcHMoKTsKICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhbGxJbnB1dHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgdmFyIGVsZW0gPSBhbGxJbnB1dHNbaV07CiAgICAgIGlmIChuZWVkc192YWxpZGF0ZShlbGVtKSkgewogICAgICAgIGlmIChlbGVtLnRhZ05hbWUudG9Mb3dlckNhc2UoKSAhPT0gInNlbGVjdCIpIHsKICAgICAgICAgIGVsZW0udmFsdWUgPSBlbGVtLnZhbHVlLnRyaW0oKTsKICAgICAgICB9CiAgICAgICAgdmFsaWRhdGVfZmllbGQoZWxlbSkgPyB0cnVlIDogbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKCFub19lcnJvciAmJiBlKSB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIH0KICAgIHJlc2l6ZV90b29sdGlwcygpOwogICAgcmV0dXJuIG5vX2Vycm9yOwogIH07CiAgYWRkRXZlbnQod2luZG93LCAncmVzaXplJywgcmVzaXplX3Rvb2x0aXBzKTsKICBhZGRFdmVudCh3aW5kb3csICdzY3JvbGwnLCByZXNpemVfdG9vbHRpcHMpOwogIHdpbmRvdy5fb2xkX3NlcmlhbGl6ZSA9IG51bGw7CiAgaWYgKHR5cGVvZiBzZXJpYWxpemUgIT09ICd1bmRlZmluZWQnKSB3aW5kb3cuX29sZF9zZXJpYWxpemUgPSB3aW5kb3cuc2VyaWFsaXplOwogIF9sb2FkX3NjcmlwdCgiLy9kM3J4YWlqNTZ2amVnZS5jbG91ZGZyb250Lm5ldC9mb3JtLXNlcmlhbGl6ZS8wLjMvc2VyaWFsaXplLm1pbi5qcyIsIGZ1bmN0aW9uKCkgewogICAgd2luZG93Ll9mb3JtX3NlcmlhbGl6ZSA9IHdpbmRvdy5zZXJpYWxpemU7CiAgICBpZiAod2luZG93Ll9vbGRfc2VyaWFsaXplKSB3aW5kb3cuc2VyaWFsaXplID0gd2luZG93Ll9vbGRfc2VyaWFsaXplOwogIH0pOwogIHZhciBmb3JtX3N1Ym1pdCA9IGZ1bmN0aW9uKGUpIHsKICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIGlmICh2YWxpZGF0ZV9mb3JtKCkpIHsKICAgICAgLy8gdXNlIHRoaXMgdHJpY2sgdG8gZ2V0IHRoZSBzdWJtaXQgYnV0dG9uICYgZGlzYWJsZSBpdCB1c2luZyBwbGFpbiBqYXZhc2NyaXB0CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNfZm9ybV8zMV9zdWJtaXQnKS5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAgIHZhciBzZXJpYWxpemVkID0gX2Zvcm1fc2VyaWFsaXplKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfZm9ybV8zMV8nKSk7CiAgICAgIHZhciBlcnIgPSBmb3JtX3RvX3N1Ym1pdC5xdWVyeVNlbGVjdG9yKCcuX2Zvcm1fZXJyb3InKTsKICAgICAgZXJyID8gZXJyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZXJyKSA6IGZhbHNlOwogICAgICBfbG9hZF9zY3JpcHQoJ2h0dHBzOi8vY2Z0ZS5hY3RpdmVob3N0ZWQuY29tL3Byb2MucGhwPycgKyBzZXJpYWxpemVkICsgJyZqc29ucD10cnVlJyk7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfTsKICBhZGRFdmVudChmb3JtX3RvX3N1Ym1pdCwgJ3N1Ym1pdCcsIGZvcm1fc3VibWl0KTsKfSkoKTsKCjwvc2NyaXB0Pg==[/fusion_code][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container][fusion_builder_container admin_label=”Mobile” hundred_percent=”yes” hundred_percent_height=”no” hundred_percent_height_scroll=”no” hundred_percent_height_center_content=”yes” equal_height_columns=”no” menu_anchor=”” hide_on_mobile=”small-visibility” class=”” id=”” background_color=”” background_image=”” background_position=”center center” background_repeat=”no-repeat” fade=”no” background_parallax=”none” enable_mobile=”no” parallax_speed=”0.3″ video_mp4=”” video_webm=”” video_ogv=”” video_url=”” video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” video_preview_image=”” border_size=”” border_color=”” border_style=”solid” margin_top=”” margin_bottom=”” padding_top=”2%” padding_right=”2%” padding_bottom=”2%” padding_left=”2%”][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ spacing=”yes” center_content=”no” link=”” target=”_self” min_height=”” hide_on_mobile=”small-visibility” class=”” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” hover_type=”none” border_size=”” border_color=”” border_style=”solid” border_position=”all” padding_top=”2%” padding_right=”2%” padding_bottom=”2%” padding_left=”2%” margin_top=”0px” margin_bottom=”0px” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_text columns=”” column_min_width=”” column_spacing=”” rule_style=”default” rule_size=”” rule_color=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=””]

South Summit: Where Innovation Meets Business

Earlier this month CFTE attended the 5th annual South Summit in Madrid, one of the biggest events dedicated to innovation in South Europe and Latam, which focused on the theme of: “Where innovation meets business.” Our co-founder & CEO, Huy Nguyen Trieu, was invited as a thought leader to give a keynote speech on: Is AI the new blockchain? He also interviewed Paul Misener, VP, Innovation, Policy & Communications at Amazon, to learn more about “Innovating the Amazon way”.

Huy wasn’t the only CFTE representative at the event as Nicolas Tonnard –COO– flew from London to meet with the Iberian ecosystem and a few of our learners and alumni were able to attend as well.

The event was a great success and we wanted to pay tribute to the organiser by wrapping up the main learning outcomes we gathered and share them with our international community.

Spain has talent

The South Summit is an event that gathers startups, big corporations, and investors. This year it was celebrated at the innovation campus “La Nave” in Madrid with over 12,000 participants.  There were around 650 investors, 3,500 startups and notable business leaders, as well as big corporations looking for startups to team up with for innovation and growth.

The summit was founded by entrepreneur and visionary Maria Benjumea in the midst of the Spanish crisis in 2012. She knew the crisis was going to pass by and a big change was approaching, which Spain had to be ready for. With the summit, Benjumea was putting Spain on the map, by showing the world the Spanish startup ecosystem has very talented entrepreneurs. As she points out: “We have nothing to envy of Silicon Valley.”

Indeed, the startup ecosystem in Spain has been growing fast since its foundation, going from being a lowkey figure to a substantial player against countries like the UK and France. According to a report from Startupxplore, the investment in startups in 2017 increased by 45 percent in Spain, with a total of 845M euros invested. At the moment Spain has 3500 startups, Madrid and Barcelona being the main cities where they are established (Barcelona also occupies the 5th place in the European ranking on startups). Moreover, 66% of the Spanish startups have survived to the first and most difficult year in the market.

In this climate, were Spain is becoming a powerful player, the South Summit appears as the perfect playground to continue pushing forward the development of the Spanish startup ecosystem. Let’s take a look at what our team witnessed in this Spanish celebration of innovation.

Spain wants to be the next startup nation

The spirit and motivation were palpable from  day one: Spain wants to keep on boosting the investment in startups and become a hub for entrepreneurs. During the ceremony that marked the opening, the keynote speakers included Europe’s institutions such as Banco Sabadell and Telefonica – big promoters of the European startup ecosystem as a fuel for innovation.  

“We all need to rethink in order to innovate and change the world to the best,” said José Álvarez Pallete, Chairman of Telefonica, who wants to continue leading the digital transformation in the private sector.

“We believe, innovation drives you to success,” added Javier Uriarte, Regional Director of Banco Sabadell.  

Present also at the opening ceremony, was Nadia Calvino, Minister of Economy, who remains a strong advocate of promoting innovation within the industry. “Our two core values are, innovation and think big,” she said.

As Benjumea explained on an interview at radio COPE, the key role of the government is to remove any obstacles that prevent the development of startups. It was clear by the end of the summit that nowadays, Spanish startups count strongly with the government’s backup.

Both the Spanish President, Pedro Sánchez Pérez-Castejón and the mayor of Madrid, Manuela Carmena, spoke at the closing ceremony, showing a strong commitment in wanting Spain to become the next startup nation. The President emphasised that for this to happen it is fundamental to promote incubators and accelerators, as well as the connection of startups with investors.

More so, the mayor highlighted the need for startups concentrating on building smarter cities. Urbanisation is growing and as Maria Garrido, CEO of HavasX, explained, in 2050 68% of the population will live in cities. Spain definitely wants to be ready for this change, so space for 70 startups has been allocated at “La Nave” for them to develop smart urban innovation.

Learning how to learn

An important topic of discussion during the summit was how we must rethink the education model in today’s digital age. To address the different issues the summit dedicated a special side event called enlightED, which brought together experts in education technology and innovation to foster the debate about the challenges education is going to face in the next ten years.

Some of the big questions discussed were: What will the education of the future look like? Do we still need traditional learning institutions? Percy Harrison, from ETON Online Ventures, pointed out: “If students don’t learn the way we teach, we must teach the way they want to learn.”

Amongst others present, Sir Ken Robinson gave a brilliant speech. “Education should promote diversity of intelligence, talents, ability, not conformity,” he said.

As well, several Edtech programs took place that focused on topics like “When Technology Reinvents the Professions”, “Higher Education in the Age of Artificial Intelligence”, “Disrupting College”, “The future of higher education”.   

We learned that plenty of research is being done on the matter, but as Barbara Oakley, from Oakland University, explained during one of the conferences, there is a big challenge: getting this knowledge out to the masses, the teachers and the students who need it.

“One of the big breakthroughs that are going to be happening in the next decade is online learning in ways to disseminate this important information so everyone can learn it.”

Innovation is moving at such high pace with the breakthrough in technology that the biggest concern is how can professionals remain relevant. Pushing forward with models of online alternative education, such as CFTE, is one of the ways to proceed, because there is a need for changing the initial education model with a continuous model, were individuals keep on learning and updating their skills to be prepared for the new technologies rising.  

Open innovation is changing

Moreover, another big topic dealt with at the summit was “Open innovation” and the changes the ecosystem has been facing recently due to the rapid increase of open ecosystems in organizations to foster innovation. A special  forum was dedicated for its discussion, moderated by US Academic Henry Chesbrough, known as the father of Open Innovation.

At the forum different speakers gathered to provide their perspective on what’s going on with “Open Innovation” in the present and what will happen in the future, in order to explore what could be the best solutions for both the emerging thinking startups and the businesses.

Mario Pardo, global head of Enterprise Solutions at BBVA, sat down with Chesbrough to discuss how BBVA is working with startups to develop better banking solutions for their clients. “Now more than ever we are firmly set on working together both with startups as well as our big corporate clients to develop better solutions and products,” he said.

For big corporations it is not enough to innovate within their organisation, today they must think out of the box and beyond their comfort zone and connect with startups to get fresh ideas. Companies like Ferrovial and Telefonica were present to share their experiences and give insights on how they have worked and succeeded with open innovation.

However, not everyone agrees with open innovation and, it is often seen by startups as poison. Philippe Gelis, CEO at Kantox was among the critics. Instead, he called on large organisations to start learning and doing, as opposed to investing and “playing around” as tools for innovation.

While competitive advantages arise during corporate and startup partnerships, the problem with innovation still tends to be structural and cultural. The startup culture is too ‘relaxed’ for corporations and the corporations are too “structured” for startups. There is still work to do in this area, where corporates and startups must start playing complementary roles for a win-win collaboration.

Nevertheless, Ken Morse, President at Entrepreneurship Ventures, was one of the big sustainers that: “Large companies need to innovate openly and rapidly with the help of young companies.”

During the closing remarks, Chesbrough pointed out some elements that define where “Open Innovation” is heading to: useful ideas will be abundant and organizations of all sizes will employ them; intellectual property will help create value, as well as capture value; the State will become an engaged, supportive actor.

Lastly, he concluded: “The future of innovation will be collaborative; your company will still need smart people, but their new mission will be to work with the smart people from other companies.”

What’s the Amazon way of doing?

On the last day, Paul Misener, VP of Global Innovation policy at Amazon, shared some of the secrets on how Amazon innovates. “Everyone is supposed to be thinking  innovatively at Amazon. Is that what’s going on at your company?” he questioned.

Innovation is blended in the Amazon culture and in every process. It is not something that is done for a particular purpose as would be the example of “Open Innovation”. It is constant and focused fully on their customers.

During the discussion with our CEO Huy Nguyen Trieu, we learned that innovating the Amazon way means we must innovate continuously. Obsessing about our customers and finding out what they need, but also being ready to fail while we are experimenting on something new. Failure is part of the startup ecosystem, and to reach success, you must go through it several times.  

“We spent a lot of effort in things that didn’t work, but we have to experiment,” he said. “If someone fails, they shouldn’t be punished, they should be rewarded.”

Misener also pointed out that Artificial Intelligence is now the key place to be, as it is the most competitive form of innovation at the moment.  

Overall, the 5th annual South Summit revealed Spain’s increasing strength and talent in innovation, as well as its potential to become a startup hub. Furthermore, it offered insight on hot topics such as rethinking the current education model to ensure society can rapidly adapt to the coming changes via constantly learning, together with the importance of building strong relationships between corporates and startups to deliver optimal innovation.

Moreover, the fruitful conversation between our CEO Huy Nguyen Trieu and the VP of Global Innovation Policy at Amazon, Paul Misener, shed light into the successful “Amazon way of innovating”, which consists on focusing on clients and maintaining an innovative mindset at all times.

All in all the South Summit was a great place to be, network and learn. We are looking forward to next year’s edition!

[/fusion_text][/fusion_builder_column][fusion_builder_column type=”1_1″ layout=”1_1″ spacing=”” center_content=”no” link=”” target=”_self” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_position=”left top” background_repeat=”no-repeat” hover_type=”none” border_size=”0″ border_color=”” border_style=”solid” border_position=”all” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_code]PHN0eWxlPgogI19mb3JtXzMxXyB7IGZvbnQtc2l6ZToxNHB4OyBsaW5lLWhlaWdodDoxLjY7IGZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IG1hcmdpbjowOyB9CiAjX2Zvcm1fMzFfICogeyBvdXRsaW5lOjA7IH0KIC5fZm9ybV9oaWRlIHsgZGlzcGxheTpub25lOyB2aXNpYmlsaXR5OmhpZGRlbjsgfQogLl9mb3JtX3Nob3cgeyBkaXNwbGF5OmJsb2NrOyB2aXNpYmlsaXR5OnZpc2libGU7IH0KICNfZm9ybV8zMV8uX2Zvcm0tdG9wIHsgdG9wOjA7IH0KICNfZm9ybV8zMV8uX2Zvcm0tYm90dG9tIHsgYm90dG9tOjA7IH0KICNfZm9ybV8zMV8uX2Zvcm0tbGVmdCB7IGxlZnQ6MDsgfQogI19mb3JtXzMxXy5fZm9ybS1yaWdodCB7IHJpZ2h0OjA7IH0KICNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0iZGF0ZSJdLCNfZm9ybV8zMV8gdGV4dGFyZWEgeyBwYWRkaW5nOjZweDsgaGVpZ2h0OmF1dG87IGJvcmRlcjojOTc5Nzk3IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czo0cHg7IGNvbG9yOiMwMDAgIWltcG9ydGFudDsgZm9udC1zaXplOjEzcHg7IC13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94OyAtbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fMzFfIHRleHRhcmVhIHsgcmVzaXplOm5vbmU7IH0KICNfZm9ybV8zMV8gLl9zdWJtaXQgeyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtZmFtaWx5OmFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MTRweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6IzhmMDcwNyAhaW1wb3J0YW50OyBib3JkZXI6MCAhaW1wb3J0YW50OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4ICFpbXBvcnRhbnQ7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHggIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czo0cHggIWltcG9ydGFudDsgY29sb3I6I2ZmZiAhaW1wb3J0YW50OyBwYWRkaW5nOjEwcHggIWltcG9ydGFudDsgfQogI19mb3JtXzMxXyAuX2Nsb3NlLWljb24geyBjdXJzb3I6cG9pbnRlcjsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2h0dHBzOi8vZDIyNmFqNGFvMXQ2MXEuY2xvdWRmcm9udC5uZXQvZXNma3lqaDF1X2Zvcm1zLWNsb3NlLWRhcmsucG5nJyk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjE0LjJweCAxNC4ycHg7IHBvc2l0aW9uOmFic29sdXRlOyBkaXNwbGF5OmJsb2NrOyB0b3A6MTFweDsgcmlnaHQ6OXB4OyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjE2LjJweDsgaGVpZ2h0OjE2LjJweDsgfQogI19mb3JtXzMxXyAuX2Nsb3NlLWljb246YmVmb3JlIHsgcG9zaXRpb246cmVsYXRpdmU7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWJvZHkgeyBtYXJnaW4tYm90dG9tOjMwcHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWltYWdlLWxlZnQgeyB3aWR0aDoxNTBweDsgZmxvYXQ6bGVmdDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tY29udGVudC1yaWdodCB7IG1hcmdpbi1sZWZ0OjE2NHB4OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1icmFuZGluZyB7IGNvbG9yOiNmZmY7IGZvbnQtc2l6ZToxMHB4OyBjbGVhcjpib3RoOyB0ZXh0LWFsaWduOmxlZnQ7IG1hcmdpbi10b3A6MzBweDsgZm9udC13ZWlnaHQ6MTAwOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1icmFuZGluZyAuX2xvZ28geyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMzBweDsgaGVpZ2h0OjE0cHg7IG1hcmdpbi10b3A6NnB4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnaHR0cHM6Ly9kMjI2YWo0YW8xdDYxcS5jbG91ZGZyb250Lm5ldC9oaDl1anFndjVfYWNsb2dvX2xpLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MTMwcHggYXV0bzsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1sYWJlbCwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IC5fZm9ybS1sYWJlbCB7IGZvbnQtd2VpZ2h0OmJvbGQ7IG1hcmdpbi1ib3R0b206NXB4OyBkaXNwbGF5OmJsb2NrOyB9CiAjX2Zvcm1fMzFfLl9kYXJrIC5fZm9ybS1icmFuZGluZyB7IGNvbG9yOiMzMzM7IH0KICNfZm9ybV8zMV8uX2RhcmsgLl9mb3JtLWJyYW5kaW5nIC5fbG9nbyB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCdodHRwczovL2QyMjZhajRhbzF0NjFxLmNsb3VkZnJvbnQubmV0L2pmdHEyYzhzX2FjbG9nb19kay5wbmcnKTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudCB7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW4tYm90dG9tOjEwcHg7IGZvbnQtc2l6ZTowOyBtYXgtd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudCAqIHsgZm9udC1zaXplOjE0cHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQuX2NsZWFyIHsgY2xlYXI6Ym90aDsgd2lkdGg6MTAwJTsgZmxvYXQ6bm9uZTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudC5fY2xlYXI6YWZ0ZXIgeyBjbGVhcjpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IGlucHV0W3R5cGU9InRleHQiXSwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IGlucHV0W3R5cGU9ImRhdGUiXSwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IHNlbGVjdCwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IHRleHRhcmVhOm5vdCguZy1yZWNhcHRjaGEtcmVzcG9uc2UpIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0KICNfZm9ybV8zMV8gLl9maWVsZC13cmFwcGVyIHsgcG9zaXRpb246cmVsYXRpdmU7IH0KICNfZm9ybV8zMV8gLl9pbmxpbmUtc3R5bGUgeyBmbG9hdDpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9InRleHQiXSB7IHdpZHRoOjE1MHB4OyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlOm5vdCguX2NsZWFyKSArIC5faW5saW5lLXN0eWxlOm5vdCguX2NsZWFyKSB7IG1hcmdpbi1sZWZ0OjIwcHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQgaW1nLl9mb3JtLWltYWdlIHsgbWF4LXdpZHRoOjEwMCU7IH0KICNfZm9ybV8zMV8gLl9jbGVhci1lbGVtZW50IHsgY2xlYXI6bGVmdDsgfQogI19mb3JtXzMxXyAuX2Z1bGxfd2lkdGggeyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybV9mdWxsX2ZpZWxkIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbToxMHB4OyB9CiAjX2Zvcm1fMzFfIGlucHV0W3R5cGU9InRleHQiXS5faGFzX2Vycm9yLCNfZm9ybV8zMV8gdGV4dGFyZWEuX2hhc19lcnJvciB7IGJvcmRlcjojZjM3YzdiIDFweCBzb2xpZDsgfQogI19mb3JtXzMxXyBpbnB1dFt0eXBlPSJjaGVja2JveCJdLl9oYXNfZXJyb3IgeyBvdXRsaW5lOiNmMzdjN2IgMXB4IHNvbGlkOyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3IgeyBkaXNwbGF5OmJsb2NrOyBwb3NpdGlvbjphYnNvbHV0ZTsgZm9udC1zaXplOjEzcHg7IHotaW5kZXg6MTAwMDAwMDE7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYWJvdmUgeyBwYWRkaW5nLWJvdHRvbTo0cHg7IHRvcDotNDFweDsgcmlnaHQ6MDsgfQogI19mb3JtXzMxXyAuX2Vycm9yLl9iZWxvdyB7IHBhZGRpbmctdG9wOjRweDsgdG9wOjEwMCU7IHJpZ2h0OjA7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYWJvdmUgLl9lcnJvci1hcnJvdyB7IGJvdHRvbTowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYmVsb3cgLl9lcnJvci1hcnJvdyB7IHRvcDowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1ib3R0b206NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV8zMV8gLl9lcnJvci1pbm5lciB7IHBhZGRpbmc6OHB4IDEycHg7IGJhY2tncm91bmQtY29sb3I6I2YzN2M3YjsgZm9udC1zaXplOjEzcHg7IGZvbnQtZmFtaWx5OmFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3ItaW5uZXIuX2Zvcm1fZXJyb3IgeyBtYXJnaW4tYm90dG9tOjVweDsgdGV4dC1hbGlnbjpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5fYnV0dG9uLXdyYXBwZXIgLl9lcnJvci1pbm5lci5fZm9ybV9lcnJvciB7IHBvc2l0aW9uOnN0YXRpYzsgfQogI19mb3JtXzMxXyAuX2Vycm9yLWlubmVyLl9ub19hcnJvdyB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogI19mb3JtXzMxXyAuX2Vycm9yLWFycm93IHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjA7IGhlaWdodDowOyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3ItaHRtbCB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogLnBpa2Etc2luZ2xlIHsgei1pbmRleDoxMDAwMDAwMSAhaW1wb3J0YW50OyB9CiBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KSBhbmQgKG1heC13aWR0aDo2NjdweCkgeyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgZGlzcGxheTpub25lOyB9CiAjX2Zvcm1fMzFfIHsgbWFyZ2luOjA7IHdpZHRoOjEwMCU7IG1pbi13aWR0aDoxMDAlOyBtYXgtd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fMzFfICogeyAtd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgLW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgZm9udC1zaXplOjFlbTsgfQogI19mb3JtXzMxXyAuX2Zvcm0tY29udGVudCB7IG1hcmdpbjowOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1pbm5lciB7IGRpc3BsYXk6YmxvY2s7IG1pbi13aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS10aXRsZSwjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luLXRvcDowOyBtYXJnaW4tcmlnaHQ6MDsgbWFyZ2luLWxlZnQ6MDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tdGl0bGUgeyBmb250LXNpemU6MS4yZW07IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQgeyBtYXJnaW46MCAwIDIwcHg7IHBhZGRpbmc6MDsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX2Zvcm0tZWxlbWVudCwjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV8zMV8gbGFiZWwsI19mb3JtXzMxXyBwLCNfZm9ybV8zMV8gdGV4dGFyZWE6bm90KC5nLXJlY2FwdGNoYS1yZXNwb25zZSkgeyBmbG9hdDpub25lOyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fcm93Ll9jaGVja2JveC1yYWRpbyBsYWJlbCB7IGRpc3BsYXk6aW5saW5lOyB9CiAjX2Zvcm1fMzFfIC5fcm93LCNfZm9ybV8zMV8gcCwjX2Zvcm1fMzFfIGxhYmVsIHsgbWFyZ2luLWJvdHRvbTowLjdlbTsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX3JvdyBpbnB1dFt0eXBlPSJjaGVja2JveCJdLCNfZm9ybV8zMV8gLl9yb3cgaW5wdXRbdHlwZT0icmFkaW8iXSB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHZlcnRpY2FsLWFsaWduOm1pZGRsZSAhaW1wb3J0YW50OyB9CiAjX2Zvcm1fMzFfIC5fcm93IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gKyBzcGFuIGxhYmVsIHsgZGlzcGxheTppbmxpbmU7IH0KICNfZm9ybV8zMV8gLl9yb3cgc3BhbiBsYWJlbCB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHdpZHRoOmluaXRpYWwgIWltcG9ydGFudDsgdmVydGljYWwtYWxpZ246bWlkZGxlICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWltYWdlIHsgbWF4LXdpZHRoOjEwMCU7IGhlaWdodDphdXRvICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdIHsgcGFkZGluZy1sZWZ0OjEwcHg7IHBhZGRpbmctcmlnaHQ6MTBweDsgZm9udC1zaXplOjE2cHg7IGxpbmUtaGVpZ2h0OjEuM2VtOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgfQogI19mb3JtXzMxXyBpbnB1dFt0eXBlPSJyYWRpbyJdLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB3aWR0aDoxLjNlbTsgaGVpZ2h0OjEuM2VtOyBmb250LXNpemU6MWVtOyBtYXJnaW46MCAwLjNlbSAwIDA7IHZlcnRpY2FsLWFsaWduOmJhc2VsaW5lOyB9CiAjX2Zvcm1fMzFfIGJ1dHRvblt0eXBlPSJzdWJtaXQiXSB7IHBhZGRpbmc6MjBweDsgZm9udC1zaXplOjEuNWVtOyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luOjIwcHggMCAwICFpbXBvcnRhbnQ7IH0KIH0KICNfZm9ybV8zMV8geyBwb3NpdGlvbjpyZWxhdGl2ZTsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW46MjVweCBhdXRvIDA7IHBhZGRpbmc6MjBweDsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7ICp6b29tOjE7IGJhY2tncm91bmQ6I2ZmZiAhaW1wb3J0YW50OyBib3JkZXI6MHB4IHNvbGlkICNiMGIwYjAgIWltcG9ydGFudDsgd2lkdGg6NTAwcHg7IC1tb3otYm9yZGVyLXJhZGl1czowcHggIWltcG9ydGFudDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjBweCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjBweCAhaW1wb3J0YW50OyBjb2xvcjojMDAwICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gLl9mb3JtLXRpdGxlIHsgZm9udC1zaXplOjIycHg7IGxpbmUtaGVpZ2h0OjIycHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLWJvdHRvbTowOyB9CiAjX2Zvcm1fMzFfOmJlZm9yZSwjX2Zvcm1fMzFfOmFmdGVyIHsgY29udGVudDoiICI7IGRpc3BsYXk6dGFibGU7IH0KICNfZm9ybV8zMV86YWZ0ZXIgeyBjbGVhcjpib3RoOyB9CiAjX2Zvcm1fMzFfLl9pbmxpbmUtc3R5bGUgeyB3aWR0aDphdXRvOyBkaXNwbGF5OmlubGluZS1ibG9jazsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9InRleHQiXSwjX2Zvcm1fMzFfLl9pbmxpbmUtc3R5bGUgaW5wdXRbdHlwZT0iZGF0ZSJdIHsgcGFkZGluZzoxMHB4IDEycHg7IH0KICNfZm9ybV8zMV8uX2lubGluZS1zdHlsZSBidXR0b24uX2lubGluZS1zdHlsZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6MjdweDsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIHAgeyBtYXJnaW46MDsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIC5fYnV0dG9uLXdyYXBwZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luOjI3cHggMTIuNXB4IDAgMjBweDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tdGhhbmsteW91IHsgcG9zaXRpb246cmVsYXRpdmU7IGxlZnQ6MDsgcmlnaHQ6MDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxOHB4OyB9CiBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KSBhbmQgKG1heC13aWR0aDo2NjdweCkgeyAjX2Zvcm1fMzFfLl9pbmxpbmUtZm9ybS5faW5saW5lLXN0eWxlIC5faW5saW5lLXN0eWxlLl9idXR0b24td3JhcHBlciB7IG1hcmdpbi10b3A6MjBweCAhaW1wb3J0YW50OyBtYXJnaW4tbGVmdDowICFpbXBvcnRhbnQ7IH0KIH0KPC9zdHlsZT4KPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249Imh0dHBzOi8vY2Z0ZS5hY3RpdmVob3N0ZWQuY29tL3Byb2MucGhwIiBpZD0iX2Zvcm1fMzFfIiBjbGFzcz0iX2Zvcm0gX2Zvcm1fMzEgX2lubGluZS1mb3JtICBfZGFyayIgbm92YWxpZGF0ZT4KICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ1IiB2YWx1ZT0iMzEiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZiIgdmFsdWU9IjMxIiAvPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InMiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYyIgdmFsdWU9IjAiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibSIgdmFsdWU9IjAiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3ViIiAvPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InYiIHZhbHVlPSIyIiAvPgogIDxkaXYgY2xhc3M9Il9mb3JtLWNvbnRlbnQiPgogICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDU0MjQzOTgyIF9mdWxsX3dpZHRoIF9jbGVhciIgPgogICAgICA8ZGl2IGNsYXNzPSJfZm9ybS10aXRsZSI+CiAgICAgICAgU3Vic2NyaWJlIHRvIENGVEUmIzAzOTtzIEV2ZW50IE5ld3NsZXR0ZXIKICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX3g2MDkzMzQ3MiBfZnVsbF93aWR0aCAiID4KICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgRmlyc3QgTmFtZSoKICAgICAgPC9sYWJlbD4KICAgICAgPGRpdiBjbGFzcz0iX2ZpZWxkLXdyYXBwZXIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaXJzdG5hbWUiIHBsYWNlaG9sZGVyPSJUeXBlIHlvdXIgZmlyc3QgbmFtZSIgcmVxdWlyZWQvPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDQyNjQ4NjAwIF9mdWxsX3dpZHRoICIgPgogICAgICA8bGFiZWwgY2xhc3M9Il9mb3JtLWxhYmVsIj4KICAgICAgICBMYXN0IE5hbWUqCiAgICAgIDwvbGFiZWw+CiAgICAgIDxkaXYgY2xhc3M9Il9maWVsZC13cmFwcGVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibGFzdG5hbWUiIHBsYWNlaG9sZGVyPSJUeXBlIHlvdXIgbGFzdCBuYW1lIiByZXF1aXJlZC8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF94MDQ5NzQ5MTkgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgIEVtYWlsKgogICAgICA8L2xhYmVsPgogICAgICA8ZGl2IGNsYXNzPSJfZmllbGQtd3JhcHBlciI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImVtYWlsIiBwbGFjZWhvbGRlcj0iVHlwZSB5b3VyIGVtYWlsIiByZXF1aXJlZC8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF9maWVsZDEgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgIENvdW50cnkqCiAgICAgIDwvbGFiZWw+CiAgICAgIDxkaXYgY2xhc3M9Il9maWVsZC13cmFwcGVyIj4KICAgICAgICA8c2VsZWN0IG5hbWU9ImZpZWxkWzFdIiByZXF1aXJlZD4KICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFmZ2hhbmlzdGFuIiA+CiAgICAgICAgICAgIEFmZ2hhbmlzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFsYmFuaWEiID4KICAgICAgICAgICAgQWxiYW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBbGdlcmlhIiA+CiAgICAgICAgICAgIEFsZ2VyaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW1lcmljYW4gU2Ftb2EiID4KICAgICAgICAgICAgQW1lcmljYW4gU2Ftb2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW5kb3JyYSIgPgogICAgICAgICAgICBBbmRvcnJhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFuZ29sYSIgPgogICAgICAgICAgICBBbmdvbGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW5ndWlsbGEiID4KICAgICAgICAgICAgQW5ndWlsbGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW50YXJjdGljYSIgPgogICAgICAgICAgICBBbnRhcmN0aWNhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFudGlndWEgYW5kIEJhcmJ1ZGEiID4KICAgICAgICAgICAgQW50aWd1YSBhbmQgQmFyYnVkYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBcmdlbnRpbmEiID4KICAgICAgICAgICAgQXJnZW50aW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFybWVuaWEiID4KICAgICAgICAgICAgQXJtZW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBcnViYSIgPgogICAgICAgICAgICBBcnViYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBdXN0cmFsaWEiID4KICAgICAgICAgICAgQXVzdHJhbGlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkF1c3RyaWEiID4KICAgICAgICAgICAgQXVzdHJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBemVyYmFpamFuIiA+CiAgICAgICAgICAgIEF6ZXJiYWlqYW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmFoYW1hcyIgPgogICAgICAgICAgICBCYWhhbWFzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJhaHJhaW4iID4KICAgICAgICAgICAgQmFocmFpbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCYW5nbGFkZXNoIiA+CiAgICAgICAgICAgIEJhbmdsYWRlc2gKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmFyYmFkb3MiID4KICAgICAgICAgICAgQmFyYmFkb3MKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmVsYXJ1cyIgPgogICAgICAgICAgICBCZWxhcnVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlbGdpdW0iID4KICAgICAgICAgICAgQmVsZ2l1bQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCZWxpemUiID4KICAgICAgICAgICAgQmVsaXplCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlbmluIiA+CiAgICAgICAgICAgIEJlbmluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlcm11ZGEiID4KICAgICAgICAgICAgQmVybXVkYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCaHV0YW4iID4KICAgICAgICAgICAgQmh1dGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJvbGl2aWEiID4KICAgICAgICAgICAgQm9saXZpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCb3NuaWEgYW5kIEhlcnplZ292aW5hIiA+CiAgICAgICAgICAgIEJvc25pYSBhbmQgSGVyemVnb3ZpbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQm90c3dhbmEiID4KICAgICAgICAgICAgQm90c3dhbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQm91dmV0IElzbGFuZCIgPgogICAgICAgICAgICBCb3V2ZXQgSXNsYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJyYXppbCIgPgogICAgICAgICAgICBCcmF6aWwKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQnJpdGlzaCBJbmRpYW4gT2NlYW4gVGVycml0b3J5IiA+CiAgICAgICAgICAgIEJyaXRpc2ggSW5kaWFuIE9jZWFuIFRlcnJpdG9yeQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCcnVuZWkgRGFydXNzYWxhbSIgPgogICAgICAgICAgICBCcnVuZWkgRGFydXNzYWxhbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCdWxnYXJpYSIgPgogICAgICAgICAgICBCdWxnYXJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCdXJraW5hIEZhc28iID4KICAgICAgICAgICAgQnVya2luYSBGYXNvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJ1cnVuZGkiID4KICAgICAgICAgICAgQnVydW5kaQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW1ib2RpYSIgPgogICAgICAgICAgICBDYW1ib2RpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW1lcm9vbiIgPgogICAgICAgICAgICBDYW1lcm9vbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW5hZGEiID4KICAgICAgICAgICAgQ2FuYWRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNhcGUgVmVyZGUiID4KICAgICAgICAgICAgQ2FwZSBWZXJkZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYXltYW4gSXNsYW5kcyIgPgogICAgICAgICAgICBDYXltYW4gSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMiID4KICAgICAgICAgICAgQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNoYWQiID4KICAgICAgICAgICAgQ2hhZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaGlsZSIgPgogICAgICAgICAgICBDaGlsZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaGluYSIgPgogICAgICAgICAgICBDaGluYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaHJpc3RtYXMgSXNsYW5kIiA+CiAgICAgICAgICAgIENocmlzdG1hcyBJc2xhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29jb3MgKEtlZWxpbmcpIElzbGFuZHMiID4KICAgICAgICAgICAgQ29jb3MgKEtlZWxpbmcpIElzbGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29sb21iaWEiID4KICAgICAgICAgICAgQ29sb21iaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29tb3JvcyIgPgogICAgICAgICAgICBDb21vcm9zCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvbmdvIiA+CiAgICAgICAgICAgIENvbmdvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvbmdvLCB0aGUgRGVtb2NyYXRpYyBSZXB1YmxpYyBvZiB0aGUiID4KICAgICAgICAgICAgQ29uZ28sIHRoZSBEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDb29rIElzbGFuZHMiID4KICAgICAgICAgICAgQ29vayBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvc3RhIFJpY2EiID4KICAgICAgICAgICAgQ29zdGEgUmljYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDb3RlIEQmIzAzOTtJdm9pcmUiID4KICAgICAgICAgICAgQ290ZSBEJiMwMzk7SXZvaXJlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNyb2F0aWEiID4KICAgICAgICAgICAgQ3JvYXRpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDdWJhIiA+CiAgICAgICAgICAgIEN1YmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ3lwcnVzIiA+CiAgICAgICAgICAgIEN5cHJ1cwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDemVjaCBSZXB1YmxpYyIgPgogICAgICAgICAgICBDemVjaCBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJEZW5tYXJrIiA+CiAgICAgICAgICAgIERlbm1hcmsKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRGppYm91dGkiID4KICAgICAgICAgICAgRGppYm91dGkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRG9taW5pY2EiID4KICAgICAgICAgICAgRG9taW5pY2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRG9taW5pY2FuIFJlcHVibGljIiA+CiAgICAgICAgICAgIERvbWluaWNhbiBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFY3VhZG9yIiA+CiAgICAgICAgICAgIEVjdWFkb3IKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRWd5cHQiID4KICAgICAgICAgICAgRWd5cHQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRWwgU2FsdmFkb3IiID4KICAgICAgICAgICAgRWwgU2FsdmFkb3IKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRXF1YXRvcmlhbCBHdWluZWEiID4KICAgICAgICAgICAgRXF1YXRvcmlhbCBHdWluZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRXJpdHJlYSIgPgogICAgICAgICAgICBFcml0cmVhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkVzdG9uaWEiID4KICAgICAgICAgICAgRXN0b25pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFdGhpb3BpYSIgPgogICAgICAgICAgICBFdGhpb3BpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGYWxrbGFuZCBJc2xhbmRzIChNYWx2aW5hcykiID4KICAgICAgICAgICAgRmFsa2xhbmQgSXNsYW5kcyAoTWFsdmluYXMpCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZhcm9lIElzbGFuZHMiID4KICAgICAgICAgICAgRmFyb2UgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGaWppIiA+CiAgICAgICAgICAgIEZpamkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRmlubGFuZCIgPgogICAgICAgICAgICBGaW5sYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZyYW5jZSIgPgogICAgICAgICAgICBGcmFuY2UKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRnJlbmNoIEd1aWFuYSIgPgogICAgICAgICAgICBGcmVuY2ggR3VpYW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZyZW5jaCBQb2x5bmVzaWEiID4KICAgICAgICAgICAgRnJlbmNoIFBvbHluZXNpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMiID4KICAgICAgICAgICAgRnJlbmNoIFNvdXRoZXJuIFRlcnJpdG9yaWVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdhYm9uIiA+CiAgICAgICAgICAgIEdhYm9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdhbWJpYSIgPgogICAgICAgICAgICBHYW1iaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR2VvcmdpYSIgPgogICAgICAgICAgICBHZW9yZ2lhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikdlcm1hbnkiID4KICAgICAgICAgICAgR2VybWFueQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHaGFuYSIgPgogICAgICAgICAgICBHaGFuYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHaWJyYWx0YXIiID4KICAgICAgICAgICAgR2licmFsdGFyCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdyZWVjZSIgPgogICAgICAgICAgICBHcmVlY2UKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3JlZW5sYW5kIiA+CiAgICAgICAgICAgIEdyZWVubGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHcmVuYWRhIiA+CiAgICAgICAgICAgIEdyZW5hZGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3VhZGVsb3VwZSIgPgogICAgICAgICAgICBHdWFkZWxvdXBlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1YW0iID4KICAgICAgICAgICAgR3VhbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHdWF0ZW1hbGEiID4KICAgICAgICAgICAgR3VhdGVtYWxhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1ZXJuc2V5IiA+CiAgICAgICAgICAgIEd1ZXJuc2V5CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1aW5lYSIgPgogICAgICAgICAgICBHdWluZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3VpbmVhLUJpc3NhdSIgPgogICAgICAgICAgICBHdWluZWEtQmlzc2F1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1eWFuYSIgPgogICAgICAgICAgICBHdXlhbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSGFpdGkiID4KICAgICAgICAgICAgSGFpdGkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSGVhcmQgSXNsYW5kIGFuZCBNY2RvbmFsZCBJc2xhbmRzIiA+CiAgICAgICAgICAgIEhlYXJkIElzbGFuZCBhbmQgTWNkb25hbGQgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKSIgPgogICAgICAgICAgICBIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb25kdXJhcyIgPgogICAgICAgICAgICBIb25kdXJhcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb25nIEtvbmciID4KICAgICAgICAgICAgSG9uZyBLb25nCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikh1bmdhcnkiID4KICAgICAgICAgICAgSHVuZ2FyeQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJY2VsYW5kIiA+CiAgICAgICAgICAgIEljZWxhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSW5kaWEiID4KICAgICAgICAgICAgSW5kaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSW5kb25lc2lhIiA+CiAgICAgICAgICAgIEluZG9uZXNpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJcmFuLCBJc2xhbWljIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIElyYW4sIElzbGFtaWMgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSXJhcSIgPgogICAgICAgICAgICBJcmFxCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IklyZWxhbmQiID4KICAgICAgICAgICAgSXJlbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJc3JhZWwiID4KICAgICAgICAgICAgSXNyYWVsCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikl0YWx5IiA+CiAgICAgICAgICAgIEl0YWx5CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkphbWFpY2EiID4KICAgICAgICAgICAgSmFtYWljYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJKYXBhbiIgPgogICAgICAgICAgICBKYXBhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJKb3JkYW4iID4KICAgICAgICAgICAgSm9yZGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkthemFraHN0YW4iID4KICAgICAgICAgICAgS2F6YWtoc3RhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLZW55YSIgPgogICAgICAgICAgICBLZW55YQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLaXJpYmF0aSIgPgogICAgICAgICAgICBLaXJpYmF0aQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLb3JlYSwgRGVtb2NyYXRpYyBQZW9wbGUmIzAzOTtzIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIEtvcmVhLCBEZW1vY3JhdGljIFBlb3BsZSYjMDM5O3MgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS29yZWEsIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIEtvcmVhLCBSZXB1YmxpYyBvZgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLdXdhaXQiID4KICAgICAgICAgICAgS3V3YWl0CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikt5cmd5enN0YW4iID4KICAgICAgICAgICAgS3lyZ3l6c3RhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMYW8gUGVvcGxlJiMwMzk7cyBEZW1vY3JhdGljIFJlcHVibGljIiA+CiAgICAgICAgICAgIExhbyBQZW9wbGUmIzAzOTtzIERlbW9jcmF0aWMgUmVwdWJsaWMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGF0dmlhIiA+CiAgICAgICAgICAgIExhdHZpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMZWJhbm9uIiA+CiAgICAgICAgICAgIExlYmFub24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGVzb3RobyIgPgogICAgICAgICAgICBMZXNvdGhvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkxpYmVyaWEiID4KICAgICAgICAgICAgTGliZXJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMaWJ5YW4gQXJhYiBKYW1haGlyaXlhIiA+CiAgICAgICAgICAgIExpYnlhbiBBcmFiIEphbWFoaXJpeWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGllY2h0ZW5zdGVpbiIgPgogICAgICAgICAgICBMaWVjaHRlbnN0ZWluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkxpdGh1YW5pYSIgPgogICAgICAgICAgICBMaXRodWFuaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTHV4ZW1ib3VyZyIgPgogICAgICAgICAgICBMdXhlbWJvdXJnCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hY2FvIiA+CiAgICAgICAgICAgIE1hY2FvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hY2Vkb25pYSwgdGhlIEZvcm1lciBZdWdvc2xhdiBSZXB1YmxpYyBvZiIgPgogICAgICAgICAgICBNYWNlZG9uaWEsIHRoZSBGb3JtZXIgWXVnb3NsYXYgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFkYWdhc2NhciIgPgogICAgICAgICAgICBNYWRhZ2FzY2FyCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hbGF3aSIgPgogICAgICAgICAgICBNYWxhd2kKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsYXlzaWEiID4KICAgICAgICAgICAgTWFsYXlzaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsZGl2ZXMiID4KICAgICAgICAgICAgTWFsZGl2ZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsaSIgPgogICAgICAgICAgICBNYWxpCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hbHRhIiA+CiAgICAgICAgICAgIE1hbHRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hcnNoYWxsIElzbGFuZHMiID4KICAgICAgICAgICAgTWFyc2hhbGwgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNYXJ0aW5pcXVlIiA+CiAgICAgICAgICAgIE1hcnRpbmlxdWUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWF1cml0YW5pYSIgPgogICAgICAgICAgICBNYXVyaXRhbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hdXJpdGl1cyIgPgogICAgICAgICAgICBNYXVyaXRpdXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWF5b3R0ZSIgPgogICAgICAgICAgICBNYXlvdHRlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1leGljbyIgPgogICAgICAgICAgICBNZXhpY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWljcm9uZXNpYSwgRmVkZXJhdGVkIFN0YXRlcyBvZiIgPgogICAgICAgICAgICBNaWNyb25lc2lhLCBGZWRlcmF0ZWQgU3RhdGVzIG9mCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbGRvdmEsIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIE1vbGRvdmEsIFJlcHVibGljIG9mCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbmFjbyIgPgogICAgICAgICAgICBNb25hY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW9uZ29saWEiID4KICAgICAgICAgICAgTW9uZ29saWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW9udGVuZWdybyIgPgogICAgICAgICAgICBNb250ZW5lZ3JvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbnRzZXJyYXQiID4KICAgICAgICAgICAgTW9udHNlcnJhdAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNb3JvY2NvIiA+CiAgICAgICAgICAgIE1vcm9jY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW96YW1iaXF1ZSIgPgogICAgICAgICAgICBNb3phbWJpcXVlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik15YW5tYXIiID4KICAgICAgICAgICAgTXlhbm1hcgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOYW1pYmlhIiA+CiAgICAgICAgICAgIE5hbWliaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmF1cnUiID4KICAgICAgICAgICAgTmF1cnUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmVwYWwiID4KICAgICAgICAgICAgTmVwYWwKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV0aGVybGFuZHMiID4KICAgICAgICAgICAgTmV0aGVybGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV0aGVybGFuZHMgQW50aWxsZXMiID4KICAgICAgICAgICAgTmV0aGVybGFuZHMgQW50aWxsZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV3IENhbGVkb25pYSIgPgogICAgICAgICAgICBOZXcgQ2FsZWRvbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5ldyBaZWFsYW5kIiA+CiAgICAgICAgICAgIE5ldyBaZWFsYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5pY2FyYWd1YSIgPgogICAgICAgICAgICBOaWNhcmFndWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmlnZXIiID4KICAgICAgICAgICAgTmlnZXIKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmlnZXJpYSIgPgogICAgICAgICAgICBOaWdlcmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5pdWUiID4KICAgICAgICAgICAgTml1ZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOb3Jmb2xrIElzbGFuZCIgPgogICAgICAgICAgICBOb3Jmb2xrIElzbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOb3J0aGVybiBNYXJpYW5hIElzbGFuZHMiID4KICAgICAgICAgICAgTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5vcndheSIgPgogICAgICAgICAgICBOb3J3YXkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iT21hbiIgPgogICAgICAgICAgICBPbWFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBha2lzdGFuIiA+CiAgICAgICAgICAgIFBha2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhbGF1IiA+CiAgICAgICAgICAgIFBhbGF1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhbGVzdGluaWFuIFRlcnJpdG9yeSwgT2NjdXBpZWQiID4KICAgICAgICAgICAgUGFsZXN0aW5pYW4gVGVycml0b3J5LCBPY2N1cGllZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQYW5hbWEiID4KICAgICAgICAgICAgUGFuYW1hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhcHVhIE5ldyBHdWluZWEiID4KICAgICAgICAgICAgUGFwdWEgTmV3IEd1aW5lYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQYXJhZ3VheSIgPgogICAgICAgICAgICBQYXJhZ3VheQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQZXJ1IiA+CiAgICAgICAgICAgIFBlcnUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGhpbGlwcGluZXMiID4KICAgICAgICAgICAgUGhpbGlwcGluZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGl0Y2Fpcm4iID4KICAgICAgICAgICAgUGl0Y2Fpcm4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUG9sYW5kIiA+CiAgICAgICAgICAgIFBvbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQb3J0dWdhbCIgPgogICAgICAgICAgICBQb3J0dWdhbAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQdWVydG8gUmljbyIgPgogICAgICAgICAgICBQdWVydG8gUmljbwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJRYXRhciIgPgogICAgICAgICAgICBRYXRhcgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJSZXVuaW9uIiA+CiAgICAgICAgICAgIFJldW5pb24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUm9tYW5pYSIgPgogICAgICAgICAgICBSb21hbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlJ1c3NpYW4gRmVkZXJhdGlvbiIgPgogICAgICAgICAgICBSdXNzaWFuIEZlZGVyYXRpb24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUndhbmRhIiA+CiAgICAgICAgICAgIFJ3YW5kYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTYWludCBIZWxlbmEiID4KICAgICAgICAgICAgU2FpbnQgSGVsZW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhaW50IEtpdHRzIGFuZCBOZXZpcyIgPgogICAgICAgICAgICBTYWludCBLaXR0cyBhbmQgTmV2aXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2FpbnQgTHVjaWEiID4KICAgICAgICAgICAgU2FpbnQgTHVjaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2FpbnQgUGllcnJlIGFuZCBNaXF1ZWxvbiIgPgogICAgICAgICAgICBTYWludCBQaWVycmUgYW5kIE1pcXVlbG9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzIiA+CiAgICAgICAgICAgIFNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhbW9hIiA+CiAgICAgICAgICAgIFNhbW9hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhbiBNYXJpbm8iID4KICAgICAgICAgICAgU2FuIE1hcmlubwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTYW8gVG9tZSBhbmQgUHJpbmNpcGUiID4KICAgICAgICAgICAgU2FvIFRvbWUgYW5kIFByaW5jaXBlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhdWRpIEFyYWJpYSIgPgogICAgICAgICAgICBTYXVkaSBBcmFiaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2VuZWdhbCIgPgogICAgICAgICAgICBTZW5lZ2FsCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNlcmJpYSIgPgogICAgICAgICAgICBTZXJiaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2V5Y2hlbGxlcyIgPgogICAgICAgICAgICBTZXljaGVsbGVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNpZXJyYSBMZW9uZSIgPgogICAgICAgICAgICBTaWVycmEgTGVvbmUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2luZ2Fwb3JlIiA+CiAgICAgICAgICAgIFNpbmdhcG9yZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTbG92YWtpYSIgPgogICAgICAgICAgICBTbG92YWtpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTbG92ZW5pYSIgPgogICAgICAgICAgICBTbG92ZW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTb2xvbW9uIElzbGFuZHMiID4KICAgICAgICAgICAgU29sb21vbiBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNvbWFsaWEiID4KICAgICAgICAgICAgU29tYWxpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTb3V0aCBBZnJpY2EiID4KICAgICAgICAgICAgU291dGggQWZyaWNhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzIiA+CiAgICAgICAgICAgIFNvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNwYWluIiA+CiAgICAgICAgICAgIFNwYWluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNyaSBMYW5rYSIgPgogICAgICAgICAgICBTcmkgTGFua2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3VkYW4iID4KICAgICAgICAgICAgU3VkYW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3VyaW5hbWUiID4KICAgICAgICAgICAgU3VyaW5hbWUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3ZhbGJhcmQgYW5kIEphbiBNYXllbiIgPgogICAgICAgICAgICBTdmFsYmFyZCBhbmQgSmFuIE1heWVuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlN3YXppbGFuZCIgPgogICAgICAgICAgICBTd2F6aWxhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3dlZGVuIiA+CiAgICAgICAgICAgIFN3ZWRlbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTd2l0emVybGFuZCIgPgogICAgICAgICAgICBTd2l0emVybGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTeXJpYW4gQXJhYiBSZXB1YmxpYyIgPgogICAgICAgICAgICBTeXJpYW4gQXJhYiBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUYWl3YW4sIFByb3ZpbmNlIG9mIENoaW5hIiA+CiAgICAgICAgICAgIFRhaXdhbiwgUHJvdmluY2Ugb2YgQ2hpbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVGFqaWtpc3RhbiIgPgogICAgICAgICAgICBUYWppa2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRhbnphbmlhLCBVbml0ZWQgUmVwdWJsaWMgb2YiID4KICAgICAgICAgICAgVGFuemFuaWEsIFVuaXRlZCBSZXB1YmxpYyBvZgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUaGFpbGFuZCIgPgogICAgICAgICAgICBUaGFpbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUaW1vci1MZXN0ZSIgPgogICAgICAgICAgICBUaW1vci1MZXN0ZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUb2dvIiA+CiAgICAgICAgICAgIFRvZ28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVG9rZWxhdSIgPgogICAgICAgICAgICBUb2tlbGF1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRvbmdhIiA+CiAgICAgICAgICAgIFRvbmdhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRyaW5pZGFkIGFuZCBUb2JhZ28iID4KICAgICAgICAgICAgVHJpbmlkYWQgYW5kIFRvYmFnbwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUdW5pc2lhIiA+CiAgICAgICAgICAgIFR1bmlzaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVHVya2V5IiA+CiAgICAgICAgICAgIFR1cmtleQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUdXJrbWVuaXN0YW4iID4KICAgICAgICAgICAgVHVya21lbmlzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlR1cmtzIGFuZCBDYWljb3MgSXNsYW5kcyIgPgogICAgICAgICAgICBUdXJrcyBhbmQgQ2FpY29zIElzbGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVHV2YWx1IiA+CiAgICAgICAgICAgIFR1dmFsdQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVZ2FuZGEiID4KICAgICAgICAgICAgVWdhbmRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlVrcmFpbmUiID4KICAgICAgICAgICAgVWtyYWluZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgQXJhYiBFbWlyYXRlcyIgPgogICAgICAgICAgICBVbml0ZWQgQXJhYiBFbWlyYXRlcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgS2luZ2RvbSIgPgogICAgICAgICAgICBVbml0ZWQgS2luZ2RvbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgU3RhdGVzIiA+CiAgICAgICAgICAgIFVuaXRlZCBTdGF0ZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVW5pdGVkIFN0YXRlcyBNaW5vciBPdXRseWluZyBJc2xhbmRzIiA+CiAgICAgICAgICAgIFVuaXRlZCBTdGF0ZXMgTWlub3IgT3V0bHlpbmcgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVcnVndWF5IiA+CiAgICAgICAgICAgIFVydWd1YXkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVXpiZWtpc3RhbiIgPgogICAgICAgICAgICBVemJla2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlZhbnVhdHUiID4KICAgICAgICAgICAgVmFudWF0dQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWZW5lenVlbGEiID4KICAgICAgICAgICAgVmVuZXp1ZWxhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlZpZXRuYW0iID4KICAgICAgICAgICAgVmlldG5hbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWaXJnaW4gSXNsYW5kcywgQnJpdGlzaCIgPgogICAgICAgICAgICBWaXJnaW4gSXNsYW5kcywgQnJpdGlzaAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWaXJnaW4gSXNsYW5kcywgVS5zLiIgPgogICAgICAgICAgICBWaXJnaW4gSXNsYW5kcywgVS5zLgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJXYWxsaXMgYW5kIEZ1dHVuYSIgPgogICAgICAgICAgICBXYWxsaXMgYW5kIEZ1dHVuYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJXZXN0ZXJuIFNhaGFyYSIgPgogICAgICAgICAgICBXZXN0ZXJuIFNhaGFyYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJZZW1lbiIgPgogICAgICAgICAgICBZZW1lbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJaYW1iaWEiID4KICAgICAgICAgICAgWmFtYmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlppbWJhYndlIiA+CiAgICAgICAgICAgIFppbWJhYndlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNHIiA+CiAgICAgICAgICAgIFNHCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNBTkFEQSIgPgogICAgICAgICAgICBDQU5BREEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS29yZWEiID4KICAgICAgICAgICAgS29yZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIiA+CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikx1eGVtYm91cmdoIiA+CiAgICAgICAgICAgIEx1eGVtYm91cmdoCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1ZIiA+CiAgICAgICAgICAgIE1ZCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkVTV0FSVElOSSIgPgogICAgICAgICAgICBFU1dBUlRJTkkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZVN3YXRpbmkgIiA+CiAgICAgICAgICAgIGVTd2F0aW5pCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNaIiA+CiAgICAgICAgICAgIFNaCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNBIiA+CiAgICAgICAgICAgIENBCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdyZWF0IEJyaXRhaW4iID4KICAgICAgICAgICAgR3JlYXQgQnJpdGFpbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJSdXNzaWEiID4KICAgICAgICAgICAgUnVzc2lhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkhvbmcgS29uZyBTQVIgQ2hpbmEiID4KICAgICAgICAgICAgSG9uZyBLb25nIFNBUiBDaGluYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMb25kb24iID4KICAgICAgICAgICAgTG9uZG9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICA8L3NlbGVjdD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX2ZpZWxkMiBfZnVsbF93aWR0aCAiID4KICAgICAgPGRpdiBjbGFzcz0iX3JvdyI+CiAgICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgICBQcml2YWN5IFBvbGljeSoKICAgICAgICA8L2xhYmVsPgogICAgICA8L2Rpdj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmllbGRbMl1bXSIgdmFsdWU9In58Ij4KICAgICAgPGRpdiBjbGFzcz0iX3JvdyBfY2hlY2tib3gtcmFkaW8iPgogICAgICAgIDxpbnB1dCBpZD0iZmllbGRfMkkgcmVhZCBhbmQgdW5kZXJzdG9vZCBDRlRFIFByaXZhY3kgUG9saWN5ICh3d3cuY2Z0ZS5lZHVjYXRpb24vcHJpdmFjeS1wb2xpY3kpIiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmllbGRbMl1bXSIgdmFsdWU9IkkgcmVhZCBhbmQgdW5kZXJzdG9vZCBDRlRFIFByaXZhY3kgUG9saWN5ICh3d3cuY2Z0ZS5lZHVjYXRpb24vcHJpdmFjeS1wb2xpY3kpIiBjbGFzcz0iYW55IiAgcmVxdWlyZWQ+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8ySSByZWFkIGFuZCB1bmRlcnN0b29kIENGVEUgUHJpdmFjeSBQb2xpY3kgKHd3dy5jZnRlLmVkdWNhdGlvbi9wcml2YWN5LXBvbGljeSkiPgogICAgICAgICAgICBJIHJlYWQgYW5kIHVuZGVyc3Rvb2QgQ0ZURSBQcml2YWN5IFBvbGljeSAod3d3LmNmdGUuZWR1Y2F0aW9uL3ByaXZhY3ktcG9saWN5KQogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF9maWVsZDMgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3ciPgogICAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgICAgQ29tbXVuaWNhdGlvbiBvcHRpb25zCiAgICAgICAgPC9sYWJlbD4KICAgICAgPC9kaXY+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpZWxkWzNdW10iIHZhbHVlPSJ+fCI+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3cgX2NoZWNrYm94LXJhZGlvIj4KICAgICAgICA8aW5wdXQgaWQ9ImZpZWxkXzNJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbCIgdHlwZT0iY2hlY2tib3giIG5hbWU9ImZpZWxkWzNdW10iIHZhbHVlPSJJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbCIgICA+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8zSSYjMDM5O20gaGFwcHkgdG8gcmVjZWl2ZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IENGVEUmIzAzOTtzIGNvdXJzZXMgYnkgZW1haWwiPgogICAgICAgICAgICBJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbAogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJfcm93IF9jaGVja2JveC1yYWRpbyI+CiAgICAgICAgPGlucHV0IGlkPSJmaWVsZF8zSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyIiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmllbGRbM11bXSIgdmFsdWU9Ikkgd2FudCB0byByZWNlaXZlIENGVEUmIzAzOTtzIGdlbmVyYWwgbmV3c2xldHRlciIgICA+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8zSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyIj4KICAgICAgICAgICAgSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyCiAgICAgICAgICA8L2xhYmVsPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3cgX2NoZWNrYm94LXJhZGlvIj4KICAgICAgICA8aW5wdXQgaWQ9ImZpZWxkXzNJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlciAiIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJmaWVsZFszXVtdIiB2YWx1ZT0iSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZXZlbnRzIG5ld3NsZXR0ZXIgIiAgID4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxsYWJlbCBmb3I9ImZpZWxkXzNJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlciAiPgogICAgICAgICAgICBJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlcgogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfYnV0dG9uLXdyYXBwZXIgX2Z1bGxfd2lkdGgiPgogICAgICA8YnV0dG9uIGlkPSJfZm9ybV8zMV9zdWJtaXQiIGNsYXNzPSJfc3VibWl0IiB0eXBlPSJzdWJtaXQiPgogICAgICAgIFN1Ym1pdAogICAgICA8L2J1dHRvbj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iX2NsZWFyLWVsZW1lbnQiPgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iX2Zvcm0tdGhhbmsteW91IiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgPC9kaXY+CjwvZm9ybT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CndpbmRvdy5jZmllbGRzID0geyIxIjoiY291bnRyeSIsIjIiOiJwcml2YWN5X3BvbGljeSIsIjMiOiJjb21tdW5pY2F0aW9uX29wdGlvbnMifTsKd2luZG93Ll9zaG93X3RoYW5rX3lvdSA9IGZ1bmN0aW9uKGlkLCBtZXNzYWdlLCB0cmFja2NtcF91cmwpIHsKICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfZm9ybV8nICsgaWQgKyAnXycpLCB0aGFua195b3UgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybS10aGFuay15b3UnKTsKICBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybS1jb250ZW50Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICB0aGFua195b3UuaW5uZXJIVE1MID0gbWVzc2FnZTsKICB0aGFua195b3Uuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgaWYgKHR5cGVvZih0cmFja2NtcF91cmwpICE9ICd1bmRlZmluZWQnICYmIHRyYWNrY21wX3VybCkgewogICAgLy8gU2l0ZSB0cmFja2luZyBVUkwgdG8gdXNlIGFmdGVyIGlubGluZSBmb3JtIHN1Ym1pc3Npb24uCiAgICBfbG9hZF9zY3JpcHQodHJhY2tjbXBfdXJsKTsKICB9CiAgaWYgKHR5cGVvZiB3aW5kb3cuX2Zvcm1fY2FsbGJhY2sgIT09ICd1bmRlZmluZWQnKSB3aW5kb3cuX2Zvcm1fY2FsbGJhY2soaWQpOwp9Owp3aW5kb3cuX3Nob3dfZXJyb3IgPSBmdW5jdGlvbihpZCwgbWVzc2FnZSwgaHRtbCkgewogIHZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ19mb3JtXycgKyBpZCArICdfJyksIGVyciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCBidXR0b24gPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpLCBvbGRfZXJyb3IgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybV9lcnJvcicpOwogIGlmIChvbGRfZXJyb3IpIG9sZF9lcnJvci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG9sZF9lcnJvcik7CiAgZXJyLmlubmVySFRNTCA9IG1lc3NhZ2U7CiAgZXJyLmNsYXNzTmFtZSA9ICdfZXJyb3ItaW5uZXIgX2Zvcm1fZXJyb3IgX25vX2Fycm93JzsKICB2YXIgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogIHdyYXBwZXIuY2xhc3NOYW1lID0gJ19mb3JtLWlubmVyJzsKICB3cmFwcGVyLmFwcGVuZENoaWxkKGVycik7CiAgYnV0dG9uLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHdyYXBwZXIsIGJ1dHRvbik7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2lkXj0iX2Zvcm0iXVtpZCQ9Il9zdWJtaXQiXScpLmRpc2FibGVkID0gZmFsc2U7CiAgaWYgKGh0bWwpIHsKICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGRpdi5jbGFzc05hbWUgPSAnX2Vycm9yLWh0bWwnOwogICAgZGl2LmlubmVySFRNTCA9IGh0bWw7CiAgICBlcnIuYXBwZW5kQ2hpbGQoZGl2KTsKICB9Cn07CndpbmRvdy5fbG9hZF9zY3JpcHQgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKSB7CiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKSwgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksIHIgPSBmYWxzZTsKICAgIHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICBzY3JpcHQuY2hhcnNldCA9ICd1dGYtOCc7CiAgICBzY3JpcHQuc3JjID0gdXJsOwogICAgaWYgKGNhbGxiYWNrKSB7CiAgICAgIHNjcmlwdC5vbmxvYWQgPSBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgIGlmICghciAmJiAoIXRoaXMucmVhZHlTdGF0ZSB8fCB0aGlzLnJlYWR5U3RhdGUgPT0gJ2NvbXBsZXRlJykpIHsKICAgICAgICByID0gdHJ1ZTsKICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH0KICAgICAgfTsKICAgIH0KICAgIGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKfTsKKGZ1bmN0aW9uKCkgewogIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoLnNlYXJjaCgiZXhjbHVkZWZvcm0iKSAhPT0gLTEpIHJldHVybiBmYWxzZTsKICB2YXIgZ2V0Q29va2llID0gZnVuY3Rpb24obmFtZSkgewogICAgdmFyIG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDsgKScgKyBuYW1lICsgJz0oW147XSspJykpOwogICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMl0gOiBudWxsOwogIH0KICB2YXIgc2V0Q29va2llID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHsKICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpOwogICAgdmFyIHRpbWUgPSBub3cuZ2V0VGltZSgpOwogICAgdmFyIGV4cGlyZVRpbWUgPSB0aW1lICsgMTAwMCAqIDYwICogNjAgKiAyNCAqIDM2NTsKICAgIG5vdy5zZXRUaW1lKGV4cGlyZVRpbWUpOwogICAgZG9jdW1lbnQuY29va2llID0gbmFtZSArICc9JyArIHZhbHVlICsgJzsgZXhwaXJlcz0nICsgbm93ICsgJztwYXRoPS8nOwogIH0KICAgICAgdmFyIGFkZEV2ZW50ID0gZnVuY3Rpb24oZWxlbWVudCwgZXZlbnQsIGZ1bmMpIHsKICAgIGlmIChlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBmdW5jKTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBvbGRGdW5jID0gZWxlbWVudFsnb24nICsgZXZlbnRdOwogICAgICBlbGVtZW50WydvbicgKyBldmVudF0gPSBmdW5jdGlvbigpIHsKICAgICAgICBvbGRGdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICB9OwogICAgfQogIH0KICB2YXIgX3JlbW92ZWQgPSBmYWxzZTsKICB2YXIgZm9ybV90b19zdWJtaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX2Zvcm1fMzFfJyk7CiAgdmFyIGFsbElucHV0cyA9IGZvcm1fdG9fc3VibWl0LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0LCBzZWxlY3QsIHRleHRhcmVhJyksIHRvb2x0aXBzID0gW10sIHN1Ym1pdHRlZCA9IGZhbHNlOwoKICB2YXIgZ2V0VXJsUGFyYW0gPSBmdW5jdGlvbihuYW1lKSB7CiAgICB2YXIgcmVnZXhTdHIgPSAnW1w/Jl0nICsgbmFtZSArICc9KFteJiNdKiknOwogICAgdmFyIHJlc3VsdHMgPSBuZXcgUmVnRXhwKHJlZ2V4U3RyLCAnaScpLmV4ZWMod2luZG93LmxvY2F0aW9uLmhyZWYpOwogICAgcmV0dXJuIHJlc3VsdHMgIT0gdW5kZWZpbmVkID8gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMV0pIDogZmFsc2U7CiAgfTsKCiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxJbnB1dHMubGVuZ3RoOyBpKyspIHsKICAgIHZhciByZWdleFN0ciA9ICJmaWVsZFxcWyhcXGQrKVxcXSI7CiAgICB2YXIgcmVzdWx0cyA9IG5ldyBSZWdFeHAocmVnZXhTdHIpLmV4ZWMoYWxsSW5wdXRzW2ldLm5hbWUpOwogICAgaWYgKHJlc3VsdHMgIT0gdW5kZWZpbmVkKSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSB3aW5kb3cuY2ZpZWxkc1tyZXN1bHRzWzFdXTsKICAgIH0gZWxzZSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSBhbGxJbnB1dHNbaV0ubmFtZTsKICAgIH0KICAgIHZhciBmaWVsZFZhbCA9IGdldFVybFBhcmFtKGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUpOwoKICAgIGlmIChmaWVsZFZhbCkgewogICAgICBpZiAoYWxsSW5wdXRzW2ldLnR5cGUgPT0gInJhZGlvIiB8fCBhbGxJbnB1dHNbaV0udHlwZSA9PSAiY2hlY2tib3giKSB7CiAgICAgICAgaWYgKGFsbElucHV0c1tpXS52YWx1ZSA9PSBmaWVsZFZhbCkgewogICAgICAgICAgYWxsSW5wdXRzW2ldLmNoZWNrZWQgPSB0cnVlOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBhbGxJbnB1dHNbaV0udmFsdWUgPSBmaWVsZFZhbDsKICAgICAgfQogICAgfQogIH0KCiAgdmFyIHJlbW92ZV90b29sdGlwcyA9IGZ1bmN0aW9uKCkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b29sdGlwcy5sZW5ndGg7IGkrKykgewogICAgICB0b29sdGlwc1tpXS50aXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0b29sdGlwc1tpXS50aXApOwogICAgfQogICAgICB0b29sdGlwcyA9IFtdOwogIH07CiAgdmFyIHJlbW92ZV90b29sdGlwID0gZnVuY3Rpb24oZWxlbSkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b29sdGlwcy5sZW5ndGg7IGkrKykgewogICAgICBpZiAodG9vbHRpcHNbaV0uZWxlbSA9PT0gZWxlbSkgewogICAgICAgIHRvb2x0aXBzW2ldLnRpcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRvb2x0aXBzW2ldLnRpcCk7CiAgICAgICAgdG9vbHRpcHMuc3BsaWNlKGksIDEpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQogIH07CiAgdmFyIGNyZWF0ZV90b29sdGlwID0gZnVuY3Rpb24oZWxlbSwgdGV4dCkgewogICAgdmFyIHRvb2x0aXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgYXJyb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgaW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgbmV3X3Rvb2x0aXAgPSB7fTsKICAgIGlmIChlbGVtLnR5cGUgIT0gJ3JhZGlvJyAmJiBlbGVtLnR5cGUgIT0gJ2NoZWNrYm94JykgewogICAgICB0b29sdGlwLmNsYXNzTmFtZSA9ICdfZXJyb3InOwogICAgICBhcnJvdy5jbGFzc05hbWUgPSAnX2Vycm9yLWFycm93JzsKICAgICAgaW5uZXIuY2xhc3NOYW1lID0gJ19lcnJvci1pbm5lcic7CiAgICAgIGlubmVyLmlubmVySFRNTCA9IHRleHQ7CiAgICAgIHRvb2x0aXAuYXBwZW5kQ2hpbGQoYXJyb3cpOwogICAgICB0b29sdGlwLmFwcGVuZENoaWxkKGlubmVyKTsKICAgICAgZWxlbS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRvb2x0aXApOwogICAgfSBlbHNlIHsKICAgICAgdG9vbHRpcC5jbGFzc05hbWUgPSAnX2Vycm9yLWlubmVyIF9ub19hcnJvdyc7CiAgICAgIHRvb2x0aXAuaW5uZXJIVE1MID0gdGV4dDsKICAgICAgZWxlbS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0b29sdGlwLCBlbGVtKTsKICAgICAgbmV3X3Rvb2x0aXAubm9fYXJyb3cgPSB0cnVlOwogICAgfQogICAgbmV3X3Rvb2x0aXAudGlwID0gdG9vbHRpcDsKICAgIG5ld190b29sdGlwLmVsZW0gPSBlbGVtOwogICAgdG9vbHRpcHMucHVzaChuZXdfdG9vbHRpcCk7CiAgICByZXR1cm4gbmV3X3Rvb2x0aXA7CiAgfTsKICB2YXIgcmVzaXplX3Rvb2x0aXAgPSBmdW5jdGlvbih0b29sdGlwKSB7CiAgICB2YXIgcmVjdCA9IHRvb2x0aXAuZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHNjcm9sbFBvc2l0aW9uID0gcmVjdC50b3AgLSAoKHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2Muc2Nyb2xsVG9wKSAgLSAoZG9jLmNsaWVudFRvcCB8fCAwKSk7CiAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPCA0MCkgewogICAgICB0b29sdGlwLnRpcC5jbGFzc05hbWUgPSB0b29sdGlwLnRpcC5jbGFzc05hbWUucmVwbGFjZSgvID8oX2Fib3ZlfF9iZWxvdykgPy9nLCAnJykgKyAnIF9iZWxvdyc7CiAgICB9IGVsc2UgewogICAgICB0b29sdGlwLnRpcC5jbGFzc05hbWUgPSB0b29sdGlwLnRpcC5jbGFzc05hbWUucmVwbGFjZSgvID8oX2Fib3ZlfF9iZWxvdykgPy9nLCAnJykgKyAnIF9hYm92ZSc7CiAgICB9CiAgfTsKICB2YXIgcmVzaXplX3Rvb2x0aXBzID0gZnVuY3Rpb24oKSB7CiAgICBpZiAoX3JlbW92ZWQpIHJldHVybjsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9vbHRpcHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKCF0b29sdGlwc1tpXS5ub19hcnJvdykgcmVzaXplX3Rvb2x0aXAodG9vbHRpcHNbaV0pOwogICAgfQogIH07CiAgdmFyIHZhbGlkYXRlX2ZpZWxkID0gZnVuY3Rpb24oZWxlbSwgcmVtb3ZlKSB7CiAgICB2YXIgdG9vbHRpcCA9IG51bGwsIHZhbHVlID0gZWxlbS52YWx1ZSwgbm9fZXJyb3IgPSB0cnVlOwogICAgcmVtb3ZlID8gcmVtb3ZlX3Rvb2x0aXAoZWxlbSkgOiBmYWxzZTsKICAgIGlmIChlbGVtLnR5cGUgIT0gJ2NoZWNrYm94JykgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZS5yZXBsYWNlKC8gP19oYXNfZXJyb3IgPy9nLCAnJyk7CiAgICBpZiAoZWxlbS5nZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJykgIT09IG51bGwpIHsKICAgICAgaWYgKGVsZW0udHlwZSA9PSAncmFkaW8nIHx8IChlbGVtLnR5cGUgPT0gJ2NoZWNrYm94JyAmJiAvYW55Ly50ZXN0KGVsZW0uY2xhc3NOYW1lKSkpIHsKICAgICAgICB2YXIgZWxlbXMgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbGVtLm5hbWVdOwogICAgICAgIGlmICghKGVsZW1zIGluc3RhbmNlb2YgTm9kZUxpc3QgfHwgZWxlbXMgaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbikgfHwgZWxlbXMubGVuZ3RoIDw9IDEpIHsKICAgICAgICAgIG5vX2Vycm9yID0gZWxlbS5jaGVja2VkOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIG5vX2Vycm9yID0gZmFsc2U7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChlbGVtc1tpXS5jaGVja2VkKSBub19lcnJvciA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghbm9fZXJyb3IpIHsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiUGxlYXNlIHNlbGVjdCBhbiBvcHRpb24uIik7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGVsZW0udHlwZSA9PSdjaGVja2JveCcpIHsKICAgICAgICB2YXIgZWxlbXMgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbGVtLm5hbWVdLCBmb3VuZCA9IGZhbHNlLCBlcnIgPSBbXTsKICAgICAgICBub19lcnJvciA9IHRydWU7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgaWYgKGVsZW1zW2ldLmdldEF0dHJpYnV0ZSgncmVxdWlyZWQnKSA9PT0gbnVsbCkgY29udGludWU7CiAgICAgICAgICBpZiAoIWZvdW5kICYmIGVsZW1zW2ldICE9PSBlbGVtKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgIGVsZW1zW2ldLmNsYXNzTmFtZSA9IGVsZW1zW2ldLmNsYXNzTmFtZS5yZXBsYWNlKC8gP19oYXNfZXJyb3IgPy9nLCAnJyk7CiAgICAgICAgICBpZiAoIWVsZW1zW2ldLmNoZWNrZWQpIHsKICAgICAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgICAgICAgZWxlbXNbaV0uY2xhc3NOYW1lID0gZWxlbXNbaV0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICAgICAgZXJyLnB1c2goIkNoZWNraW5nICVzIGlzIHJlcXVpcmVkIi5yZXBsYWNlKCIlcyIsIGVsZW1zW2ldLnZhbHVlKSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghbm9fZXJyb3IpIHsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCBlcnIuam9pbignPGJyLz4nKSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGVsZW0udGFnTmFtZSA9PSAnU0VMRUNUJykgewogICAgICAgIHZhciBzZWxlY3RlZCA9IHRydWU7CiAgICAgICAgaWYgKGVsZW0ubXVsdGlwbGUpIHsKICAgICAgICAgIHNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW0ub3B0aW9ucy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZWxlbS5vcHRpb25zW2ldLnNlbGVjdGVkKSB7CiAgICAgICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbS5vcHRpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChlbGVtLm9wdGlvbnNbaV0uc2VsZWN0ZWQgJiYgIWVsZW0ub3B0aW9uc1tpXS52YWx1ZSkgewogICAgICAgICAgICAgIHNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFzZWxlY3RlZCkgewogICAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZSArICcgX2hhc19lcnJvcic7CiAgICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgICAgdG9vbHRpcCA9IGNyZWF0ZV90b29sdGlwKGVsZW0sICJQbGVhc2Ugc2VsZWN0IGFuIG9wdGlvbi4iKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKTsKICAgICAgfQogICAgfQogICAgaWYgKG5vX2Vycm9yICYmIGVsZW0ubmFtZSA9PSAnZW1haWwnKSB7CiAgICAgIGlmICghdmFsdWUubWF0Y2goL15bXCtfYS16MC05LScmPV0rKFwuW1wrX2EtejAtOS0nXSspKkBbYS16MC05LV0rKFwuW2EtejAtOS1dKykqKFwuW2Etel17Mix9KSQvaSkpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLiIpOwogICAgICB9CiAgICB9CiAgICBpZiAobm9fZXJyb3IgJiYgL2RhdGVfZmllbGQvLnRlc3QoZWxlbS5jbGFzc05hbWUpKSB7CiAgICAgIGlmICghdmFsdWUubWF0Y2goL15cZFxkXGRcZC1cZFxkLVxkXGQkLykpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiRW50ZXIgYSB2YWxpZCBkYXRlLiIpOwogICAgICB9CiAgICB9CiAgICB0b29sdGlwID8gcmVzaXplX3Rvb2x0aXAodG9vbHRpcCkgOiBmYWxzZTsKICAgIHJldHVybiBub19lcnJvcjsKICB9OwogIHZhciBuZWVkc192YWxpZGF0ZSA9IGZ1bmN0aW9uKGVsKSB7CiAgICByZXR1cm4gZWwubmFtZSA9PSAnZW1haWwnIHx8IGVsLmdldEF0dHJpYnV0ZSgncmVxdWlyZWQnKSAhPT0gbnVsbDsKICB9OwogIHZhciB2YWxpZGF0ZV9mb3JtID0gZnVuY3Rpb24oZSkgewogICAgdmFyIGVyciA9IGZvcm1fdG9fc3VibWl0LnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybV9lcnJvcicpLCBub19lcnJvciA9IHRydWU7CiAgICBpZiAoIXN1Ym1pdHRlZCkgewogICAgICBzdWJtaXR0ZWQgPSB0cnVlOwogICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYWxsSW5wdXRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgdmFyIGlucHV0ID0gYWxsSW5wdXRzW2ldOwogICAgICAgIGlmIChuZWVkc192YWxpZGF0ZShpbnB1dCkpIHsKICAgICAgICAgIGlmIChpbnB1dC50eXBlID09ICd0ZXh0JykgewogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJ2JsdXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS50cmltKCk7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJ2lucHV0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC50eXBlID09ICdyYWRpbycgfHwgaW5wdXQudHlwZSA9PSAnY2hlY2tib3gnKSB7CiAgICAgICAgICAgIChmdW5jdGlvbihlbCkgewogICAgICAgICAgICAgIHZhciByYWRpb3MgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbC5uYW1lXTsKICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhZGlvcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgYWRkRXZlbnQocmFkaW9zW2ldLCAnY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQoZWwsIHRydWUpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KShpbnB1dCk7CiAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnRhZ05hbWUgPT0gJ1NFTEVDVCcpIHsKICAgICAgICAgICAgYWRkRXZlbnQoaW5wdXQsICdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB2YWxpZGF0ZV9maWVsZCh0aGlzLCB0cnVlKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZW1vdmVfdG9vbHRpcHMoKTsKICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhbGxJbnB1dHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgdmFyIGVsZW0gPSBhbGxJbnB1dHNbaV07CiAgICAgIGlmIChuZWVkc192YWxpZGF0ZShlbGVtKSkgewogICAgICAgIGlmIChlbGVtLnRhZ05hbWUudG9Mb3dlckNhc2UoKSAhPT0gInNlbGVjdCIpIHsKICAgICAgICAgIGVsZW0udmFsdWUgPSBlbGVtLnZhbHVlLnRyaW0oKTsKICAgICAgICB9CiAgICAgICAgdmFsaWRhdGVfZmllbGQoZWxlbSkgPyB0cnVlIDogbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKCFub19lcnJvciAmJiBlKSB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIH0KICAgIHJlc2l6ZV90b29sdGlwcygpOwogICAgcmV0dXJuIG5vX2Vycm9yOwogIH07CiAgYWRkRXZlbnQod2luZG93LCAncmVzaXplJywgcmVzaXplX3Rvb2x0aXBzKTsKICBhZGRFdmVudCh3aW5kb3csICdzY3JvbGwnLCByZXNpemVfdG9vbHRpcHMpOwogIHdpbmRvdy5fb2xkX3NlcmlhbGl6ZSA9IG51bGw7CiAgaWYgKHR5cGVvZiBzZXJpYWxpemUgIT09ICd1bmRlZmluZWQnKSB3aW5kb3cuX29sZF9zZXJpYWxpemUgPSB3aW5kb3cuc2VyaWFsaXplOwogIF9sb2FkX3NjcmlwdCgiLy9kM3J4YWlqNTZ2amVnZS5jbG91ZGZyb250Lm5ldC9mb3JtLXNlcmlhbGl6ZS8wLjMvc2VyaWFsaXplLm1pbi5qcyIsIGZ1bmN0aW9uKCkgewogICAgd2luZG93Ll9mb3JtX3NlcmlhbGl6ZSA9IHdpbmRvdy5zZXJpYWxpemU7CiAgICBpZiAod2luZG93Ll9vbGRfc2VyaWFsaXplKSB3aW5kb3cuc2VyaWFsaXplID0gd2luZG93Ll9vbGRfc2VyaWFsaXplOwogIH0pOwogIHZhciBmb3JtX3N1Ym1pdCA9IGZ1bmN0aW9uKGUpIHsKICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIGlmICh2YWxpZGF0ZV9mb3JtKCkpIHsKICAgICAgLy8gdXNlIHRoaXMgdHJpY2sgdG8gZ2V0IHRoZSBzdWJtaXQgYnV0dG9uICYgZGlzYWJsZSBpdCB1c2luZyBwbGFpbiBqYXZhc2NyaXB0CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNfZm9ybV8zMV9zdWJtaXQnKS5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAgIHZhciBzZXJpYWxpemVkID0gX2Zvcm1fc2VyaWFsaXplKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfZm9ybV8zMV8nKSk7CiAgICAgIHZhciBlcnIgPSBmb3JtX3RvX3N1Ym1pdC5xdWVyeVNlbGVjdG9yKCcuX2Zvcm1fZXJyb3InKTsKICAgICAgZXJyID8gZXJyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZXJyKSA6IGZhbHNlOwogICAgICBfbG9hZF9zY3JpcHQoJ2h0dHBzOi8vY2Z0ZS5hY3RpdmVob3N0ZWQuY29tL3Byb2MucGhwPycgKyBzZXJpYWxpemVkICsgJyZqc29ucD10cnVlJyk7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfTsKICBhZGRFdmVudChmb3JtX3RvX3N1Ym1pdCwgJ3N1Ym1pdCcsIGZvcm1fc3VibWl0KTsKfSkoKTsKCjwvc2NyaXB0Pg==[/fusion_code][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]