filmaffinity 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ci.yml +34 -0
  3. data/.rubocop.yml +6 -3
  4. data/Gemfile +10 -2
  5. data/Gemfile.lock +50 -21
  6. data/README.md +3 -2
  7. data/Rakefile +2 -0
  8. data/filmaffinity.gemspec +25 -19
  9. data/lib/constants/constants.rb +52 -47
  10. data/lib/filmaffinity/configuration.rb +1 -0
  11. data/lib/filmaffinity/{json-movie-parser.rb → json_movie_parser.rb} +5 -2
  12. data/lib/filmaffinity/{json-movies-parser.rb → json_movies_parser.rb} +5 -7
  13. data/lib/filmaffinity/movie.rb +30 -34
  14. data/lib/filmaffinity/{poster-manager.rb → poster_manager.rb} +7 -4
  15. data/lib/filmaffinity/search.rb +17 -12
  16. data/lib/filmaffinity/top.rb +22 -14
  17. data/lib/filmaffinity/version.rb +5 -0
  18. data/lib/filmaffinity.rb +14 -11
  19. data/spec/filmaffinity/{json-movie-parser_spec.rb → json_movie_parser_spec.rb} +6 -3
  20. data/spec/filmaffinity/{json-movies-parser_spec.rb → json_movies_parser_spec.rb} +6 -3
  21. data/spec/filmaffinity/movie_spec.rb +65 -130
  22. data/spec/filmaffinity/search_spec.rb +13 -20
  23. data/spec/filmaffinity/top_spec.rb +65 -72
  24. data/spec/filmaffinity/version_spec.rb +15 -0
  25. data/spec/{filmaffinity/matchers/include-movie.rb → matchers/include_movie.rb} +3 -1
  26. data/spec/spec_helper.rb +8 -1
  27. data/spec/vcr/FilmAffinity_Movie/english_version/_cast/includes_the_passed_cast.yml +59 -0
  28. data/spec/vcr/FilmAffinity_Movie/english_version/_cast/returns_an_Array.yml +59 -0
  29. data/spec/vcr/FilmAffinity_Movie/english_version/_company/returns_Paramount_Pictures_Scott_Rudin_Productions_.yml +59 -0
  30. data/spec/vcr/FilmAffinity_Movie/english_version/_company/returns_a_String.yml +59 -0
  31. data/spec/vcr/FilmAffinity_Movie/english_version/_country/returns_United_States_.yml +59 -0
  32. data/spec/vcr/FilmAffinity_Movie/english_version/_country/returns_a_String.yml +59 -0
  33. data/spec/vcr/FilmAffinity_Movie/english_version/_director/returns_Peter_Weir_.yml +59 -0
  34. data/spec/vcr/FilmAffinity_Movie/english_version/_director/returns_a_String.yml +59 -0
  35. data/spec/vcr/FilmAffinity_Movie/english_version/_duration/returns_103.yml +59 -0
  36. data/spec/vcr/FilmAffinity_Movie/english_version/_duration/returns_an_Integer.yml +59 -0
  37. data/spec/vcr/FilmAffinity_Movie/english_version/_genres/includes_the_passed_genres.yml +59 -0
  38. data/spec/vcr/FilmAffinity_Movie/english_version/_genres/returns_an_Array.yml +59 -0
  39. data/spec/vcr/FilmAffinity_Movie/english_version/_poster/returns_a_String.yml +59 -0
  40. data/spec/vcr/FilmAffinity_Movie/english_version/_poster/returns_a_jpg_address.yml +59 -0
  41. data/spec/vcr/FilmAffinity_Movie/english_version/_rating/returns_an_Float.yml +59 -0
  42. data/spec/vcr/FilmAffinity_Movie/english_version/_script/returns_Andrew_Niccol_.yml +59 -0
  43. data/spec/vcr/FilmAffinity_Movie/english_version/_script/returns_a_String.yml +59 -0
  44. data/spec/vcr/FilmAffinity_Movie/english_version/_title/returns_an_valid_title_when_initializes_with_no_title.yml +59 -0
  45. data/spec/vcr/FilmAffinity_Movie/english_version/_year/returns_1998.yml +59 -0
  46. data/spec/vcr/FilmAffinity_Movie/english_version/_year/returns_an_Integer.yml +59 -0
  47. data/spec/vcr/FilmAffinity_Movie/spanish_version/_cast/includes_the_passed_cast.yml +59 -0
  48. data/spec/vcr/FilmAffinity_Movie/spanish_version/_cast/returns_an_Array.yml +59 -0
  49. data/spec/vcr/FilmAffinity_Movie/spanish_version/_company/returns_Paramount_Pictures_Scott_Rudin_Productions_.yml +59 -0
  50. data/spec/vcr/FilmAffinity_Movie/spanish_version/_company/returns_a_String.yml +59 -0
  51. data/spec/vcr/FilmAffinity_Movie/spanish_version/_country/returns_Estados_Unidos_.yml +59 -0
  52. data/spec/vcr/FilmAffinity_Movie/spanish_version/_country/returns_a_String.yml +59 -0
  53. data/spec/vcr/FilmAffinity_Movie/spanish_version/_director/returns_Peter_Weir_.yml +59 -0
  54. data/spec/vcr/FilmAffinity_Movie/spanish_version/_director/returns_a_String.yml +59 -0
  55. data/spec/vcr/FilmAffinity_Movie/spanish_version/_duration/returns_103.yml +59 -0
  56. data/spec/vcr/FilmAffinity_Movie/spanish_version/_duration/returns_an_Integer.yml +59 -0
  57. data/spec/vcr/FilmAffinity_Movie/spanish_version/_genres/includes_the_passed_genres.yml +59 -0
  58. data/spec/vcr/FilmAffinity_Movie/spanish_version/_genres/returns_an_Array.yml +59 -0
  59. data/spec/vcr/FilmAffinity_Movie/spanish_version/_poster/returns_a_String.yml +59 -0
  60. data/spec/vcr/FilmAffinity_Movie/spanish_version/_poster/returns_a_jpg_address.yml +59 -0
  61. data/spec/vcr/FilmAffinity_Movie/spanish_version/_rating/returns_an_Float.yml +59 -0
  62. data/spec/vcr/FilmAffinity_Movie/spanish_version/_script/returns_Andrew_Niccol_.yml +59 -0
  63. data/spec/vcr/FilmAffinity_Movie/spanish_version/_script/returns_a_String.yml +59 -0
  64. data/spec/vcr/FilmAffinity_Movie/spanish_version/_title/returns_an_valid_title_when_initializes_with_no_title.yml +59 -0
  65. data/spec/vcr/FilmAffinity_Movie/spanish_version/_year/returns_1998.yml +59 -0
  66. data/spec/vcr/FilmAffinity_Movie/spanish_version/_year/returns_an_Integer.yml +59 -0
  67. data/spec/vcr/FilmAffinity_Search/_movies/includes_the_The_Truman_Show_.yml +63 -0
  68. data/spec/vcr/FilmAffinity_Search/_movies/includes_the_Truman_Show_.yml +63 -0
  69. data/spec/vcr/FilmAffinity_Search/_movies/returns_FilmAffinity_Movie_objects_only.yml +63 -0
  70. data/spec/vcr/FilmAffinity_Search/_movies/returns_an_array.yml +63 -0
  71. data/spec/vcr/FilmAffinity_Search/_parse_movie/parses_the_id.yml +114 -0
  72. data/spec/vcr/FilmAffinity_Search/_parse_movie/parses_the_title.yml +114 -0
  73. data/spec/vcr/FilmAffinity_Top/_movies/no_options/includes_El_Padrino_.yml +63 -0
  74. data/spec/vcr/FilmAffinity_Top/_movies/no_options/includes_The_Godfather_.yml +63 -0
  75. data/spec/vcr/FilmAffinity_Top/_movies/no_options/returns_30_movies.yml +63 -0
  76. data/spec/vcr/FilmAffinity_Top/_movies/no_options/returns_FilmAffinity_Movie_objects_only.yml +63 -0
  77. data/spec/vcr/FilmAffinity_Top/_movies/no_options/returns_an_array.yml +63 -0
  78. data/spec/vcr/FilmAffinity_Top/_movies/with_options/only_with_limit/set_to_10/returns_10_movies.yml +63 -0
  79. data/spec/vcr/FilmAffinity_Top/_movies/with_options/only_with_limit/set_to_132/returns_132_movies.yml +303 -0
  80. data/spec/vcr/FilmAffinity_Top/_movies/with_options/only_with_limit/set_to_60/does_not_include_Con_la_muerte_en_los_talones_.yml +123 -0
  81. data/spec/vcr/FilmAffinity_Top/_movies/with_options/only_with_limit/set_to_60/includes_American_History_X_.yml +123 -0
  82. data/spec/vcr/FilmAffinity_Top/_movies/with_options/only_with_limit/set_to_60/returns_60_movies.yml +123 -0
  83. data/spec/vcr/FilmAffinity_Top/_movies/with_options/with_genre_BE_and_country_code_DE_/includes_Generation_War_TV_Miniseries_.yml +125 -0
  84. data/spec/vcr/FilmAffinity_Top/_movies/with_options/with_genre_BE_and_country_code_DE_/includes_Hijos_del_Tercer_Reich_Miniserie_de_TV_.yml +125 -0
  85. data/spec/vcr/FilmAffinity_Top/_movies/with_options/with_genre_BE_and_country_code_DE_/returns_FilmAffinity_Movie_objects_only.yml +125 -0
  86. data/spec/vcr/FilmAffinity_Top/_movies/with_options/with_genre_BE_and_country_code_DE_/returns_an_array.yml +125 -0
  87. data/spec/vcr/JsonMovieParser/_to_hash/returns_the_right_director_for_the_given_movie.yml +59 -0
  88. data/spec/vcr/JsonMoviesParser/_to_hashes/returns_some_valid_ids_for_a_given_search.yml +63 -0
  89. metadata +162 -31
  90. data/.rubocop_todo.yml +0 -48
  91. data/.travis.yml +0 -11
@@ -0,0 +1,59 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://www.filmaffinity.com/es/film504889.html
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Mon, 12 Oct 2020 21:41:11 GMT
23
+ Server:
24
+ - Apache
25
+ Expires:
26
+ - Thu, 19 Nov 1981 08:52:00 GMT
27
+ Pragma:
28
+ - no-cache
29
+ Cache-Control:
30
+ - public, max-age=0, must-revalidate
31
+ Set-Cookie:
32
+ - FCD=lOKq1KmwvgwipWyJcOX4iijhgcbRjogq4OWt62UucneBhTRBtV64mnDluTEhjy3T1zCaBSaKg27lQlDynopxTjmEtU1kSSOUHjDjTL-W0W7OLddylsRUSMmnEii7gu-i53rqSoTFeFUtUGJT8eQaof_wIxr_mh6U;
33
+ expires=Sun, 09-Jul-2023 21:41:11 GMT; Max-Age=86400000; path=/; domain=.filmaffinity.com;
34
+ secure; HttpOnly
35
+ - FSID=8j3lgjdgbjckcv933iqp2f8r56bohrv8aass6h72vrmafd0gmvd4g2c181ocibjh; path=/;
36
+ domain=.filmaffinity.com; secure; HttpOnly
37
+ - client-data=%7B%22ism%22%3Afalse%2C%22showm%22%3Afalse%2C%22ts%22%3A1602538871%7D;
38
+ expires=Tue, 27-Oct-2020 21:41:11 GMT; Max-Age=1296000
39
+ - client-data=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0
40
+ X-Frame-Options:
41
+ - SAMEORIGIN
42
+ Upgrade:
43
+ - h2,h2c
44
+ Connection:
45
+ - Upgrade
46
+ Vary:
47
+ - Accept-Encoding
48
+ X-Xss-Protection:
49
+ - 1; mode=block
50
+ Content-Length:
51
+ - '14938'
52
+ Content-Type:
53
+ - text/html; charset=utf-8
54
+ body:
55
+ encoding: ASCII-8BIT
56
+ string: !binary |-
57
+ PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVzIj4KPGhlYWQ+Cjx0aXRsZT5FbCBzaG93IGRlIFRydW1hbiAoVW5hIHZpZGEgZW4gZGlyZWN0bykgICgxOTk4KSAtIEZpbG1BZmZpbml0eTwvdGl0bGU+CjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkVsIHNob3cgZGUgVHJ1bWFuIChVbmEgdmlkYSBlbiBkaXJlY3RvKSBlcyB1bmEgcGVsw61jdWxhIGRpcmlnaWRhIHBvciBQZXRlciBXZWlyIGNvbiBKaW0gQ2FycmV5LCBMYXVyYSBMaW5uZXksIE5vYWggRW1tZXJpY2gsIEVkIEhhcnJpcywgTmF0YXNjaGEgTWNFbGhvbmUgLi4uLiBBw7FvOiAxOTk4LiBUw610dWxvIG9yaWdpbmFsOiBUaGUgVHJ1bWFuIFNob3cuIFNpbm9wc2lzOiBUcnVtYW4gQnVyYmFuayBlcyB1biBob21icmUgY29ycmllbnRlIHkgYWxnbyBpbmdlbnVvIHF1ZSBoYSB2aXZpZG8gdG9kYSBzdSB2aWRhIGVuIHVubyBkZSBlc29zIHB1ZWJsb3MgZG9uZGUgbnVuY2EgcGFzYSBuYWRhLiBTaW4gZW1iYXJnbywgZGUgcmVwZW50ZSwgdW5vcyBleHRyYcOxb3Mgc3VjZXNvcyBsZSBoYWNlbiBzb3NwZWNoYXIgcXVlIGFsZ28gLi4uIj4KPG1ldGEgcHJvcGVydHk9Im9nOnNpdGVfbmFtZSIgY29udGVudD0iRmlsbUFmZmluaXR5Ij4KPG1ldGEgbmFtZT0idHdpdHRlcjpjYXJkIiBjb250ZW50PSJzdW1tYXJ5IiA+CjxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJ2aWRlby5tb3ZpZSIgPgo8bWV0YSBuYW1lPSJ0d2l0dGVyOnNpdGUiIHZhbHVlPSJARmlsbWFmZmluaXR5IiA+CjxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvZmlsbTUwNDg4OS5odG1sIiAvPgo8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IkVsIHNob3cgZGUgVHJ1bWFuIChVbmEgdmlkYSBlbiBkaXJlY3RvKSAgKDE5OTgpIiAvPgo8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkRpcmVjdG9yOiBQZXRlciBXZWlyIHwgUmVwYXJ0bzogSmltIENhcnJleSwgTGF1cmEgTGlubmV5LCBOb2FoIEVtbWVyaWNoLCBFZCBIYXJyaXMgLi4uIHwgR8OpbmVybzogRHJhbWEgfCBTaW5vcHNpczogVHJ1bWFuIEJ1cmJhbmsgZXMgdW4gaG9tYnJlIGNvcnJpZW50ZSB5IGFsZ28gaW5nZW51byBxdWUgaGEgdml2aWRvIHRvZGEgc3UgdmlkYSBlbiB1bm8gZGUgZXNvcyBwdWVibG9zIGRvbmRlIG51bmNhIHBhc2EgbmFkYS4gU2luIGVtYmFyZ28sIGRlIHJlcGVudGUsIHVub3MgZXh0cmHDsW9zIHN1Y2Vzb3MgbGUgaGFjZW4gc29zcGVjaGFyIHF1ZSBhbGdvIC4uLiIgLz4KPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL3BpY3MuZmlsbWFmZmluaXR5LmNvbS90aGVfdHJ1bWFuX3Nob3ctMTMwMDkxNTU3LW1tZWQuanBnIiAvPgo8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cDovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2ZpbG01MDQ4ODkuaHRtbCI+CjxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBtZWRpYT0ib25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSIgaHJlZj0iaHR0cHM6Ly9tLmZpbG1hZmZpbml0eS5jb20vZXMvbW92aWUucGhwP2lkPTUwNDg4OSI+CjxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBocmVmPSIvZmF2aWNvbi5wbmciPgo8bGluayBocmVmPSIvc3R5bGUvZmlsbS4xNTg5NDcwNDAzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIGhyZWY9Ii9zdHlsZS9zaGFyZS4xNTM5MDk2MjkxLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIGhyZWY9Ii9zdHlsZS9qcXVlcnkvZmEtdWktdGhlbWUvanF1ZXJ5LXVpLm1pbi4xNTM5MDk2MzA2LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIGhyZWY9Ii9zdHlsZS9qcXVlcnkvZmEtdWktdGhlbWUvanF1ZXJ5LXVpLnN0cnVjdHVyZS5taW4uMTUzOTA5NjMwNi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8bGluayBocmVmPSIvc3R5bGUvanF1ZXJ5L2ZhLXVpLXRoZW1lL2pxdWVyeS11aS50aGVtZS5taW4uMTUzOTA5NjMwNi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8bGluayBocmVmPSIvc3R5bGUvanF1ZXJ5L2NvbG9yYm94L2NvbG9yYm94LTEuNi4xNTM5MDk2MzA1LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIGhyZWY9Ii9zdHlsZS9qcXVlcnkvY29sb3Jib3gvY29sb3Jib3gtZmEuMTUzOTA5NjMwNS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8bGluayBocmVmPSIvc3R5bGUvanF1ZXJ5L2pxdm1hcC9qcXZtYXAubWluLjE1NjE0NTA4NjEuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgaHJlZj0iL3N0eWxlL21haW4zLjE2MDE2NDExNDEuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgaHJlZj0iL3N0eWxlL21vdmllY2FyZHMzLjE1ODU3MzQzNDMuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgaHJlZj0iL3N0eWxlL2ZhLWF3ZXNvbWUuMTUzOTA5NjI5MS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8bGluayBocmVmPSIvc3R5bGUvZm9udC1hd2Vzb21lLjUuMTEuMS5taW4uMTU3OTE3NDY5MS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8bGluayBocmVmPSIvc3R5bGUvZmEtaWNvbnMuMTU4MjI4ODQ3Ny5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8bGluayBocmVmPSIvc3R5bGUvbWFnaWMtY2hlY2subWluLjE1MzkwOTYyOTEuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgaHJlZj0iL3N0eWxlL3JhdGluZzIuMTUzOTA5NjI5Mi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvanMvbG9jYWxfZXMuMTUzOTA5NjI5My5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9qcXVlcnkvanF1ZXJ5LTMuMS4wLm1pbi4xNTM5MDk2MzAyLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2pzL2pxdWVyeS9qcXVlcnktbWlncmF0ZS0xLjQuMS5taW4uMTUzOTA5NjMwMi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9qcXVlcnkvdWkvanF1ZXJ5LXVpLTEuMTIuMS5taW4uMTUzOTA5NjMwOC5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9qcXVlcnkvcGx1Z2luL2pxdWVyeS5jb2xvcmJveC0xLjYuMTUzOTA5NjMwOC5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9mb3RvLjE1NTI2NTg1NjMuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvanMvY3JjMzIuMTUzOTA5NjI5My5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy90cmFuc2xhdGUtY29udGV4dC4xNTM5MDk2MjkzLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2pzL2xvY2FsZS9mcmllbmRzLXRleHRzLWVzX0VTLjE1NTgwMTI1MjEuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvanMvanF1ZXJ5L3BsdWdpbi9qcXVlcnkuY29va2llLjE1MzkwOTYzMDguanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvanMvanF1ZXJ5L3BsdWdpbi9yYXRpbmctYmFycy4xNTM5MDk2MzA5LmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2pzL2pxdWVyeS9wbHVnaW4vY2hhcnRqcy9jaGFydC5taW4uMTU2ODM2MzgyNS5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9qcXVlcnkvcGx1Z2luL2pxdm1hcC9qcXVlcnkudm1hcC5taW4uMTU2MTQ1MDgzNC5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9qcXVlcnkvcGx1Z2luL2pxdm1hcC9qcXVlcnkudm1hcC53b3JsZC4xNTYxNDUwODM2LmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2pzL2xvY2FsZS90ZXh0cy1lc19FUy4xNjAxOTA3MDcxLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2pzL2Fkcy4xNTM5MDk2MjkzLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2pzL21haW4uMTYwMDcwMjA0Ny5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9wYWdldG9wLjE1ODEzNDQ4MzQuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvanMvei1pbmRleC1maXguMTUzOTA5NjI5Mi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9qcXVlcnkvcGx1Z2luL2xhenlzaXplcy9sYXp5c2l6ZXMubWluLjE2MDIwNjgzNzUuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvanMvZmEtbGlzdHMtdGlwLjE1MzkwOTYyOTIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvanMvZmFfcmF0aW5nMi4xNTM5MDk2MjkzLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2pzL2hpZGUtcXQuMTU4NDQ1NjQxMi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9vbGQtYXV0b2NvbXBsZXRlLjE1ODU2NjczMDcuanMiPjwvc2NyaXB0PgoKPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvZmlsbTUwNDg4OS5odG1sIiBocmVmbGFuZz0iZXMiPgo8bGluayByZWw9ImFsdGVybmF0ZSIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lbi9maWxtNTA0ODg5Lmh0bWwiIGhyZWZsYW5nPSJlbiI+CjxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL214L2ZpbG01MDQ4ODkuaHRtbCIgaHJlZmxhbmc9ImVzLU1YIj4KPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vYXIvZmlsbTUwNDg4OS5odG1sIiBocmVmbGFuZz0iZXMtQVIiPgo8bGluayByZWw9ImFsdGVybmF0ZSIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9jbC9maWxtNTA0ODg5Lmh0bWwiIGhyZWZsYW5nPSJlcy1DTCI+CjxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2NvL2ZpbG01MDQ4ODkuaHRtbCIgaHJlZmxhbmc9ImVzLUNPIj4KPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vdXkvZmlsbTUwNDg4OS5odG1sIiBocmVmbGFuZz0iZXMtVVkiPgo8bGluayByZWw9ImFsdGVybmF0ZSIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9wZS9maWxtNTA0ODg5Lmh0bWwiIGhyZWZsYW5nPSJlcy1QRSI+CjxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VjL2ZpbG01MDQ4ODkuaHRtbCIgaHJlZmxhbmc9ImVzLUVDIj4KPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vdmUvZmlsbTUwNDg4OS5odG1sIiBocmVmbGFuZz0iZXMtVkUiPgo8bGluayByZWw9ImFsdGVybmF0ZSIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9jci9maWxtNTA0ODg5Lmh0bWwiIGhyZWZsYW5nPSJlcy1DUiI+CjxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2JvL2ZpbG01MDQ4ODkuaHRtbCIgaHJlZmxhbmc9ImVzLUJPIj4KPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vdXMvZmlsbTUwNDg4OS5odG1sIiBocmVmbGFuZz0iZW4tVVMiPgo8bGluayByZWw9ImFsdGVybmF0ZSIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS91ay9maWxtNTA0ODg5Lmh0bWwiIGhyZWZsYW5nPSJlbi1HQiI+CjxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2llL2ZpbG01MDQ4ODkuaHRtbCIgaHJlZmxhbmc9ImVuLUlFIj4KPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vYXUvZmlsbTUwNDg4OS5odG1sIiBocmVmbGFuZz0iZW4tQVUiPgo8bGluayByZWw9ImFsdGVybmF0ZSIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9jYS9maWxtNTA0ODg5Lmh0bWwiIGhyZWZsYW5nPSJlbi1DQSI+CgoKPHNjcmlwdD4KICAgICQoZnVuY3Rpb24oKXsKICAgICAgICBzZXNzUGluZygiMDE1Zjg0Y2Q3N2U2NGY1YWQwYTE4ZjkxYjg3Y2FjOTE3YTI0M2EwNWE4IiwgMjQwMCk7CiAgICAgICAgdmFyIHRjVGV4dHMgPSBUcmFuc2xhdGVDb250ZXh0LmdldEluc3RhbmNlKGNvbW1vblRleHRzSnMpOwogICAgfSk7Cjwvc2NyaXB0Pgo8c2NyaXB0IGFzeW5jPSdhc3luYycgc3JjPSdodHRwczovL3NjLWRldmVsLnMzLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tL3NjLXRhZ21hbmFnZXIvc2NfZ3B0X2xzdGFwYy5qcyc+PC9zY3JpcHQ+DQoNCiA8c2NyaXB0Pg0KDQogICAgICAgIHZhciBnb29nbGV0YWcgPSBnb29nbGV0YWcgfHwge307DQoNCiAgICAgICAgZ29vZ2xldGFnLmNtZCA9IGdvb2dsZXRhZy5jbWQgfHwgW107DQoNCiA8L3NjcmlwdD4NCg0KIDxzY3JpcHQgc3JjPSJodHRwczovL3MzLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tL3NjLWRldmVsL1NraW5zL1NNQ1NlcnZpY2UuanMiPjwvc2NyaXB0Pg0KDQogPHNjcmlwdCBzcmM9Imh0dHBzOi8vczMuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20vc2MtZGV2ZWwvc2MtdGFnbWFuYWdlci9maWxtYWZmaW5pdHkuanMiPjwvc2NyaXB0Pg0KDQogPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLnNtYXJ0Y2xpcC1zZXJ2aWNlcy5jb20vdjEvU3RvcmFnZS1hNDgyMzIzL3NtYXJ0Y2xpcC1zZXJ2aWNlcy9IZWFkZXJCaWRkaW5nL2pzL1NtYXJ0Y2xpcENvbmZpZy5qcyIgYXN5bmM9ImFzeW5jIj48L3NjcmlwdD4NCjwhLS0gUXVhbnRjYXN0IENob2ljZS4gQ29uc2VudCBNYW5hZ2VyIFRhZyB2Mi4wIChmb3IgVENGIDIuMCkgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBhc3luYz10cnVlPgooZnVuY3Rpb24oKSB7CiAgdmFyIGhvc3QgPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7CiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICB2YXIgZmlyc3RTY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07CiAgdmFyIHVybCA9ICdodHRwczovL3F1YW50Y2FzdC5tZ3IuY29uc2Vuc3Uub3JnJwogICAgLmNvbmNhdCgnL2Nob2ljZS8nLCAnTEJCckYtYmRBdGt1RicsICcvJywgaG9zdCwgJy9jaG9pY2UuanMnKQogIHZhciB1c3BUcmllcyA9IDA7CiAgdmFyIHVzcFRyaWVzTGltaXQgPSAzOwogIGVsZW1lbnQuYXN5bmMgPSB0cnVlOwogIGVsZW1lbnQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogIGVsZW1lbnQuc3JjID0gdXJsOwoKICBmaXJzdFNjcmlwdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtZW50LCBmaXJzdFNjcmlwdCk7CgogIGZ1bmN0aW9uIG1ha2VTdHViKCkgewogICAgdmFyIFRDRl9MT0NBVE9SX05BTUUgPSAnX190Y2ZhcGlMb2NhdG9yJzsKICAgIHZhciBxdWV1ZSA9IFtdOwogICAgdmFyIHdpbiA9IHdpbmRvdzsKICAgIHZhciBjbXBGcmFtZTsKCiAgICBmdW5jdGlvbiBhZGRGcmFtZSgpIHsKICAgICAgdmFyIGRvYyA9IHdpbi5kb2N1bWVudDsKICAgICAgdmFyIG90aGVyQ01QID0gISEod2luLmZyYW1lc1tUQ0ZfTE9DQVRPUl9OQU1FXSk7CgogICAgICBpZiAoIW90aGVyQ01QKSB7CiAgICAgICAgaWYgKGRvYy5ib2R5KSB7CiAgICAgICAgICB2YXIgaWZyYW1lID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwoKICAgICAgICAgIGlmcmFtZS5zdHlsZS5jc3NUZXh0ID0gJ2Rpc3BsYXk6bm9uZSc7CiAgICAgICAgICBpZnJhbWUubmFtZSA9IFRDRl9MT0NBVE9SX05BTUU7CiAgICAgICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBzZXRUaW1lb3V0KGFkZEZyYW1lLCA1KTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuICFvdGhlckNNUDsKICAgIH0KCiAgICBmdW5jdGlvbiB0Y2ZBUElIYW5kbGVyKCkgewogICAgICB2YXIgZ2RwckFwcGxpZXM7CiAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzOwoKICAgICAgaWYgKCFhcmdzLmxlbmd0aCkgewogICAgICAgIHJldHVybiBxdWV1ZTsKICAgICAgfSBlbHNlIGlmIChhcmdzWzBdID09PSAnc2V0R2RwckFwcGxpZXMnKSB7CiAgICAgICAgaWYgKAogICAgICAgICAgYXJncy5sZW5ndGggPiAzICYmCiAgICAgICAgICBhcmdzWzJdID09PSAyICYmCiAgICAgICAgICB0eXBlb2YgYXJnc1szXSA9PT0gJ2Jvb2xlYW4nCiAgICAgICAgKSB7CiAgICAgICAgICBnZHByQXBwbGllcyA9IGFyZ3NbM107CiAgICAgICAgICBpZiAodHlwZW9mIGFyZ3NbMl0gPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgYXJnc1syXSgnc2V0JywgdHJ1ZSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGFyZ3NbMF0gPT09ICdwaW5nJykgewogICAgICAgIHZhciByZXRyID0gewogICAgICAgICAgZ2RwckFwcGxpZXM6IGdkcHJBcHBsaWVzLAogICAgICAgICAgY21wTG9hZGVkOiBmYWxzZSwKICAgICAgICAgIGNtcFN0YXR1czogJ3N0dWInCiAgICAgICAgfTsKCiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzJdID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICBhcmdzWzJdKHJldHIpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBxdWV1ZS5wdXNoKGFyZ3MpOwogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gcG9zdE1lc3NhZ2VFdmVudEhhbmRsZXIoZXZlbnQpIHsKICAgICAgdmFyIG1zZ0lzU3RyaW5nID0gdHlwZW9mIGV2ZW50LmRhdGEgPT09ICdzdHJpbmcnOwogICAgICB2YXIganNvbiA9IHt9OwoKICAgICAgdHJ5IHsKICAgICAgICBpZiAobXNnSXNTdHJpbmcpIHsKICAgICAgICAgIGpzb24gPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBqc29uID0gZXZlbnQuZGF0YTsKICAgICAgICB9CiAgICAgIH0gY2F0Y2ggKGlnbm9yZSkge30KCiAgICAgIHZhciBwYXlsb2FkID0ganNvbi5fX3RjZmFwaUNhbGw7CgogICAgICBpZiAocGF5bG9hZCkgewogICAgICAgIHdpbmRvdy5fX3RjZmFwaSgKICAgICAgICAgIHBheWxvYWQuY29tbWFuZCwKICAgICAgICAgIHBheWxvYWQudmVyc2lvbiwKICAgICAgICAgIGZ1bmN0aW9uKHJldFZhbHVlLCBzdWNjZXNzKSB7CiAgICAgICAgICAgIHZhciByZXR1cm5Nc2cgPSB7CiAgICAgICAgICAgICAgX190Y2ZhcGlSZXR1cm46IHsKICAgICAgICAgICAgICAgIHJldHVyblZhbHVlOiByZXRWYWx1ZSwKICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHN1Y2Nlc3MsCiAgICAgICAgICAgICAgICBjYWxsSWQ6IHBheWxvYWQuY2FsbElkCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAobXNnSXNTdHJpbmcpIHsKICAgICAgICAgICAgICByZXR1cm5Nc2cgPSBKU09OLnN0cmluZ2lmeShyZXR1cm5Nc2cpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZShyZXR1cm5Nc2csICcqJyk7CiAgICAgICAgICB9LAogICAgICAgICAgcGF5bG9hZC5wYXJhbWV0ZXIKICAgICAgICApOwogICAgICB9CiAgICB9CgogICAgd2hpbGUgKHdpbikgewogICAgICB0cnkgewogICAgICAgIGlmICh3aW4uZnJhbWVzW1RDRl9MT0NBVE9SX05BTUVdKSB7CiAgICAgICAgICBjbXBGcmFtZSA9IHdpbjsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fQoKICAgICAgaWYgKHdpbiA9PT0gd2luZG93LnRvcCkgewogICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIHdpbiA9IHdpbi5wYXJlbnQ7CiAgICB9CiAgICBpZiAoIWNtcEZyYW1lKSB7CiAgICAgIGFkZEZyYW1lKCk7CiAgICAgIHdpbi5fX3RjZmFwaSA9IHRjZkFQSUhhbmRsZXI7CiAgICAgIHdpbi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgcG9zdE1lc3NhZ2VFdmVudEhhbmRsZXIsIGZhbHNlKTsKICAgIH0KICB9OwoKICBtYWtlU3R1YigpOwoKICB2YXIgdXNwU3R1YkZ1bmN0aW9uID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgYXJnID0gYXJndW1lbnRzOwogICAgaWYgKHR5cGVvZiB3aW5kb3cuX191c3BhcGkgIT09IHVzcFN0dWJGdW5jdGlvbikgewogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgIGlmICh0eXBlb2Ygd2luZG93Ll9fdXNwYXBpICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgd2luZG93Ll9fdXNwYXBpLmFwcGx5KHdpbmRvdy5fX3VzcGFwaSwgYXJnKTsKICAgICAgICB9CiAgICAgIH0sIDUwMCk7CiAgICB9CiAgfTsKCiAgdmFyIGNoZWNrSWZVc3BJc1JlYWR5ID0gZnVuY3Rpb24oKSB7CiAgICB1c3BUcmllcysrOwogICAgaWYgKHdpbmRvdy5fX3VzcGFwaSA9PT0gdXNwU3R1YkZ1bmN0aW9uICYmIHVzcFRyaWVzIDwgdXNwVHJpZXNMaW1pdCkgewogICAgICBjb25zb2xlLndhcm4oJ1VTUCBpcyBub3QgYWNjZXNzaWJsZScpOwogICAgfSBlbHNlIHsKICAgICAgY2xlYXJJbnRlcnZhbCh1c3BJbnRlcnZhbCk7CiAgICB9CiAgfTsKCiAgaWYgKHR5cGVvZiB3aW5kb3cuX191c3BhcGkgPT09ICd1bmRlZmluZWQnKSB7CiAgICB3aW5kb3cuX191c3BhcGkgPSB1c3BTdHViRnVuY3Rpb247CiAgICB2YXIgdXNwSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChjaGVja0lmVXNwSXNSZWFkeSwgNjAwMCk7CiAgfQp9KSgpOwo8L3NjcmlwdD4KPCEtLSBFbmQgUXVhbnRjYXN0IENob2ljZS4gQ29uc2VudCBNYW5hZ2VyIFRhZyB2Mi4wIChmb3IgVENGIDIuMCkgLS0+CjxzY3JpcHQ+CiAgdmFyIF9jb21zY29yZSA9IF9jb21zY29yZSB8fCBbXTsKICBfY29tc2NvcmUucHVzaCh7IGMxOiAiMiIsIGMyOiAiMTMxODExMjEiIH0pOwogIChmdW5jdGlvbigpIHsKICAgIHZhciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdOyBzLmFzeW5jID0gdHJ1ZTsKICAgIHMuc3JjID0gKGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sID09ICJodHRwczoiID8gImh0dHBzOi8vc2IiIDogImh0dHA6Ly9iIikgKyAiLnNjb3JlY2FyZHJlc2VhcmNoLmNvbS9iZWFjb24uanMiOwogICAgZWwucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocywgZWwpOwogIH0pKCk7Cjwvc2NyaXB0Pgo8bm9zY3JpcHQ+CiAgPGltZyBzcmM9Imh0dHA6Ly9iLnNjb3JlY2FyZHJlc2VhcmNoLmNvbS9wP2MxPTImYzI9MTMxODExMjEmY3Y9Mi4wJmNqPTEiIC8+Cjwvbm9zY3JpcHQ+CjxzY3JpcHQ+JChmdW5jdGlvbigpe3NlbmRwdigiZTExZWFlNWZlYzc4NGU1YWIzZGE5ZjkwYzcwNTU2ODciKTt9KTs8L3NjcmlwdD4NCjwvaGVhZD4KPGJvZHk+CiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgIChmdW5jdGlvbihpLHMsbyxnLHIsYSxtKXtpWydHb29nbGVBbmFseXRpY3NPYmplY3QnXT1yO2lbcl09aVtyXXx8ZnVuY3Rpb24oKXsKICAgICAgICAgIChpW3JdLnE9aVtyXS5xfHxbXSkucHVzaChhcmd1bWVudHMpfSxpW3JdLmw9MSpuZXcgRGF0ZSgpO2E9cy5jcmVhdGVFbGVtZW50KG8pLAogICAgICAgICAgbT1zLmdldEVsZW1lbnRzQnlUYWdOYW1lKG8pWzBdO2EuYXN5bmM9MTthLnNyYz1nO20ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxtKQogICAgICAgICAgfSkod2luZG93LGRvY3VtZW50LCdzY3JpcHQnLCcvL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9hbmFseXRpY3MuanMnLCdnYScpOwogICAgICAgICAgZ2EoJ2NyZWF0ZScsICdVQS03NDE1NTUwNC0xJywgJ2F1dG8nKTsKICAgICAgICAgIGdhKCdzZW5kJywgJ3BhZ2V2aWV3Jyk7CiAgICAgICAgPC9zY3JpcHQ+CjxkaXYgaWQ9InBhZ2UtaGVhZGVyIj4KICAgIDxkaXYgaWQ9ImhlYWRlci10b3AiID4KICAgICAgICA8ZGl2IGNsYXNzPSJjcGFuZWwgdG9wLXdyYXBwZXIiPgogICAgICAgICAgICA8ZGl2IGlkPSJsb2dvLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL21haW4uaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBhbHQ9ImxvZ28iIHNyYz0iL2ltYWdlcy9sb2dvNC5wbmciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28tc2l0ZWxvYyI+RXNwYcOxYTwvZGl2PgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2Rpdj48IS0tIGxvZ28tY29udGFpbmVyIC0tPgoKICAgICAgICAgICAgPGRpdiBpZD0idG9wc2VhcmNoIj4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9zZWFyY2gucGhwIiBtZXRob2Q9ImdldCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9InRvcC1zZWFyY2gtaW5wdXQiIHR5cGU9InRleHQiIG5hbWU9InN0ZXh0IiBzaXplPSIyMCIgdmFsdWU9IiIgdGFiaW5kZXg9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLXRpbWVzIGNsZWFyLXNlYXJjaCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJidXR0b24tc2VhcmNoIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtc2VhcmNoIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIGlkPSJidXR0b24tc2VhcmNoIiB2YWx1ZT0iJm5ic3A7Ij4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkdnNlYXJjaCI+PGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9hZHZzZWFyY2gucGhwIj5Cw7pzcXVlZGEgYXZhbnphZGEgPGkgY2xhc3M9ImZhcyBmYS1hbmdsZS1kb3VibGUtcmlnaHQiPjwvaT48L2E+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PjwhLS0gdG9wc2VhcmNoIC0tPgogICAgICAgICAgICA8ZGl2IGlkPSJ1c2VyLWxvZ2luLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJsb2dpbi1yZWdpc3RlciI+CiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InNpZ24taW4iIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbG9naW4ucGhwIj48c3Ryb25nPkluaWNpYXIgc2VzacOzbjwvc3Ryb25nPjwvYT4gLyA8YSBjbGFzcz0icmVnaXN0ZXIiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvcmVnaXN0ZXIucGhwIj5SZWdpc3RyYXJzZTwvYT4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InVzZXItbWVudS13ciI+Cjx1bD4KICAgIDxsaT4KICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3VzZXJyYXRpbmdzLnBocD91c2VyX2lkPSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpYy13Ij48aSBjbGFzcz0iZmEgZmEtcmF0aW5ncy1mYSI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgIE1pcyBWb3RhY2lvbmVzICAgICAgICA8L2E+CiAgICA8L2xpPgogICAgPGxpPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbXlyZXZpZXdzLnBocCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpYy13Ij48aSBjbGFzcz0iZmEgZmEtcmV2aWV3cy1mYSI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgQ3LDrXRpY2FzICAgICAgICA8L2E+CiAgICA8L2xpPgogICAgPGxpPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbXlsaXN0cy5waHAiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWMtdyI+PGkgY2xhc3M9ImZhIGZhLWxpc3QiPjwvaT48L3NwYW4+CiAgICAgICAgICAgIExpc3RhcyA8c3BhbiBjbGFzcz0ibmJyLXciPk5ldzwvc3Bhbj4KICAgICAgICA8L2E+CiAgICA8L2xpPgogICAgPGxpPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbXlmcmllbmRzLnBocCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpYy13Ij48aSBjbGFzcz0iZmEgZmEgZmEtZnJpZW5kcy1mYSI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgQW1pZ29zIC8gR3J1cG9zICAgICAgICA8L2E+CiAgICA8L2xpPgogICAgPGxpPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvc291bG1hdGVzLnBocCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpYy13Ij48aSBjbGFzcz0iZmEgZmEtc291bG1hdGVzLWZhIj48L2k+PC9zcGFuPgogICAgICAgICAgICBBbG1hcyBnZW1lbGFzICAgICAgICA8L2E+CiAgICA8L2xpPgogICAgPGxpPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvc21zcmVjLnBocCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpYy13Ij48aSBjbGFzcz0iZmEgZmEtaGVhcnQiPjwvaT48L3NwYW4+CiAgICAgICAgICAgICAgICBSZWNvbWVuZGFjaW9uZXMgICAgICAgIDwvYT4KICAgIDwvbGk+CiAgICA8bGkgY2xhc3M9InVzZXItcHJvZi1saW5rIj4KICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL215ZGF0YS5waHAiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWMtdyI+PGkgY2xhc3M9ImZhIGZhLWFkZHJlc3MtY2FyZC1vIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgRGF0b3MgcGVyc29uYWxlcyAgICAgICAgPC9hPgogICAgPC9saT4KICAgICAgICA8bGk+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvdXNlci1mYXYtdGhlYXRlcnMucGhwIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpYy13Ij48aSBjbGFzcz0iZmEgZmEtdGlja2V0Ij48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgQ2luZXMgZmF2b3JpdG9zICAgICAgICAgICAgPC9hPgogICAgICAgIDwvbGk+CiAgICAgICAgPGxpPgogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3RvdXJzLnBocCI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWMtdyI+PGkgY2xhc3M9ImZhIGZhLXJhdGluZ3MtZmEiPjwvaT48L3NwYW4+CiAgICAgICAgICAgICAgICBWb3RhciBsb3MgdG91cnMgICAgICAgICAgICA8L2E+CiAgICAgICAgPC9saT4KICAgICAgICA8bGkgY2xhc3M9ImxnLW91dC1saSI+CiAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJzaWduLW91dCI+CiAgICAgICAgICAgICAgICBDZXJyYXIgc2VzacOzbiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L2xpPgo8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PjwhLS0gdXNlci1sb2dpbiAtY29udGFpbmVyIC0tPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJoZWFkZXItYm90dG9tIiAgPgogICAgICAgIDxkaXYgY2xhc3M9ImNwYW5lbCBuZXdzLXdyYXBwZXIiPgoKPHVsIGlkPSJhd2FyZHNtZW51Ij4KICAgICAgICAgICAgPGxpID48YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2NhdGVnb3J5LnBocD9pZD1sYXRlc3RfcmV2aWV3cyI+w5psdC4gY3LDrXRpY2FzPC9hPjwvbGk+PGxpIGNsYXNzPSJzZXAiPnw8L2xpPgogICAgICAgICAgICA8bGkgPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvY2F0ZWdvcnkucGhwP2lkPVRSQUlMRVJTIj5UcsOhaWxlcnM8L2E+PC9saT48bGkgY2xhc3M9InNlcCI+fDwvbGk+CiAgICAgICAgICAgIDxsaSA+PGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy90b3BnZW4ucGhwP2dlbnJlPSZmcm9teWVhcj0mdG95ZWFyPSZjb3VudHJ5PSZub2RvYyI+VG9wIEZBPC9hPjwvbGk+PGxpIGNsYXNzPSJzZXAiPnw8L2xpPgogICAgICAgICAgICA8bGkgPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvYWxsX2F3YXJkcy5waHAiPlByZW1pb3M8L2E+PC9saT48bGkgY2xhc3M9InNlcCI+fDwvbGk+CiAgICAgICAgICAgIDxsaSA+PGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRlZ29yeS5waHA/aWQ9c2l0Z2VzMjAyMCI+RmVzdGl2YWwgZGUgU2l0Z2VzIDIwMjA8L2E+PC9saT48bGkgY2xhc3M9InNlcCI+fDwvbGk+CjwvdWw+CgoKICAgICAgICAgICAgPGRpdiBpZD0idHJtZW51Ij4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImZiLXRvcC1sb2dvIiBjbGFzcz0ic29jaWFsLWxvZ28iPjxhIHRhcmdldD0iX0JMQU5LIiB0aXRsZT0iU2lndWUgYSBGQSBlbiBGYWNlYm9vayAoMTY1LjAwMCBmb2xsb3dlcnMpIiBocmVmPSJodHRwOi8vd3d3LmZhY2Vib29rLmNvbS9GaWxtYWZmaW5pdHkiPjxpIGNsYXNzPSJmYWIgZmEtZmFjZWJvb2stZiI+PC9pPjwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InR3LXRvcC1sb2dvIiBjbGFzcz0ic29jaWFsLWxvZ28iPjxhIHRhcmdldD0iX0JMQU5LIiB0aXRsZT0iU2lndWUgYSBGQSBlbiBUd2l0dGVyICg0MC4wMDAgZm9sbG93ZXJzKSIgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tL0ZpbG1hZmZpbml0eSI+PGkgY2xhc3M9ImZhYiBmYS10d2l0dGVyIj48L2k+PC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBpZD0iaW4tdG9wLWxvZ28iIGNsYXNzPSJzb2NpYWwtbG9nbyI+PGEgdGFyZ2V0PSJfQkxBTksiIHRpdGxlPSJTaWd1ZSBhIEZBIGVuIEluc3RhZ2FtICg3MS4wMDAgZm9sbG93ZXJzKSIgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9maWxtYWZmaW5pdHkvIj48aSBjbGFzcz0iZmFiIGZhLWluc3RhZ3JhbSI+PC9pPjwvYT48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24tc2VsZWN0b3IiPgogICAgICAgICAgICA8dWwgY2xhc3M9InZlcnNpb24iPgogICAgICAgICAgICAgICAgPGxpIGRhdGEtdmVyc2lvbj0iZXMiIGNsYXNzPSJmaXhlZCIgdGl0bGU9IkNhbWJpYXIgZGUgdmVyc2nDs24iPkVzcGHDsWEgPGkgY2xhc3M9ImZhcyBmYS1jaGV2cm9uLWRvd24iPjwvaT48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICA8L2Rpdj4KDQogICAgPGRpdiBjbGFzcz0icGFnZS12ZXJzaW9ucy1wb3AgZmEtc2hhZG93Ij4NCiAgICAgICAgPGRpdiBpZD0idm1hcCIgc3R5bGU9IndpZHRoOiA2MzBweDsgaGVpZ2h0OiA0MDBweDsiPjwvZGl2Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJjb3VudHJ5LW5hbWVzIj4NCiAgICAgICAgICAgIDx1bCBjbGFzcz0iY29udGluZW50cyI+DQogICAgICAgICAgICAgICAgICAgIDxsaSBkYXRhLWNvbnRpbmVudD0iYW1lcmljYS1ub3J0aCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPk5vcnRlYW3DqXJpY2EgPGkgY2xhc3M9ImZhcyBmYS1zZWFyY2gtcGx1cyBtYXAtem9vbSI+PC9pPjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJjb3VudHJpZXMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZGF0YS12ZXJzaW9uPSJ1cyIgZGF0YS1jb3VudHJ5LWlkPSJ1cyI+PGltZyBjbGFzcz0ibmZsYWciIHNyYz0iL2ltZ3MvY291bnRyaWVzMi9VUy5wbmciIGFsdD0iRXN0YWRvcyBVbmlkb3MiIHRpdGxlPSJFc3RhZG9zIFVuaWRvcyI+IFVTIDxpIGNsYXNzPSJmYXMgZmEtYXJyb3ctcmlnaHQgZ28tdG8tdmVyc2lvbiI+PC9pPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBkYXRhLXZlcnNpb249ImNhIiBkYXRhLWNvdW50cnktaWQ9ImNhIj48aW1nIGNsYXNzPSJuZmxhZyIgc3JjPSIvaW1ncy9jb3VudHJpZXMyL0NBLnBuZyIgYWx0PSJDYW5hZMOhIiB0aXRsZT0iQ2FuYWTDoSI+IENhbmFkw6EgPGkgY2xhc3M9ImZhcyBmYS1hcnJvdy1yaWdodCBnby10by12ZXJzaW9uIj48L2k+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGRhdGEtdmVyc2lvbj0ibXgiIGRhdGEtY291bnRyeS1pZD0ibXgiPjxpbWcgY2xhc3M9Im5mbGFnIiBzcmM9Ii9pbWdzL2NvdW50cmllczIvTVgucG5nIiBhbHQ9Ik3DqXhpY28iIHRpdGxlPSJNw6l4aWNvIj4gTcOpeGljbyA8aSBjbGFzcz0iZmFzIGZhLWFycm93LXJpZ2h0IGdvLXRvLXZlcnNpb24iPjwvaT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgICAgPGxpIGRhdGEtY29udGluZW50PSJldXJvcGUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj5FdXJvcGEgPGkgY2xhc3M9ImZhcyBmYS1zZWFyY2gtcGx1cyBtYXAtem9vbSI+PC9pPjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJjb3VudHJpZXMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZGF0YS12ZXJzaW9uPSJlcyIgZGF0YS1jb3VudHJ5LWlkPSJlcyI+PGltZyBjbGFzcz0ibmZsYWciIHNyYz0iL2ltZ3MvY291bnRyaWVzMi9FUy5wbmciIGFsdD0iRXNwYcOxYSIgdGl0bGU9IkVzcGHDsWEiPiBFc3Bhw7FhIDxpIGNsYXNzPSJmYXMgZmEtYXJyb3ctcmlnaHQgZ28tdG8tdmVyc2lvbiI+PC9pPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBkYXRhLXZlcnNpb249InVrIiBkYXRhLWNvdW50cnktaWQ9ImdiIj48aW1nIGNsYXNzPSJuZmxhZyIgc3JjPSIvaW1ncy9jb3VudHJpZXMyL0dCLnBuZyIgYWx0PSJSZWlubyBVbmlkbyIgdGl0bGU9IlJlaW5vIFVuaWRvIj4gVUsgPGkgY2xhc3M9ImZhcyBmYS1hcnJvdy1yaWdodCBnby10by12ZXJzaW9uIj48L2k+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGRhdGEtdmVyc2lvbj0iaWUiIGRhdGEtY291bnRyeS1pZD0iaWUiPjxpbWcgY2xhc3M9Im5mbGFnIiBzcmM9Ii9pbWdzL2NvdW50cmllczIvSUUucG5nIiBhbHQ9IklybGFuZGEiIHRpdGxlPSJJcmxhbmRhIj4gSXJsYW5kYSA8aSBjbGFzcz0iZmFzIGZhLWFycm93LXJpZ2h0IGdvLXRvLXZlcnNpb24iPjwvaT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgICAgPGxpIGRhdGEtY29udGluZW50PSJvY2VhbmlhIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+T2NlYW7DrWEgPGkgY2xhc3M9ImZhcyBmYS1zZWFyY2gtcGx1cyBtYXAtem9vbSI+PC9pPjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJjb3VudHJpZXMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZGF0YS12ZXJzaW9uPSJhdSIgZGF0YS1jb3VudHJ5LWlkPSJhdSI+PGltZyBjbGFzcz0ibmZsYWciIHNyYz0iL2ltZ3MvY291bnRyaWVzMi9BVS5wbmciIGFsdD0iQXVzdHJhbGlhIiB0aXRsZT0iQXVzdHJhbGlhIj4gQXVzdHJhbGlhIDxpIGNsYXNzPSJmYXMgZmEtYXJyb3ctcmlnaHQgZ28tdG8tdmVyc2lvbiI+PC9pPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPg0KICAgICAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgIDx1bCBjbGFzcz0iY29udGluZW50cyI+DQogICAgICAgICAgICAgICAgPGxpIGRhdGEtY29udGluZW50PSJhbWVyaWNhLXNvdXRoIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj5BbcOpcmljYSBkZWwgc3VyIDxpIGNsYXNzPSJmYXMgZmEtc2VhcmNoLXBsdXMgbWFwLXpvb20iPjwvaT4gPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iY291bnRyaWVzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZGF0YS12ZXJzaW9uPSJhciIgZGF0YS1jb3VudHJ5LWlkPSJhciI+PGltZyBjbGFzcz0ibmZsYWciIHNyYz0iL2ltZ3MvY291bnRyaWVzMi9BUi5wbmciIGFsdD0iQXJnZW50aW5hIiB0aXRsZT0iQXJnZW50aW5hIj4gQXJnZW50aW5hIDxpIGNsYXNzPSJmYXMgZmEtYXJyb3ctcmlnaHQgZ28tdG8tdmVyc2lvbiI+PC9pPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGRhdGEtdmVyc2lvbj0iY2wiIGRhdGEtY291bnRyeS1pZD0iY2wiPjxpbWcgY2xhc3M9Im5mbGFnIiBzcmM9Ii9pbWdzL2NvdW50cmllczIvQ0wucG5nIiBhbHQ9IkNoaWxlIiB0aXRsZT0iQ2hpbGUiPiBDaGlsZSA8aSBjbGFzcz0iZmFzIGZhLWFycm93LXJpZ2h0IGdvLXRvLXZlcnNpb24iPjwvaT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBkYXRhLXZlcnNpb249ImNvIiBkYXRhLWNvdW50cnktaWQ9ImNvIj48aW1nIGNsYXNzPSJuZmxhZyIgc3JjPSIvaW1ncy9jb3VudHJpZXMyL0NPLnBuZyIgYWx0PSJDb2xvbWJpYSIgdGl0bGU9IkNvbG9tYmlhIj4gQ29sb21iaWEgPGkgY2xhc3M9ImZhcyBmYS1hcnJvdy1yaWdodCBnby10by12ZXJzaW9uIj48L2k+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZGF0YS12ZXJzaW9uPSJ1eSIgZGF0YS1jb3VudHJ5LWlkPSJ1eSI+PGltZyBjbGFzcz0ibmZsYWciIHNyYz0iL2ltZ3MvY291bnRyaWVzMi9VWS5wbmciIGFsdD0iVXJ1Z3VheSIgdGl0bGU9IlVydWd1YXkiPiBVcnVndWF5IDxpIGNsYXNzPSJmYXMgZmEtYXJyb3ctcmlnaHQgZ28tdG8tdmVyc2lvbiI+PC9pPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGRhdGEtdmVyc2lvbj0icGUiIGRhdGEtY291bnRyeS1pZD0icGUiPjxpbWcgY2xhc3M9Im5mbGFnIiBzcmM9Ii9pbWdzL2NvdW50cmllczIvUEUucG5nIiBhbHQ9IlBlcsO6IiB0aXRsZT0iUGVyw7oiPiBQZXLDuiA8aSBjbGFzcz0iZmFzIGZhLWFycm93LXJpZ2h0IGdvLXRvLXZlcnNpb24iPjwvaT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBkYXRhLXZlcnNpb249ImVjIiBkYXRhLWNvdW50cnktaWQ9ImVjIj48aW1nIGNsYXNzPSJuZmxhZyIgc3JjPSIvaW1ncy9jb3VudHJpZXMyL0VDLnBuZyIgYWx0PSJFY3VhZG9yIiB0aXRsZT0iRWN1YWRvciI+IEVjdWFkb3IgPGkgY2xhc3M9ImZhcyBmYS1hcnJvdy1yaWdodCBnby10by12ZXJzaW9uIj48L2k+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZGF0YS12ZXJzaW9uPSJ2ZSIgZGF0YS1jb3VudHJ5LWlkPSJ2ZSI+PGltZyBjbGFzcz0ibmZsYWciIHNyYz0iL2ltZ3MvY291bnRyaWVzMi9WRS5wbmciIGFsdD0iVmVuZXp1ZWxhIiB0aXRsZT0iVmVuZXp1ZWxhIj4gVmVuZXp1ZWxhIDxpIGNsYXNzPSJmYXMgZmEtYXJyb3ctcmlnaHQgZ28tdG8tdmVyc2lvbiI+PC9pPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGRhdGEtdmVyc2lvbj0iY3IiIGRhdGEtY291bnRyeS1pZD0iY3IiPjxpbWcgY2xhc3M9Im5mbGFnIiBzcmM9Ii9pbWdzL2NvdW50cmllczIvQ1IucG5nIiBhbHQ9IkNvc3RhIFJpY2EiIHRpdGxlPSJDb3N0YSBSaWNhIj4gQ29zdGEgUmljYSA8aSBjbGFzcz0iZmFzIGZhLWFycm93LXJpZ2h0IGdvLXRvLXZlcnNpb24iPjwvaT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBkYXRhLXZlcnNpb249ImJvIiBkYXRhLWNvdW50cnktaWQ9ImJvIj48aW1nIGNsYXNzPSJuZmxhZyIgc3JjPSIvaW1ncy9jb3VudHJpZXMyL0JPLnBuZyIgYWx0PSJCb2xpdmlhIiB0aXRsZT0iQm9saXZpYSI+IEJvbGl2aWEgPGkgY2xhc3M9ImZhcyBmYS1hcnJvdy1yaWdodCBnby10by12ZXJzaW9uIj48L2k+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9mYS1pbnRlcm5hdGlvbmFsLnBocCIgY2xhc3M9Im1vcmUtaW5mbyI+PGkgY2xhc3M9ImZhcyBmYS1pbmZvLWNpcmNsZSI+PC9pPiBNw6FzIGluZm9ybWFjacOzbjwvYT4NCiAgICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQoNCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KDQogICAgdmFyIG1hcFZlcnNpb25zID0geyJ1cyI6IiMzQzZFOTkiLCJjYSI6IiMzQzZFOTkiLCJteCI6IiMzQzZFOTkiLCJlcyI6IiMzQzZFOTkiLCJnYiI6IiMzQzZFOTkiLCJpZSI6IiMzQzZFOTkiLCJhdSI6IiMzQzZFOTkiLCJhciI6IiMzQzZFOTkiLCJjbCI6IiMzQzZFOTkiLCJjbyI6IiMzQzZFOTkiLCJ1eSI6IiMzQzZFOTkiLCJwZSI6IiMzQzZFOTkiLCJlYyI6IiMzQzZFOTkiLCJ2ZSI6IiMzQzZFOTkiLCJjciI6IiMzQzZFOTkiLCJibyI6IiMzQzZFOTkifTsNCiAgICANCi8qICAvL3BhcmEgc2FjYXIgdHJhemFzIGRlIGNvb3JkZW5hZGFzLg0KICAgIGpRdWVyeSgnI3ZtYXAnKS5vbignZHJhZycsIGZ1bmN0aW9uKGV2ZW50KQ0KICAgIHsNCiAgICAgICAgY29uc29sZS5sb2coanF2bWFwLnRyYW5zWCk7DQogICAgICAgIGNvbnNvbGUubG9nKGpxdm1hcC50cmFuc1kpOw0KICAgICAgICBjb25zb2xlLmxvZyhqcXZtYXAuc2NhbGUpOw0KICAgICAgICBjb25zb2xlLmxvZyhqcXZtYXAuem9vbUN1clN0ZXApOw0KICAgIH0pOw0KKi8gICAgDQogICAgDQoNCjwvc2NyaXB0Pg0KCiAgICA8L2Rpdj4KPC9kaXY+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0iY3BhbmVsIGFkdmVyLXdyYXBwZXIiPgo8ZGl2IGlkPSJ0b3AtYWQiIGNsYXNzPSJhZHZlci1maXgiPgogICAgPGRpdiBpZD0nc2MtdG9wJyBjbGFzcz0ic2MtdG9wIj4KCiAgICAgICAgICAgPHNjcmlwdD4KCiAgICAgICAgICAgICAgICAgIGdvb2dsZXRhZy5jbWQucHVzaChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGdvb2dsZXRhZy5kaXNwbGF5KCdzYy10b3AnKTsKCiAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgIDwvc2NyaXB0PgoKICAgIDwvZGl2PgoKICAgIDwhLS0gc2Mtb29wLS0+CgogICAgPGRpdiBpZD0nc2Mtb29wJyBjbGFzcz0ic2Mtb29wIj4KCiAgICAgICAgICAgPHNjcmlwdD4KCiAgICAgICAgICAgICAgICAgZ29vZ2xldGFnLmNtZC5wdXNoKGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgZ29vZ2xldGFnLmRpc3BsYXkoJ3NjLW9vcCcpOwoKICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgPC9zY3JpcHQ+CgogICAgPC9kaXY+CjwvZGl2PgoNCg0KDQoNCg0KDQoNCg0KPC9kaXY+Cgo8ZGl2IGlkPSJ0b3AtYW5jaCI+CiAgICA8YSB0aXRsZT0iSXIgYXJyaWJhIiBocmVmPSIjaGVhZGVyLXRvcCI+CiAgICAgICAgPGltZyBhbHQ9ImFycm93IiBzcmM9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vaW1hZ2VzL2Fycm93LXVwMi5wbmciPgogICAgPC9hPgo8L2Rpdj4KPGRpdiBjbGFzcz0iY3BhbmVsIj4KICA8dGFibGUgaWQ9Im1haW4tY29udGVudC10YWJsZSI+CiAgICA8dHI+CiAgICAgIDx0ZCBpZD0ibXQtbGVmdC1jZWxsIj4KICAgICAgICA8ZGl2IGlkPSJsc21lbnUiPgo8ZGl2IGNsYXNzPSJjYXQtY29udGFpbmVyIj4KPGRpdiBjbGFzcz0ibHNtaGVhZGVyIj5Vc3VhcmlvczwvZGl2Pgo8dWw+CjxsaSA+PGEgY2xhc3M9InJhdGUtdG91cnMiICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3RvdXJzLnBocCI+Vm90YXIgbG9zIHRvdXJzPC9hPjwvbGk+PGxpID48YSBjbGFzcz0ic2lnbi1pbiIgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbG9naW4ucGhwIj5JbmljaWFyIHNlc2nDs248L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3JlZ2lzdGVyLnBocCI+UmVnaXN0cmFyc2U8L2E+PC9saT48L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJjYXQtY29udGFpbmVyIj4KPGRpdiBjbGFzcz0ibHNtaGVhZGVyIj5Fc3Bhw7FhPC9kaXY+Cjx1bD4KPGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRfbmV3X3RoX2VzLmh0bWwiPlBlbMOtY3VsYXMgZW4gY2FydGVsZXJhPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jaXR5VGhlYXRlcnMucGhwIj5DaW5lcyBFc3Bhw7FhPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9yZGNhdC5waHA/aWQ9dXBjX3RoX2VzIj5QcsOzeGltb3MgZXN0cmVub3M8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2NhdF9uZXdfc2FfZXMuaHRtbCI+RXN0cmVub3MgQmx1LXJheSB2ZW50YTwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvcmRjYXQucGhwP2lkPXVwY19zYV9lcyI+UHLDs3hpbW9zIEJsdS1yYXkgdmVudGE8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2NhdF9uZXdfcmVfZXMuaHRtbCI+WWEgcGFyYSBhbHF1aWxhcjwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvcmRjYXQucGhwP2lkPXVwY19yZV9lcyI+UHLDs3hpbWFtZW50ZSBhbHF1aWxlcjwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvdm9kX2R2ZC5waHAiPlZpZGVvIG9uIERlbWFuZDwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvY2F0X25ld19uZXRmbGl4Lmh0bWwiPk5ldGZsaXg8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3JkY2F0LnBocD9pZD11cGNfbmV0ZmxpeCI+TmV0ZmxpeCAocHLDs3gpPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRfbmV3X21vdmlzdGFyX2YuaHRtbCI+TW92aXN0YXIgKyA8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2NhdF91cGNfbW92aXN0YXJfZi5odG1sIj5Nb3Zpc3RhciArIChwcsOzeCk8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2NhdF9uZXdfaGJvX2VzLmh0bWwiPkhCTzwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvY2F0X25ld19maWxtaW4uaHRtbCI+RmlsbWluPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRfbmV3X3Jha3V0ZW4uaHRtbCI+UmFrdXRlbiBUVjwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvY2F0X25ld19hbWF6b25fZXMuaHRtbCI+QW1hem9uIFByaW1lPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRfZGlzbmV5cGx1cy5odG1sIj5EaXNuZXkrPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRfYXBwbGVfdHZfcGx1cy5odG1sIj5BcHBsZSBUVis8L2E+PC9saT48L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJjYXQtY29udGFpbmVyIj4KPGRpdiBjbGFzcz0ibHNtaGVhZGVyIj5VU0EgLSBVSyAtIEZSPC9kaXY+Cjx1bD4KPGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRfbmV3X3RoX3VzLmh0bWwiPkVzdHJlbm9zIFVTQTwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvY2F0X25ld190aF91ay5odG1sIj5Fc3RyZW5vcyBSZWlubyBVbmlkbzwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvY2F0X25ld190aF9mci5odG1sIj5Fc3RyZW5vcyBGcmFuY2lhPC9hPjwvbGk+PC91bD48L2Rpdj4KPGRpdiBjbGFzcz0iY2F0LWNvbnRhaW5lciI+CjxkaXYgY2xhc3M9ImxzbWhlYWRlciI+U2VjY2lvbmVzPC9kaXY+Cjx1bD4KPGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9ib3hvZmZpY2UucGhwIj5UYXF1aWxsYTwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvdHJhaWxlcnMucGhwIj5UcmFpbGVyczwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbGF0ZXN0ZXZpZGVvcy5waHAiPsOabHRpbW9zIHRyYWlsZXJzPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9sYXRlc3RyZXZpZXdzLnBocCI+w5psdGltYXMgY3LDrXRpY2FzIHVzZXJzPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRlZ29yeS5waHA/aWQ9bGF0ZXN0X3Jldmlld3MiPlF1w6kgZGljZSBsYSBjcsOtdGljYTwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvdG9waWNzLnBocCI+UGVsw61jdWxhcyBwb3IgdGVtYXM8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL21vdmllLWdyb3Vwcy1hbGwucGhwIj5TYWdhcyAmIEZyYW5xdWljaWFzPC9hPjwvbGk+PC91bD48L2Rpdj4KPGRpdiBjbGFzcz0iY2F0LWNvbnRhaW5lciI+CjxkaXYgY2xhc3M9ImxzbWhlYWRlciI+U2VyaWVzIGRlIFRWPC9kaXY+Cjx1bD4KPGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRfY3VycmVudF90di5odG1sIj5TZXJpZXMgZGUgYWN0dWFsaWRhZDwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvdG9wZ2VuLnBocD9nZW5yZT1UVl9TRSZjb3VudHJ5PSZmcm9teWVhcj0mdG95ZWFyPSZub2RvYyI+VG9wIHNlcmllczwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvdG91ci5waHA/aWR0b3VyPTI2Ij5Wb3RhIFNlcmllcyBkZSBUVjwvYT48L2xpPjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9ImNhdC1jb250YWluZXIiPgo8ZGl2IGNsYXNzPSJsc21oZWFkZXIiPlRPUHM8L2Rpdj4KPHVsPgo8bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3RvcGdlbi5waHAiPlRvcCBGaWxtYWZmaW5pdHk8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2Jlc3RfdG9wcy5waHAiPkxvIG1lam9yIGRlbCBUT1A8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3RvcGNhdF9uZXdfdGhfZXMuaHRtbCI+VG9wIEVzdHJlbm9zPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy90b3BjYXRfbmV3X3NhX2VzLmh0bWwiPlRvcCBFc3RyZW5vcyBCbHUtcmF5PC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9saXN0c3JhbmsucGhwIj5SYW5raW5nIGRlIGxpc3RhczwvYT48L2xpPjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9ImNhdC1jb250YWluZXIiPgo8ZGl2IGNsYXNzPSJsc21oZWFkZXIiPlByZW1pb3MgfCBGZXN0aXZhbGVzPC9kaXY+Cjx1bD4KPGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9hbGxfYXdhcmRzLnBocCI+UHJlbWlvcyB5IEZlc3RpdmFsZXM8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL29zY2FyX2RhdGEucGhwIj5Ub2RvcyBsb3MgT3NjYXI8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2Jlc3RfMjAxOS5waHAiPlJlc3VtZW4gMjAxOTwvYT48L2xpPjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9ImNhdC1jb250YWluZXIiPgo8ZGl2IGNsYXNzPSJsc21oZWFkZXIiPkluZm9ybWFjacOzbjwvZGl2Pgo8dWw+CjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvc2l0ZS1ndWlkZS5waHAiPkFjZXJjYSBkZSBGQTwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvY29udGFjdF91cy5waHAiPkNvbnRhY3RvPC9hPjwvbGk+PC91bD48L2Rpdj4KPC9kaXY+CiAgICAgIDwvdGQ+CiAgICAgIDx0ZD4KICAgICAgICA8ZGl2IGlkPSJtdC1jb250ZW50LWNlbGwiPgogICAgICAgICAgICA8ZGl2IGlkPSJzaC1wb3MtYWJzIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNoLWhlYWRlciIgdGl0bGU9ImNvbXBhcnRpciI+PGkgY2xhc3M9ImZhcyBmYS1zaGFyZS1hbHQiPjwvaT48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxzdHlsZT4KICAgICNoaWRkZW4tdXJsIHtwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDY1cHg7IHRvcDogMnB4OyBkaXNwbGF5OiBub25lOyBwYWRkaW5nOiAycHggNnB4IDRweCA2cHg7IGJhY2tncm91bmQ6ICNmZGNjMWE7IG1hcmdpbi10b3A6IDVweDsgd2lkdGg6IDQ4NXB4OyBib3JkZXItcmFkaXVzOiA1cHg7IGFuaW1hdGlvbi1kdXJhdGlvbjogLjNzOyB6LWluZGV4OiAxMDA7fQogICAgI2hpZGRlbi11cmwgaW5wdXR7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IG91dGxpbmU6IG5vbmU7IGJvcmRlcjogMXB4IHNvbGlkICNEREREREQ7IGJvcmRlci1yYWRpdXM6IDVweDsgcGFkZGluZzogOHB4IDRweDsgd2lkdGg6IDQzNXB4OyBtYXJnaW4tbGVmdDogNXB4OyBmb250LWZhbWlseTogbW9ub3NwYWNlO30KICAgICNoaWRkZW4tdXJsIC5oaWRlLXVybCB7Y3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDIycHg7IG1hcmdpbjogMCA1cHg7IGNvbG9yOiAjMDAwOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO30KICAgICNjb3B5LWNsaXBib2FyZCB7cG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwcHg7IHRvcDogMzFweDsgcGFkZGluZzogMnB4IDZweDsgYmFja2dyb3VuZDogI2ZkY2MxYTsgbWFyZ2luLXRvcDogNXB4OyBhbmltYXRpb24tZHVyYXRpb246IC4zczsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OyB3aWR0aDogMjAwcHg7IGN1cnNvcjogcG9pbnRlcjsgcGFkZGluZy1sZWZ0OiAxNXB4O30KPC9zdHlsZT4KCjxzY3JpcHQ+CgogICAgZnVuY3Rpb24gaGlkZU9uQ2xpY2soICl7CiAgICAgICAgJChkb2N1bWVudCkuY2xpY2soZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgaWYoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KCcuaGQtc2gtd3JhcHBlcicpLmxlbmd0aCAmJiAhJChldmVudC50YXJnZXQpLmNsb3Nlc3QoJyNoaWRkZW4tdXJsJykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBpZigkKCcuaGQtc2gtd3JhcHBlcicpLmlzKCI6dmlzaWJsZSIpKSB7CiAgICAgICAgICAgICAgICAgICAgLy8kKCcuaGlkZGVuLXNoYXJlLXdyYXBwZXInKS5oaWRlKCk7CiAgICAgICAgICAgICAgICAgICAgJCgnLnNoLWhlYWRlcicpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gICAgICAgIAogICAgICAgIH0pOwogICAgfSAgCiAKICAgICQoZnVuY3Rpb24oKSB7CiAgICAgICAgJCgnLmhkLXNoLXdyYXBwZXInKS5iaW5kKCdhbmltYXRpb25FbmQgb0FuaW1hdGlvbkVuZCBtc0FuaW1hdGlvbkVuZCBtb3pBbmltYXRpb25FbmQgd2Via2l0QW5pbWF0aW9uRW5kJywgZnVuY3Rpb24oZXZlbnQpewogICAgICAgICAgICBpZiggICQoZXZlbnQudGFyZ2V0KS5oYXNDbGFzcygnbmtvb3V0JykgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkKCcuaGQtc2gtd3JhcHBlcicpLmhpZGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgfSk7ICAgICAgICAKCiAgICAgICAgJCgnI3NoLXBvcy1hYnMnKS50b2dnbGUoIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAkKCcuc2gtaGVhZGVyJykuYWRkQ2xhc3MoJ2NsaWNrZWQnKTsKICAgICAgICAgICAgICAgICQoJy5oZC1zaC13cmFwcGVyJykucmVtb3ZlQ2xhc3MoJ25rb291dCcpLmFkZENsYXNzKCdua29pbicpLnNob3coKTsKICAgICAgICAgICAgfSwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICQoJy5oZC1zaC13cmFwcGVyJykucmVtb3ZlQ2xhc3MoJ25rb2luJykuYWRkQ2xhc3MoJ25rb291dCcpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAkKCcubWFpbi1zaCcpLnJlbW92ZUNsYXNzKCdjbGlja2VkJyk7CiAgICAgICAgICAgICAgICBpZiggJCgnI2hpZGRlbi11cmwnKS5pcygiOnZpc2libGUiKSApIHsKICAgICAgICAgICAgICAgICAgICAkKCcjY29weS10by1jbGlwJykuY2xpY2soKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICAKICAgICAgICAvL3ZhciBwYXRobmFtZSA9ICdodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tJyArIGxvY2F0aW9uLnBhdGhuYW1lICsgbG9jYXRpb24uc2VhcmNoOwogICAgICAgIHZhciBwYXRobmFtZSA9IGVuY29kZVVSSSgnaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9maWxtNTA0ODg5Lmh0bWwnKTsKICAgICAgICB2YXIgc2xpZGVPcHRpb25zID0geyBkaXJlY3Rpb246ICdsZWZ0JyB9OwoKICAgICAgICAkKCcjY29weS10by1jbGlwJykudG9nZ2xlKAogICAgICAgICAgICBmdW5jdGlvbigpewogICAgICAgICAgICAgICAgJCgnI2hpZGRlbi11cmwnKS5zaG93KCk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAkKCcjaGlkZGVuLXVybCcpLmZpbmQoJzppbnB1dCcpLnZhbChwYXRobmFtZSk7CiAgICAgICAgICAgICAgICAgICAgLy8kKCcjaGlkZGVuLXVybCcpLmZpbmQoJzppbnB1dCcpLnNlbGVjdCgpOwogICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0ID0gJCgnI2hpZGRlbi11cmwnKS5maW5kKCc6aW5wdXQnKS50ZXh0KCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgJCgnI2hpZGRlbi11cmwnKS5oaWRlKCk7CiAgICAgICAgfSk7CgogICAgICAgICQoJyNoaWRkZW4tdXJsJykub24oJ2NsaWNrJywgJyNjb3B5LWNsaXBib2FyZCcsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICQodGhpcykudGV4dCggJCgnI2NvcHktY2xpcGJvYXJkJykuYXR0cignZGF0YS10ZXh0JykgKTsKICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoIHBhdGhuYW1lICkKICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyggcGF0aG5hbWUgKTsKICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgY29weSB0ZXh0OiAnLCBlcnIpOwogICAgICAgICAgICB9KTsgIAogICAgICAgIH0pCgogICAgICAgICQoJyNoaWRkZW4tdXJsJykuZmluZCgnLmhpZGUtdXJsJykuY2xpY2soZnVuY3Rpb24oKQogICAgICAgIHsKICAgICAgICAgICAgJCgnI2NvcHktdG8tY2xpcCcpLnRyaWdnZXIoJ2NsaWNrJykKICAgICAgICB9KTsKCiAgICAgICAgaGlkZU9uQ2xpY2soKTsKICAgIH0pOwo8L3NjcmlwdD4KCjxkaXYgY2xhc3M9ImhkLXNoLW1haW4td3JhcHBlciI+CiAgICA8ZGl2IGNsYXNzPSJoZC1zaC13cmFwcGVyIj4KICAgICAgICA8YSBpZD0iY29weS10by1jbGlwIiB0aXRsZT0iQ29waWEgbGEgVVJMIHBhcmEgY29tcGFydGlyIiBocmVmPSIjIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hhcmUtaWNvbiIgaWQ9ImNvcHktdG8tY2xpcC1jb250YWluZXIiPjxpIGNsYXNzPSJmYXMgZmEtbGluayI+PC9pPjwvZGl2PgogICAgICAgIDwvYT4KICAgICAgICAgICAgCiAgICAgICAgPGEgY2xhc3M9ImZiLXNoIiB0YXJnZXQ9Il9CTEFOSyIgaHJlZj0iaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL3NoYXJlci5waHA/dT1odHRwcyUzQSUyRiUyRnd3dy5maWxtYWZmaW5pdHkuY29tJTJGZXMlMkZmaWxtNTA0ODg5Lmh0bWwmdD1FbCBzaG93IGRlIFRydW1hbiAoVW5hIHZpZGEgZW4gZGlyZWN0bykgICgxOTk4KSIgdGl0bGU9IkNvbXBhcnRlIGVuIEZhY2Vib29rIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hhcmUtaWNvbiI+PGkgY2xhc3M9ImZhYiBmYS1mYWNlYm9vay1mIj48L2k+PC9kaXY+CiAgICAgICAgPC9hPgogICAgCiAgICAgICAgPGEgY2xhc3M9InR3LXNoIiB0YXJnZXQ9Il9CTEFOSyIgdGl0bGU9IkNvbXBhcnRlIGVuIFR3aXR0ZXIiIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vaW50ZW50L3R3ZWV0P3RleHQ9RWwlMjBzaG93JTIwZGUlMjBUcnVtYW4lMjAlMjhVbmElMjB2aWRhJTIwZW4lMjBkaXJlY3RvJTI5JTIwJTIwJTI4MTk5OCUyOSZuYnNwO2VuIEBmaWxtYWZmaW5pdHkgaHR0cHMlM0ElMkYlMkZ3d3cuZmlsbWFmZmluaXR5LmNvbSUyRmVzJTJGZmlsbTUwNDg4OS5odG1sIiB0aXRsZT0iQ29tcGFydGUgZW4gVHdpdHRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNoYXJlLWljb24iPjxpIGNsYXNzPSJmYWIgZmEtdHdpdHRlciI+PC9pPjwvZGl2PgogICAgICAgIDwvYT4KICAgICAgICA8YSBjbGFzcz0id2gtc2giIHRhcmdldD0iX0JMQU5LIiB0aXRsZT0iQ29tcGFydGUgZW4gV2hhdHNBcHAiIGhyZWY9Imh0dHBzOi8vYXBpLndoYXRzYXBwLmNvbS9zZW5kP3RleHQ9RWwlMjBzaG93JTIwZGUlMjBUcnVtYW4lMjAlMjhVbmElMjB2aWRhJTIwZW4lMjBkaXJlY3RvJTI5JTIwJTIwJTI4MTk5OCUyOSZuYnNwO2VuIEBmaWxtYWZmaW5pdHkgaHR0cHMlM0ElMkYlMkZ3d3cuZmlsbWFmZmluaXR5LmNvbSUyRmVzJTJGZmlsbTUwNDg4OS5odG1sIiB0aXRsZT0iQ29tcGFydGUgZW4gV2hhdHNBcHAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaGFyZS1pY29uIj48aSBjbGFzcz0iZmFiIGZhLXdoYXRzYXBwIj48L2k+PC9kaXY+CiAgICAgICAgPC9hPgogCjwvZGl2Pgo8L2Rpdj4KCiAgICA8ZGl2IGlkPSJoaWRkZW4tdXJsIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNTUiPjxpIGNsYXNzPSJmYXMgZmEtdGltZXMtY2lyY2xlIGhpZGUtdXJsIj48L2k+CiAgICAgICAgPGRpdiBpZD0iY29weS1jbGlwYm9hcmQiIGRhdGEtdGV4dD0iQ29waWFkbyI+SGF6IGNsaWNrIGFxdcOtIHBhcmEgY29waWFyIGxhIFVSTDwvZGl2PgogICAgPC9kaXY+CgoKICAgIAoKCgo8ZGl2IGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTW92aWUiPgogICAgPGgxIGlkPSJtYWluLXRpdGxlIj4KICAgICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+RWwgc2hvdyBkZSBUcnVtYW4gKFVuYSB2aWRhIGVuIGRpcmVjdG8pIDwvc3Bhbj4KICAgIDwvaDE+CgoKCgo8c2NyaXB0PgokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgJCgiI3Nob3ctYWxsLXBybyIpLmNsaWNrKGZ1bmN0aW9uKGV2ZW50KXsKICAgICAgICAkKHRoaXMpLnBhcmVudCgnbGknKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgJCgiLmhpZGRlbiIpLnNsaWRlRG93bignc2xvdycpOwogICAgfSk7CgogICAgJCgiI3Nob3ctYWxsLWF3YXJkcyIpLmNsaWNrKGZ1bmN0aW9uKGV2ZW50KXsKICAgICAgICAkKHRoaXMpLnBhcmVudCgnZGl2JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICQoIi5oaWRkZW4tYXdhcmRzIikuc2xpZGVEb3duKCdzbG93Jyk7CiAgICB9KTsKCiAgICAkKCcuei1tb3ZpZSAuY3JlZGl0cycpLm9uKCdjbGljaycsICcuc2VlLW1vcmUtY3JlZGl0cycgLGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCdkaXYnKS5maW5kKCcuaGlkZGVuLWNyZWRpdCcpLmNzcygnZGlzcGxheScsICdpbmxpbmUtYmxvY2snKTsKICAgICAgICB2YXIgJGxhc3QgPSAkKHRoaXMpLmNsb3Nlc3QoJ2RpdicpLmZpbmQoJy5uYjpsYXN0IGEnKTsKICAgICAgICBpZiggJGxhc3QubGVuZ3RoID09IDAgKXsKICAgICAgICAgICAgdmFyICRsYXN0ID0gJCh0aGlzKS5jbG9zZXN0KCdkaXYnKS5maW5kKCcubmI6bGFzdCBzcGFuJyk7CiAgICAgICAgfQoKICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJ2RpdicpLmZpbmQoJy5uYjpsYXN0JykuaHRtbCgkbGFzdFswXS5vdXRlckhUTUwpOwogICAgICAgICQodGhpcykuY2xvc2VzdCgnZGl2JykuZmluZCgnLnQtcCcpLmhpZGUoKTsKCiAgICAgICAgJCh0aGlzKS5odG1sKCJWZXIgbWVub3MiKS5hZGRDbGFzcygnc2VlLWxlc3MtY3JlZGl0cycpLnJlbW92ZUNsYXNzKCdzZWUtbW9yZS1jcmVkaXRzJyk7CiAgICB9KQoKICAgICQoJy56LW1vdmllIC5jcmVkaXRzJykub24oJ2NsaWNrJywgJy5zZWUtbGVzcy1jcmVkaXRzJyAsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCdkaXYnKS5maW5kKCcuaGlkZGVuLWNyZWRpdCcpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgJCh0aGlzKS5odG1sKCJWZXIgdG9kb3MiKS5hZGRDbGFzcygnc2VlLW1vcmUtY3JlZGl0cycpLnJlbW92ZUNsYXNzKCdzZWUtbGVzcy1jcmVkaXRzJyk7CiAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCdkaXYnKS5maW5kKCcudC1wJykuc2hvdygpOwogICAgfSkKCiAgICAkKCIjY2JveE92ZXJsYXkiKS5vbignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0pOwoKICAgICQoJy5zaG93LWFrYXMnKS5vbignY2xpY2snLCBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdmFyIGljb24gPSAkKHRoaXMpLmZpbmQoJ2knKTsKICAgICAgICBpZihpY29uLmhhc0NsYXNzKCdmYS1jYXJldC1kb3duJykpCiAgICAgICAgewogICAgICAgICAgICAkKCcuYWthcycpLnNsaWRlRG93bigpOwogICAgICAgICAgICBpY29uLnJlbW92ZUNsYXNzKCdmYS1jYXJldC1kb3duJykuYWRkQ2xhc3MoJ2ZhLWNhcmV0LXVwJyk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgICQoJy5ha2FzJykuc2xpZGVVcCgpOwogICAgICAgICAgICBpY29uLnJlbW92ZUNsYXNzKCdmYS1jYXJldC11cCcpLmFkZENsYXNzKCdmYS1jYXJldC1kb3duJyk7CiAgICAgICAgfQoKICAgIH0pOwp9KTsKPC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgIG5ldyBSYXRpbmdCYXJzKCQoJyNyYXQtZGlzcCcpLCBbMTUsNTQsMTAwLDc2LDMxLDgsMywxLDEsMF0pOwogICAgICAgICAgICB9KTsKICAgICAgICA8L3NjcmlwdD4KCjxkaXYgY2xhc3M9InotbW92aWUiPgoKPHNjcmlwdD4NCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7DQogICAgJCgiI21vcmUtY2F0ZWdvcmllcyIpLmNsaWNrKGZ1bmN0aW9uKGUpew0KICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsNCiAgICAgICAgJCgiLmhpZGRlbi1tZW51IikudG9nZ2xlKCk7DQogICAgfSk7DQoNCiAgICAvL3BhcmEgcG9uZXIgZWwgbGV0cmVyaXRvIGRlIG5vdmVkYWQNCiAgICAvLyQoIi5uZXciKS5hcHBlbmQoJzxkaXYgaWQ9InRvb2x0aXAtbmV3Ij5ub3ZlZGFkPC9kaXY+Jyk7DQp9KTsNCg0KJChkb2N1bWVudCkuY2xpY2soZnVuY3Rpb24oKSB7DQogICAgJCgiLmhpZGRlbi1tZW51IikuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsNCn0pOw0KDQo8L3NjcmlwdD4NCg0KPGRpdiBjbGFzcz0ibWFyZ2luLW50YWJzIj4NCiAgICANCiAgICANCiAgICANCg0KPHVsIGNsYXNzPSJudGFicyI+DQogICAgPGxpIGNsYXNzPSJhY3RpdmUiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvZmlsbTUwNDg4OS5odG1sIj5GaWNoYSZuYnNwOzwvYT48L2xpPg0KICAgIDxsaSA+PGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9yZXZpZXdzLzEvNTA0ODg5Lmh0bWwiPkNyw610aWNhcyZuYnNwOzxlbT5bMjAxXTwvZW0+PC9hPjwvbGk+DQogICAgPGxpID48YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2V2aWRlb3MucGhwP21vdmllX2lkPTUwNDg4OSI+VHLDoWlsZXJzJm5ic3A7PGVtPlszXTwvZW0+PC9hPjwvbGk+DQogICAgPGxpID48YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2ZpbG1pbWFnZXMucGhwP21vdmllX2lkPTUwNDg4OSI+SW3DoWdlbmVzJm5ic3A7PGVtPlsxNF08L2VtPjwvYT48L2xpPg0KICAgIDxsaSBjbGFzcz0ibmV3Ij48YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2J1eW1vdmllLnBocD9tb3ZpZV9pZD01MDQ4ODkiPkRWRC9Wb0QmbmJzcDs8ZW0+WzJdPC9lbT48L2E+PC9saT4NCjwvdWw+DQo8L2Rpdj4NCgogICAgPGRpdiBpZD0icmlnaHQtY29sdW1uIj4KICAgICAgICA8ZGl2IGlkPSJtb3ZpZS1tYWluLWltYWdlLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0ibGlnaHRib3giIHN0eWxlPSJkaXNwbGF5OiBibG9jazsiIGhyZWY9Imh0dHBzOi8vcGljcy5maWxtYWZmaW5pdHkuY29tL3RoZV90cnVtYW5fc2hvdy0xMzAwOTE1NTctbGFyZ2UuanBnIiB0aXRsZT0iRWwgc2hvdyBkZSBUcnVtYW4gKFVuYSB2aWRhIGVuIGRpcmVjdG8pICIgZGF0YS10PSI8cCBzdHlsZT1mb250LXNpemU6OXB4O2ZvbnQtZmFtaWx5OmFyaWFsO2NvbG9yOiM2NjY2NjY7PkVsIGNvcHlyaWdodCBkZSBsYXMgaW3DoWdlbmVzIHBlcnRlbmVjZSBhIHN1cyByZXNwZWN0aXZvcyBhdXRvcmVzIHkvbyBwcm9kdWN0b3Jhcy9kaXN0cmlidWlkb3Jhcy48L3A+IiBkYXRhLW1vdmllLWlkPSI1MDQ4ODkiPgogICAgICAgIDxpbWcgaXRlbXByb3A9ImltYWdlIiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjIzOCIgc3JjPSJodHRwczovL3BpY3MuZmlsbWFmZmluaXR5LmNvbS90aGVfdHJ1bWFuX3Nob3ctMTMwMDkxNTU3LW1tZWQuanBnIiBhbHQ9IkVsIHNob3cgZGUgVHJ1bWFuIChVbmEgdmlkYSBlbiBkaXJlY3RvKSAiPiAgICAgICAgPHNwYW4gdGl0bGU9IlZlciB0cmFpbGVyIiBjbGFzcz0ic2VlLXRyYWlsZXIiPjxpIGNsYXNzPSJmYXMgZmEtcGxheS1jaXJjbGUiPjwvaT48L3NwYW4+CiAgICA8L2E+CiAgICAgICAgPC9kaXY+CgoKICAgICAgICA8ZGl2IGlkPSJyYXQtY29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBpZD0icmF0LWF2Zy1jb3VudCIgaXRlbXByb3A9ImFnZ3JlZ2F0ZVJhdGluZyIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9BZ2dyZWdhdGVSYXRpbmciPgogICAgICAgICAgICAgICAgPGRpdiBpZD0ibW92aWUtcmF0LWltYWdlIj48c3BhbiBpZD0ic3RhcnMiPjxpbWcgc3JjPSIvaW1ncy9yYXRpbmdzLzgucG5nIj48L3NwYW4+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJyYXQtYXZnLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0ibW92aWUtcmF0LWF2ZyIgaXRlbXByb3A9InJhdGluZ1ZhbHVlIiBjb250ZW50PSI3LjciPgogICAgICAgICAgICAgICAgICAgICAgICA3LDcgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJiZXN0UmF0aW5nIiBjb250ZW50PSIxMCIvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJ3b3JzdFJhdGluZyIgY29udGVudD0iMSIvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJyZXZpZXdDb3VudCIgY29udGVudD0iMjAxIi8+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0ibW92aWUtY291bnQtcmF0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaXRlbXByb3A9InJhdGluZ0NvdW50IiBjb250ZW50PSIxMjAxMjIiPjEyMC4xMjI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im1vdmllLWNvdW50LXJhdC10ZXh0Ij52b3RvczwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNsZWFyZml4Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCgogICAgICAgICAgICA8ZGl2IGlkPSJyYXQtZ3JhcGgiPgogICAgICAgICAgICAgICAgPGNhbnZhcyBzdHlsZT0icGFkZGluZzogM3B4OyBiYWNrZ3JvdW5kOiAjZmZmOyBib3JkZXI6IDFweCBzb2xpZCAjQ0REQ0VCIiBoZWlnaHQ9IjgxIiB3aWR0aD0iMTIwIiBpZD0icmF0LWRpc3AiPgogICAgICAgICAgICAgICAgICAgIFBsdWdpbiBubyBzb3BvcnRhZG8gICAgICAgICAgICAgICAgPC9jYW52YXM+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBpZD0icmV2aWV3LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0ibW92aWUtcmV2aWV3cy1ib3giPgogICAgICAgICAgICAgICAgICAgICAgICAyMDEgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9yZXZpZXdzLzEvNTA0ODg5Lmh0bWwiPmNyw610aWNhczwvYT4gLSA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3Jldmlld3MyLzEvNTA0ODg5Lmh0bWwiPnBvciB0w610dWxvczwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNsZWFyZml4Ij48L2Rpdj4KICAgIDwvZGl2Pgo8ZGl2IGNsYXNzPSJyYXRlLW1vdmllLWJveCIgZGF0YS1tb3ZpZS1pZD0iNTA0ODg5IiBkYXRhLXVzZXItcmF0aW5nPSIiPg0KICAgIDxkaXYgY2xhc3M9InJhdGUtd3JhcHBlciI+DQogICAgICA8ZGl2IGNsYXNzPSJydC1ib3giPjxhIGNsYXNzPSJzaWduLWluIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2xvZ2luLnBocCI+Vm90YSBlc3RhIHBlbMOtY3VsYTwvYT48L2Rpdj4NCiAgICAgICAgPC9kaXY+DQo8L2Rpdj4NCgoKCgo8ZGl2IGNsYXNzPSJhZGQtbW92aWUtbGlzdC1jb250Ij4KICAgIDxkaXYgY2xhc3M9ImFkZC10ZXh0LWNvbnRlbnQiPgogICAgPGRpdiBjbGFzcz0iYWRkLW1vdmllLWxpc3QtaW5mbyBhZGQtdG8tbGlzdC1idXR0b24iPgo8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2VkdG1vdmllbGlzdHMucGhwP21vdmllX2lkPTUwNDg4OSI+QcOxYWRpciBhIGxpc3RhczwvYT4gICAgPC9kaXY+CiAgICA8L2Rpdj4KCjxkaXYgY2xhc3M9Imxpc3RzLWJveCI+PC9kaXY+Cgo8L2Rpdj4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9wcm8tcmV2aWV3cy5waHA/bW92aWUtaWQ9NTA0ODg5Ij4KICAgIDxkaXYgY2xhc3M9ImZpbG0tcmlnaHQtYm94IHByby1yZXZpZXdzLWNoYXJ0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Q3LDrXRpY2FzIHByb2Zlc2lvbmFsZXM8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJib2R5Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvLXJldmlld3MtY2hhcnQtd3JhcHBlciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3RhbC1hYnMiIHRpdGxlPSIxMiBjcsOtdGljYXMgcHJvZmVzaW9uYWxlcyI+CiAgICAgICAgICAgICAgICAgICAgMTIgPHNtYWxsPjxpIGNsYXNzPSJmYSBmYS1zaW1wbGUtdXNlci1vLWZhIj48L2k+PC9zbWFsbD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGNhbnZhcyBpZD0ibXlDaGFydCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMTBweDsgd2lkdGg6IDcwcHg7IGhlaWdodDogNzBweDsiPjwvY2FudmFzPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZyI+MTE8aSBjbGFzcz0iZmEgZmEtc2ltcGxlLXVzZXItby1mYSI+PC9pPiA8aSBjbGFzcz0iZmFzIGZhLWNpcmNsZSAgcG9zIiB0aXRsZT0idGVuZGVuY2lhIGRlIGxhIGNyw610aWNhOiBwb3NpdGl2YSIgc3R5bGU9ImNvbG9yOiAjNENBRjUwIj48L2k+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnIj4xPGkgY2xhc3M9ImZhIGZhLXNpbXBsZS11c2VyLW8tZmEiPjwvaT4gPGkgY2xhc3M9ImZhcyBmYS1jaXJjbGUgIG5ldSIgdGl0bGU9InRlbmRlbmNpYSBkZSBsYSBjcsOtdGljYTogbmV1dHJhbCIgc3R5bGU9ImNvbG9yOiAjRkZCRjAwIj48L2k+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnIj4wPGkgY2xhc3M9ImZhIGZhLXNpbXBsZS11c2VyLW8tZmEiPjwvaT4gPGkgY2xhc3M9ImZhcyBmYS1jaXJjbGUgIG5lZyIgdGl0bGU9InRlbmRlbmNpYSBkZSBsYSBjcsOtdGljYTogbmVnYXRpdmEiIHN0eWxlPSJjb2xvcjogI0Y0NDMzNiI+PC9pPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PjwhLS0gYm9keSAtLT4KICAgIDwvZGl2Pgo8L2E+CjxzY3JpcHQ+CiAgICAgICAgdmFyIHJhbmRvbVNjYWxpbmdGYWN0b3IgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMCk7CiAgICAgICAgfTsKCiAgICB2YXIgY3R4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215Q2hhcnQnKTsKICAgICAgICB2YXIgY29uZmlnID0gewogICAgICAgICAgICB0eXBlOiAnZG91Z2hudXQnLAogICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICBkYXRhc2V0czogW3sKICAgICAgICAgICAgICAgICAgICBkYXRhOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDM2OCwKICAgICAgICAgICAgICAgICAgICAgICAgMzIsCiAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFsKICAgICAgICAgICAgICAgICAgICAgICAgJyMwMDgwMDAnLAogICAgICAgICAgICAgICAgICAgICAgICAnI0ZGQTUwMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICcjRkYwMDAwJywKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnRGF0YXNldCAxJwogICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICBsYWJlbHM6IFsKICAgICAgICAgICAgICAgICAgICAnUG9zaXRpdmFzJywKICAgICAgICAgICAgICAgICAgICAnTmV1dHJhcycsCiAgICAgICAgICAgICAgICAgICAgJ05lZ2F0aXZhcycsCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgIHJlc3BvbnNpdmU6IGZhbHNlLAogICAgICAgICAgICAgICAgbGVnZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmFsc2UsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdGl0bGU6IHsKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmYWxzZSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBhbmltYXRpb246IHsKICAgICAgICAgICAgICAgICAgICBhbmltYXRlU2NhbGU6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZVJvdGF0ZTogdHJ1ZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGN1dG91dFBlcmNlbnRhZ2U6IDc1LAogICAgICAgICAgICAgICAgdG9vbHRpcHM6IHsKICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgdmFyIG15Q2hhcnQgPSBuZXcgQ2hhcnQoY3R4LCBjb25maWcpOwo8L3NjcmlwdD4KCgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0ibGVmdC1jb2x1bW4iPgogICAgICAgIDxkbCBjbGFzcz0ibW92aWUtaW5mbyI+CiAgICAgICAgICAgIDxkdD5Uw610dWxvIG9yaWdpbmFsPC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgVGhlIFRydW1hbiBTaG93ICAgICAgICAgICAgIDwvZGQ+CgoKCgogICAgICAgICAgICA8ZHQ+QcOxbzwvZHQ+CiAgICAgICAgICAgIDxkZCBpdGVtcHJvcD0iZGF0ZVB1Ymxpc2hlZCI+MTk5ODwvZGQ+CgogICAgICAgICAgICA8ZHQ+RHVyYWNpw7NuPC9kdD4KICAgICAgICAgICAgPGRkIGl0ZW1wcm9wPSJkdXJhdGlvbiI+MTAzIG1pbi48L2RkPgoKICAgICAgICAgICAgPGR0PlBhw61zPC9kdD4KICAgICAgICAgICAgPGRkPjxzcGFuIGlkPSJjb3VudHJ5LWltZyI+PGltZyBjbGFzcz0ibmZsYWciIHNyYz0iL2ltZ3MvY291bnRyaWVzMi9VUy5wbmciIGFsdD0iRXN0YWRvcyBVbmlkb3MiIHRpdGxlPSJFc3RhZG9zIFVuaWRvcyI+PC9zcGFuPiZuYnNwO0VzdGFkb3MgVW5pZG9zPC9kZD4KICAgICAgICAgICAgPGR0PkRpcmVjY2nDs248L2R0PgogICAgICAgICAgICA8ZGQgY2xhc3M9ImRpcmVjdG9ycyI+CjxkaXYgY2xhc3M9ImNyZWRpdHMiPjxzcGFuIGNsYXNzPSJuYiIgIGl0ZW1wcm9wPSJkaXJlY3RvciIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9QZXJzb24iPjxhIGl0ZW1wcm9wPSJ1cmwiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvc2VhcmNoLnBocD9zdHlwZT1kaXJlY3RvciZzbiZzdGV4dD1QZXRlciUyMFdlaXIiIHRpdGxlPSJQZXRlciBXZWlyIj48c3BhbiBpdGVtcHJvcD0ibmFtZSI+UGV0ZXIgV2Vpcjwvc3Bhbj48L2E+PC9zcGFuPjwvZGl2PiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDxkdD5HdWlvbjwvZHQ+CiAgICAgICAgICAgIDxkZD48ZGl2IGNsYXNzPSJjcmVkaXRzIj48c3BhbiBjbGFzcz0ibmIiPjxzcGFuPkFuZHJldyBOaWNjb2w8L3NwYW4+PC9zcGFuPjwvZGl2PjwvZGQ+CiAgICAgICAgICAgIDxkdD5Nw7pzaWNhPC9kdD4KICAgICAgICAgICAgPGRkPjxkaXYgY2xhc3M9ImNyZWRpdHMiPjxzcGFuIGNsYXNzPSJuYiI+PHNwYW4+QnVya2hhcmQgRGFsbHdpdHo8L3NwYW4+PC9zcGFuPjwvZGl2PjwvZGQ+CiAgICAgICAgICAgIDxkdD5Gb3RvZ3JhZsOtYTwvZHQ+CiAgICAgICAgICAgIDxkZD48ZGl2IGNsYXNzPSJjcmVkaXRzIj48c3BhbiBjbGFzcz0ibmIiPjxzcGFuPlBldGVyIEJpemlvdTwvc3Bhbj48L3NwYW4+PC9kaXY+PC9kZD4KICAgICAgICAgICAgPGR0PlJlcGFydG88L2R0PgogICAgICAgICAgICA8ZGQgY2xhc3M9ImNhcmQtY2FzdCI+CjxkaXYgY2xhc3M9ImNyZWRpdHMiPjxzcGFuIGNsYXNzPSJuYiIgIGl0ZW1wcm9wPSJhY3RvciIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9QZXJzb24iPjxhIGl0ZW1wcm9wPSJ1cmwiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvc2VhcmNoLnBocD9zdHlwZT1jYXN0JnNuJnN0ZXh0PUppbSUyMENhcnJleSIgdGl0bGU9IkppbSBDYXJyZXkiPjxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5KaW0gQ2FycmV5PC9zcGFuPjwvYT4sPC9zcGFuPiA8c3BhbiBjbGFzcz0ibmIiICBpdGVtcHJvcD0iYWN0b3IiIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvUGVyc29uIj48YSBpdGVtcHJvcD0idXJsIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3NlYXJjaC5waHA/c3R5cGU9Y2FzdCZzbiZzdGV4dD1MYXVyYSUyMExpbm5leSIgdGl0bGU9IkxhdXJhIExpbm5leSI+PHNwYW4gaXRlbXByb3A9Im5hbWUiPkxhdXJhIExpbm5leTwvc3Bhbj48L2E+LDwvc3Bhbj4gPHNwYW4gY2xhc3M9Im5iIiAgaXRlbXByb3A9ImFjdG9yIiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1BlcnNvbiI+PGEgaXRlbXByb3A9InVybCIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9zZWFyY2gucGhwP3N0eXBlPWNhc3Qmc24mc3RleHQ9Tm9haCUyMEVtbWVyaWNoIiB0aXRsZT0iTm9haCBFbW1lcmljaCI+PHNwYW4gaXRlbXByb3A9Im5hbWUiPk5vYWggRW1tZXJpY2g8L3NwYW4+PC9hPiw8L3NwYW4+IDxzcGFuIGNsYXNzPSJuYiIgIGl0ZW1wcm9wPSJhY3RvciIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9QZXJzb24iPjxhIGl0ZW1wcm9wPSJ1cmwiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvc2VhcmNoLnBocD9zdHlwZT1jYXN0JnNuJnN0ZXh0PUVkJTIwSGFycmlzIiB0aXRsZT0iRWQgSGFycmlzIj48c3BhbiBpdGVtcHJvcD0ibmFtZSI+RWQgSGFycmlzPC9zcGFuPjwvYT4sPC9zcGFuPiA8c3BhbiBjbGFzcz0ibmIiICBpdGVtcHJvcD0iYWN0b3IiIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvUGVyc29uIj48YSBpdGVtcHJvcD0idXJsIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3NlYXJjaC5waHA/c3R5cGU9Y2FzdCZzbiZzdGV4dD1OYXRhc2NoYSUyME1jRWxob25lIiB0aXRsZT0iTmF0YXNjaGEgTWNFbGhvbmUiPjxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5OYXRhc2NoYSBNY0VsaG9uZTwvc3Bhbj48L2E+LDwvc3Bhbj4gPHNwYW4gY2xhc3M9Im5iIiAgaXRlbXByb3A9ImFjdG9yIiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1BlcnNvbiI+PGEgaXRlbXByb3A9InVybCIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9zZWFyY2gucGhwP3N0eXBlPWNhc3Qmc24mc3RleHQ9SG9sbGFuZCUyMFRheWxvciIgdGl0bGU9IkhvbGxhbmQgVGF5bG9yIj48c3BhbiBpdGVtcHJvcD0ibmFtZSI+SG9sbGFuZCBUYXlsb3I8L3NwYW4+PC9hPiw8L3NwYW4+IDxzcGFuIGNsYXNzPSJuYiIgIGl0ZW1wcm9wPSJhY3RvciIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9QZXJzb24iPjxhIGl0ZW1wcm9wPSJ1cmwiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvc2VhcmNoLnBocD9zdHlwZT1jYXN0JnNuJnN0ZXh0PVBhdWwlMjBHaWFtYXR0aSIgdGl0bGU9IlBhdWwgR2lhbWF0dGkiPjxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QYXVsIEdpYW1hdHRpPC9zcGFuPjwvYT4sPC9zcGFuPiA8c3BhbiBjbGFzcz0ibmIiICBpdGVtcHJvcD0iYWN0b3IiIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvUGVyc29uIj48YSBpdGVtcHJvcD0idXJsIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3NlYXJjaC5waHA/c3R5cGU9Y2FzdCZzbiZzdGV4dD1BZGFtJTIwVG9tZWkiIHRpdGxlPSJBZGFtIFRvbWVpIj48c3BhbiBpdGVtcHJvcD0ibmFtZSI+QWRhbSBUb21laTwvc3Bhbj48L2E+LDwvc3Bhbj4gPHNwYW4gY2xhc3M9Im5iIiAgaXRlbXByb3A9ImFjdG9yIiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1BlcnNvbiI+PGEgaXRlbXByb3A9InVybCIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9zZWFyY2gucGhwP3N0eXBlPWNhc3Qmc24mc3RleHQ9SGFycnklMjBTaGVhcmVyIiB0aXRsZT0iSGFycnkgU2hlYXJlciI+PHNwYW4gaXRlbXByb3A9Im5hbWUiPkhhcnJ5IFNoZWFyZXI8L3NwYW4+PC9hPiw8L3NwYW4+IDxzcGFuIGNsYXNzPSJuYiIgIGl0ZW1wcm9wPSJhY3RvciIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9QZXJzb24iPjxhIGl0ZW1wcm9wPSJ1cmwiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvc2VhcmNoLnBocD9zdHlwZT1jYXN0JnNuJnN0ZXh0PUJyaWFuJTIwRGVsYXRlIiB0aXRsZT0iQnJpYW4gRGVsYXRlIj48c3BhbiBpdGVtcHJvcD0ibmFtZSI+QnJpYW4gRGVsYXRlPC9zcGFuPjwvYT4sPC9zcGFuPiA8c3BhbiBjbGFzcz0ibmIiICBpdGVtcHJvcD0iYWN0b3IiIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvUGVyc29uIj48YSBpdGVtcHJvcD0idXJsIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3NlYXJjaC5waHA/c3R5cGU9Y2FzdCZzbiZzdGV4dD1QaGlsaXAlMjBCYWtlciUyMEhhbGwiIHRpdGxlPSJQaGlsaXAgQmFrZXIgSGFsbCI+PHNwYW4gaXRlbXByb3A9Im5hbWUiPlBoaWxpcCBCYWtlciBIYWxsPC9zcGFuPjwvYT4sPC9zcGFuPiA8c3BhbiBjbGFzcz0ibmIiICBpdGVtcHJvcD0iYWN0b3IiIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvUGVyc29uIj48YSBpdGVtcHJvcD0idXJsIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3NlYXJjaC5waHA/c3R5cGU9Y2FzdCZzbiZzdGV4dD1QZXRlciUyMEtyYXVzZSIgdGl0bGU9IlBldGVyIEtyYXVzZSI+PHNwYW4gaXRlbXByb3A9Im5hbWUiPlBldGVyIEtyYXVzZTwvc3Bhbj48L2E+LDwvc3Bhbj4gPHNwYW4gY2xhc3M9Im5iIiAgaXRlbXByb3A9ImFjdG9yIiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1BlcnNvbiI+PGEgaXRlbXByb3A9InVybCIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9zZWFyY2gucGhwP3N0eXBlPWNhc3Qmc24mc3RleHQ9Ty1MYW4lMjBKb25lcyIgdGl0bGU9Ik8tTGFuIEpvbmVzIj48c3BhbiBpdGVtcHJvcD0ibmFtZSI+Ty1MYW4gSm9uZXM8L3NwYW4+PC9hPjwvc3Bhbj48L2Rpdj4gICAgICAgICAgICA8L2RkPgogICAgICAgICAgICA8ZHQ+UHJvZHVjdG9yYTwvZHQ+CiAgICAgICAgICAgIDxkZCBjbGFzcz0iY2FyZC1wcm9kdWNlciI+PGRpdiBjbGFzcz0iY3JlZGl0cyI+PHNwYW4gY2xhc3M9Im5iIj48c3Bhbj5QYXJhbW91bnQgUGljdHVyZXM8L3NwYW4+LDwvc3Bhbj4gPHNwYW4gY2xhc3M9Im5iIj48c3Bhbj5TY290dCBSdWRpbiBQcm9kdWN0aW9uczwvc3Bhbj48L3NwYW4+PC9kaXY+PC9kZD4KCiAgICAgICAgICAgIDxkdD5Hw6luZXJvPC9kdD4KICAgICAgICAgICAgPGRkIGNsYXNzPSJjYXJkLWdlbnJlcyI+CiAgICAgICAgICAgICAgICA8c3BhbiBpdGVtcHJvcD0iZ2VucmUiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbW92aWVnZW5yZS5waHA/Z2VucmU9RFImYXR0cj1yYXRfY291bnQmbm9kb2MiPkRyYW1hPC9hPjwvc3Bhbj4uICAgICAgICAgICAgICAgICA8c3BhbiBpdGVtcHJvcD0iZ2VucmUiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbW92aWVnZW5yZS5waHA/Z2VucmU9Q08mYXR0cj1yYXRfY291bnQmbm9kb2MiPkNvbWVkaWE8L2E+PC9zcGFuPiB8ICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL21vdmlldG9waWMucGhwP3RvcGljPTg5OTc3NiZhdHRyPXJhdF9jb3VudCZub2RvYyI+Q29tZWRpYSBkcmFtw6F0aWNhPC9hPi4gICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbW92aWV0b3BpYy5waHA/dG9waWM9MzMzNjkyJmF0dHI9cmF0X2NvdW50Jm5vZG9jIj5Tw6F0aXJhPC9hPi4gICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbW92aWV0b3BpYy5waHA/dG9waWM9MTYyMDE3JmF0dHI9cmF0X2NvdW50Jm5vZG9jIj5UZWxldmlzacOzbjwvYT4uICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL21vdmlldG9waWMucGhwP3RvcGljPTQzNjQ0NyZhdHRyPXJhdF9jb3VudCZub2RvYyI+UGVsw61jdWxhIGRlIGN1bHRvPC9hPiAgICAgICAgICAgIDwvZGQ+CgoKICAgICAgICA8ZHQ+U2lub3BzaXM8L2R0PgogICAgICAgIDxkZCBjbGFzcz0iIiBpdGVtcHJvcD0iZGVzY3JpcHRpb24iPlRydW1hbiBCdXJiYW5rIGVzIHVuIGhvbWJyZSBjb3JyaWVudGUgeSBhbGdvIGluZ2VudW8gcXVlIGhhIHZpdmlkbyB0b2RhIHN1IHZpZGEgZW4gdW5vIGRlIGVzb3MgcHVlYmxvcyBkb25kZSBudW5jYSBwYXNhIG5hZGEuIFNpbiBlbWJhcmdvLCBkZSByZXBlbnRlLCB1bm9zIGV4dHJhw7FvcyBzdWNlc29zIGxlIGhhY2VuIHNvc3BlY2hhciBxdWUgYWxnbyBhbm9ybWFsIGVzdMOhIG9jdXJyaWVuZG8uIFRvZG9zIHN1cyBhbWlnb3Mgc29uIGFjdG9yZXMsIHRvZGEgc3UgY2l1ZGFkIGVzIHVuIHBsYXTDsywgdG9kYSBzdSB2aWRhIGVzdMOhIHNpZW5kbyBmaWxtYWRhIHkgZW1pdGlkYSBjb21vIGVsIHJlYWxpdHkgbcOhcyBhbWJpY2lvc28gZGUgbGEgaGlzdG9yaWEuIChGSUxNQUZGSU5JVFkpPC9kZD4KICAgIDwvZGw+CiAgICA8ZGwgY2xhc3M9Im1hcmdpbi10b3AgbW92aWUtaW5mbyI+CiAgICAgICAgPGR0PlByZW1pb3M8L2R0PgogICAgICAgIDxkZCBjbGFzcz0iYXdhcmQiPgogICAgICAgIDxkaXYgIGNsYXNzPSJtYXJnaW4tYm90dG9tIj48YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2F3YXJkcy5waHA/YXdhcmRfaWQ9YWNhZGVteV9hd2FyZHMmeWVhcj0xOTk5Ij4xOTk4PC9hPjogMyBub21pbmFjaW9uZXMgYWwgT3NjYXI6IE1lam9yIGRpcmVjdG9yLCBhY3RvciBzZWN1bmRhcmlvIChFZCBIYXJyaXMpLCBndWnDs248L2Rpdj4KICAgICAgICA8ZGl2ICBjbGFzcz0ibWFyZ2luLWJvdHRvbSI+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvYXdhcmRzLnBocD9hd2FyZF9pZD1nb2xkZW5nbG9iZXMmeWVhcj0xOTk5Ij4xOTk4PC9hPjogMyBHbG9ib3MgZGUgT3JvOiBhY3RvciBkcmFtYSAoQ2FycmV5KSwgYWN0b3Igc2VjdW5kYXJpbyB5IG3DunNpY2EuIDYgbm9taW5hY2lvbmVzPC9kaXY+CiAgICAgICAgPGRpdiAgY2xhc3M9Im1hcmdpbi1ib3R0b20iPgo8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2F3YXJkcy5waHA/YXdhcmRfaWQ9YmFmdGEmeWVhcj0xOTk5Ij4xOTk4PC9hPjogMyBwcmVtaW9zIEJBRlRBOiBNZWpvciBkaXJlY3RvciwgZGlzZcOxbyBkZSBwcm9kdWNjacOzbiB5IGd1acOzbiBvcmlnaW5hbC4gNyBub20uPC9kaXY+CiAgICAgICAgPGRpdiAgY2xhc3M9Im1hcmdpbi1ib3R0b20iPgo8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2F3YXJkcy5waHA/YXdhcmRfaWQ9bmJyJnllYXI9MTk5OCI+MTk5ODwvYT46IE5hdGlvbmFsIEJvYXJkIG9mIFJldmlldzogQWN0b3Igc2VjdW5kYXJpbyAoRWQgSGFycmlzKTwvZGl2PgogICAgICAgIDxkaXYgIGNsYXNzPSJtYXJnaW4tYm90dG9tIj4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9hd2FyZHMucGhwP2F3YXJkX2lkPWxhZmNhJnllYXI9MTk5OCI+MTk5ODwvYT46IEFzb2NpYWNpw7NuIGRlIENyw610aWNvcyBkZSBMb3MgQW5nZWxlczogTm9taW5hZGEgTWVqb3IgZGlzZcOxbyBkZSBwcm9kdWNjacOzbjwvZGl2PgogICAgICAgIDxkaXYgIGNsYXNzPSJtYXJnaW4tYm90dG9tIj4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9hd2FyZHMucGhwP2F3YXJkX2lkPWNyaXRpY3NfY2hvaWNlX2F3YXJkcyZ5ZWFyPTE5OTgiPjE5OTg8L2E+OiBDcml0aWNzJyBDaG9pY2UgQXdhcmRzOiBOb21pbmFkYSBhIE1lam9yIHBlbMOtY3VsYTwvZGl2PgogICAgICAgIDxkaXY+PHNwYW4gaWQ9InNob3ctYWxsLWF3YXJkcyI+PGEgaHJlZj0iIyI+TW9zdHJhciA0IHByZW1pb3MgbcOhczwvYT4KICAgICAgICAgICAgPGkgY2xhc3M9ImZhcyBmYS1jaGV2cm9uLWRvd24gc3RyaXAtZG93biI+PC9pPjwvc3Bhbj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJoaWRkZW4tYXdhcmRzIG1hcmdpbi1ib3R0b20iIGNsYXNzPSJtYXJnaW4tYm90dG9tIj4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9hd2FyZHMucGhwP2F3YXJkX2lkPWNmY2EmeWVhcj0xOTk4Ij4xOTk4PC9hPjogQXNvY2lhY2nDs24gZGUgQ3LDrXRpY29zIGRlIENoaWNhZ286IE1lam9yIGJhbmRhIHNvbm9yYS4gNSBub21pbmFjaW9uZXM8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJoaWRkZW4tYXdhcmRzIG1hcmdpbi1ib3R0b20iIGNsYXNzPSJtYXJnaW4tYm90dG9tIj4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9hd2FyZHMucGhwP2F3YXJkX2lkPXBnYSZ5ZWFyPTE5OTkiPjE5OTg8L2E+OiBTaW5kaWNhdG8gZGUgUHJvZHVjdG9yZXMgKFBHQSk6IE5vbWluYWRhIGEgTWVqb3IgcGVsw61jdWxhPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iaGlkZGVuLWF3YXJkcyBtYXJnaW4tYm90dG9tIiBjbGFzcz0ibWFyZ2luLWJvdHRvbSI+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvYXdhcmRzLnBocD9hd2FyZF9pZD1kZ2EmeWVhcj0xOTk5Ij4xOTk4PC9hPjogU2luZGljYXRvIGRlIERpcmVjdG9yZXMgKERHQSk6IE5vbWluYWRhIGEgTWVqb3IgZGlyZWN0b3I8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJoaWRkZW4tYXdhcmRzIG1hcmdpbi1ib3R0b20iIGNsYXNzPSJtYXJnaW4tYm90dG9tIj4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9hd2FyZHMucGhwP2F3YXJkX2lkPXdnYSZ5ZWFyPTE5OTkiPjE5OTg8L2E+OiBTaW5kaWNhdG8gZGUgR3Vpb25pc3RhcyAoV0dBKTogTm9taW5hZGEgYSBNZWpvciBndWnDs24gb3JpZ2luYWw8L2Rpdj4KICAgICAgICA8L2RkPgogICAgPC9kbD4KCiAgICA8ZGwgY2xhc3M9Im1hcmdpbi10b3AgbW92aWUtaW5mbyI+CiAgICAgICAgPGR0PkNyw610aWNhczwvZHQ+CiAgICAgICAgPGRkPgogICAgICAgICAgICA8dWwgaWQ9InByby1yZXZpZXdzIj4KICAgICAgICAgICA8bGkgPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvLXJldmlldyIgaXRlbXByb3A9InJldmlldyIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9SZXZpZXciPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGl0ZW1wcm9wPSJyZXZpZXdCb2R5Ij4mcXVvdDtNdXkgZGUgdmV6IGVuIGN1YW5kbywgc2UgZGEgZWwgbWlsYWdybyBkZSBxdWUgYSB1biBndWlvbmlzdGEgZGUgcmF6YSBzZSBsZSBvY3VycmEgdW4gYXJndW1lbnRvIGluc8OzbGl0bywgY2FlIGVuIG1hbm9zIGRlIHVuIGRpcmVjdG9yIGRlIGFsdHVyYSB5IGxvcyBlc3BlY3RhZG9yZXMgcG9kZW1vcyBkaXNmcnV0YXIgZGUgbG8gbnVuY2EgdmlzdG8geSBvaWRvJnF1b3Q7PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm8tY3JpdC1tZWQiIGl0ZW1wcm9wPSJhdXRob3IiPkNhcmxvcyBCb3llcm86IERpYXJpbyBFbCBNdW5kbyA8aSBhbHQ9InRlbmRlbmNpYSBkZSBsYSBjcsOtdGljYTogcG9zaXRpdmEiIHRpdGxlPSJ0ZW5kZW5jaWEgZGUgbGEgY3LDrXRpY2E6IHBvc2l0aXZhIiBjbGFzcz0iZmFzIGZhLWNpcmNsZSAgcG9zIj48L2k+PC9kaXY+CgoKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgIDxsaSA+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm8tcmV2aWV3IiBpdGVtcHJvcD0icmV2aWV3IiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1JldmlldyI+CgogICAgICAgICAgICAgICAgICAgIDxhIHRpdGxlPSJMZWVyIGNyw610aWNhIGNvbXBsZXRhIiBocmVmPSJodHRwOi8vZWxwYWlzLmNvbS9kaWFyaW8vMTk5OC8wOS8wNy9jdWx0dXJhLzkwNTExOTIwOF84NTAyMTUuaHRtbCIgdGFyZ2V0PSJfQkxBTksiID4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGl0ZW1wcm9wPSJyZXZpZXdCb2R5Ij4mcXVvdDtEZXNjb25jZXJ0YW50ZSB5IHBlcnR1cmJhZG9yYSBwZWzDrWN1bGEgKC4uLikgdW4gbWF6YXpvIG1vbm9sw610aWNvLCBjb21wYWN0bywgdmlnb3Jvc28geSBkZSBncmFuIGVmaWNhY2lhJnF1b3Q7Jm5ic3A7PGkgY2xhc3M9J2ZhcyBmYS1leHRlcm5hbC1saW5rLWFsdCc+PC9pPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByby1jcml0LW1lZCIgaXRlbXByb3A9ImF1dGhvciI+w4FuZ2VsIEZlcm7DoW5kZXogU2FudG9zOiBEaWFyaW8gRWwgUGHDrXMgPGkgYWx0PSJ0ZW5kZW5jaWEgZGUgbGEgY3LDrXRpY2E6IHBvc2l0aXZhIiB0aXRsZT0idGVuZGVuY2lhIGRlIGxhIGNyw610aWNhOiBwb3NpdGl2YSIgY2xhc3M9ImZhcyBmYS1jaXJjbGUgIHBvcyI+PC9pPjwvZGl2PgoKCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICA8bGkgPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvLXJldmlldyIgaXRlbXByb3A9InJldmlldyIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9SZXZpZXciPgoKICAgICAgICAgICAgICAgICAgICA8YSB0aXRsZT0iTGVlciBjcsOtdGljYSBjb21wbGV0YSIgaHJlZj0iaHR0cHM6Ly93d3cucm9nZXJlYmVydC5jb20vcmV2aWV3cy90aGUtdHJ1bWFuLXNob3ctMTk5OCIgdGFyZ2V0PSJfQkxBTksiID4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGl0ZW1wcm9wPSJyZXZpZXdCb2R5Ij4mcXVvdDtMYXMgaWRlYXMgcXVlIHN1YnlhY2VuIGVuIGVsIHRyYXNmb25kbyBkZSBlc3RhIG9icmEgbGEgY29udmllcnRlbiBlbiBhbGdvIG3DoXMgcXVlIHVuIHNpbXBsZSBlbnRyZXRlbmltaWVudG8gKC4uLikgRXMgdW5hIHJlZmxleGnDs24gc29icmUgbG9zIG51ZXZvcyB2YWxvcmVzIHF1ZSBsYSB0ZWNub2xvZ8OtYSB0cmFlIGltcGzDrWNpdG9zIHBhcmEgbGEgaHVtYW5pZGFkICjigKYpIFB1bnR1YWNpw7NuOiAmIzk3MzM7JiM5NzMzOyYjOTczMzsmIzk3MzM7IChzb2JyZSA0KSZxdW90OyZuYnNwOzxpIGNsYXNzPSdmYXMgZmEtZXh0ZXJuYWwtbGluay1hbHQnPjwvaT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm8tY3JpdC1tZWQiIGl0ZW1wcm9wPSJhdXRob3IiPlJvZ2VyIEViZXJ0OiByb2dlcmViZXJ0LmNvbSA8aSBhbHQ9InRlbmRlbmNpYSBkZSBsYSBjcsOtdGljYTogcG9zaXRpdmEiIHRpdGxlPSJ0ZW5kZW5jaWEgZGUgbGEgY3LDrXRpY2E6IHBvc2l0aXZhIiBjbGFzcz0iZmFzIGZhLWNpcmNsZSAgcG9zIj48L2k+PC9kaXY+CgoKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgIDxsaSA+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm8tcmV2aWV3IiBpdGVtcHJvcD0icmV2aWV3IiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1JldmlldyI+CgogICAgICAgICAgICAgICAgICAgIDxhIHRpdGxlPSJMZWVyIGNyw610aWNhIGNvbXBsZXRhIiBocmVmPSJodHRwczovL3d3dy50aGVndWFyZGlhbi5jb20vZmlsbS8xOTk4L29jdC8wOS8xIiB0YXJnZXQ9Il9CTEFOSyIgPgogICAgICAgICAgICAgICAgICAgIDxkaXYgaXRlbXByb3A9InJldmlld0JvZHkiPiZxdW90O0FsZ3VuYXMgdmVjZXMsIGF1bnF1ZSBubyBjb24gbGEgc3VmaWNpZW50ZSBmcmVjdWVuY2lhLCB1bmEgcGVsw61jdWxhIGRlIEhvbGx5d29vZCBsb2dyYSBwZXJzdWFkaXIgYSBsb3MgZXNwZWN0YWRvcmVzIGRlIHF1ZSByZWZsZXhpb25lbiBzb2JyZSBlbCBtdW5kbyBlbiBlbCBxdWUgdml2ZW4geSBkZSBjw7NtbyDDqXNvIGxlcyBhZmVjdGEgZW4gc3UgdmlkYSBwZXJzb25hbC4mcXVvdDsmbmJzcDs8aSBjbGFzcz0nZmFzIGZhLWV4dGVybmFsLWxpbmstYWx0Jz48L2k+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvLWNyaXQtbWVkIiBpdGVtcHJvcD0iYXV0aG9yIj5SaWNoYXJkIFdpbGxpYW1zOiBUaGUgR3VhcmRpYW4gPGkgYWx0PSJ0ZW5kZW5jaWEgZGUgbGEgY3LDrXRpY2E6IHBvc2l0aXZhIiB0aXRsZT0idGVuZGVuY2lhIGRlIGxhIGNyw610aWNhOiBwb3NpdGl2YSIgY2xhc3M9ImZhcyBmYS1jaXJjbGUgIHBvcyI+PC9pPjwvZGl2PgoKCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICA8bGkgPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvLXJldmlldyIgaXRlbXByb3A9InJldmlldyIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9SZXZpZXciPgoKICAgICAgICAgICAgICAgICAgICA8YSB0aXRsZT0iTGVlciBjcsOtdGljYSBjb21wbGV0YSIgaHJlZj0iaHR0cHM6Ly93d3cuZW1waXJlb25saW5lLmNvbS9tb3ZpZXMvZW1waXJlLWVzc2F5LXRydW1hbi1zaG93L3Jldmlldy8iIHRhcmdldD0iX0JMQU5LIiA+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpdGVtcHJvcD0icmV2aWV3Qm9keSI+JnF1b3Q7VmFsaWVudGUgeSBjb24gY29uc2NpZW5jaWEgcHJvcGlhLiBBdGFjYSBzaW4gY29udGVtcGxhY2lvbmVzIGEgbG9zIG1lZGlvcyBkZSBjb211bmljYWNpw7NuIHkgYSBzdSBuZWNlc2lkYWQgZGUgY29udHJvbGFyIHkgZXRpcXVldGFyIHRvZG8gbG8gcXVlIHN1Y2VkZSBlbiBsYSB2aWRhIHJlYWwgKOKApikgUHVudHVhY2nDs246ICYjOTczMzsmIzk3MzM7JiM5NzMzOyYjOTczMzsmIzk3MzM7IChzb2JyZSA1KSZxdW90OyZuYnNwOzxpIGNsYXNzPSdmYXMgZmEtZXh0ZXJuYWwtbGluay1hbHQnPjwvaT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm8tY3JpdC1tZWQiIGl0ZW1wcm9wPSJhdXRob3IiPkFkYW0gU21pdGg6IEVtcGlyZSA8aSBhbHQ9InRlbmRlbmNpYSBkZSBsYSBjcsOtdGljYTogcG9zaXRpdmEiIHRpdGxlPSJ0ZW5kZW5jaWEgZGUgbGEgY3LDrXRpY2E6IHBvc2l0aXZhIiBjbGFzcz0iZmFzIGZhLWNpcmNsZSAgcG9zIj48L2k+PC9kaXY+CgoKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgIDxsaSA+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm8tcmV2aWV3IiBpdGVtcHJvcD0icmV2aWV3IiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1JldmlldyI+CgogICAgICAgICAgICAgICAgICAgIDxhIHRpdGxlPSJMZWVyIGNyw610aWNhIGNvbXBsZXRhIiBocmVmPSJodHRwOi8vYXJ0aWNsZXMuY2hpY2Fnb3RyaWJ1bmUuY29tLzE5OTgtMDYtMDUvZW50ZXJ0YWlubWVudC85ODA2MDUwMDk4XzFfdHJ1bWFuLWJ1cmJhbmstdHJ1bWFuLXNob3ctc2VhaGF2ZW4iIHRhcmdldD0iX0JMQU5LIiA+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpdGVtcHJvcD0icmV2aWV3Qm9keSI+JnF1b3Q7RXMgYSBsYSB2ZXogc8OhdGlyYSwgY29tZWRpYSB5IGZhbnRhc8OtYSBzb2JyZSBlbCBmdXR1cm8gZGUgbGEgVFYgeSBkZSBjw7NtbyBsYSBnZW50ZSBzZSB2ZXLDoSBhdHJhcGFkYSBlbiBsYXMgcmVkZXMgZGUgbGEgb21uaXByZXNlbnRlIHRlY25vbG9nw61hICjigKYpIFB1bnR1YWNpw7NuOiAmIzk3MzM7JiM5NzMzOyYjOTczMzsmIzk3MzM7IChzb2JyZSA0KSZxdW90OyZuYnNwOzxpIGNsYXNzPSdmYXMgZmEtZXh0ZXJuYWwtbGluay1hbHQnPjwvaT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm8tY3JpdC1tZWQiIGl0ZW1wcm9wPSJhdXRob3IiPk1pY2hhZWwgV2lsbWluZ3RvbjogQ2hpY2FnbyBUcmlidW5lIDxpIGFsdD0idGVuZGVuY2lhIGRlIGxhIGNyw610aWNhOiBwb3NpdGl2YSIgdGl0bGU9InRlbmRlbmNpYSBkZSBsYSBjcsOtdGljYTogcG9zaXRpdmEiIGNsYXNzPSJmYXMgZmEtY2lyY2xlICBwb3MiPjwvaT48L2Rpdj4KCgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgPGxpID4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByby1yZXZpZXciIGl0ZW1wcm9wPSJyZXZpZXciIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvUmV2aWV3Ij4KCiAgICAgICAgICAgICAgICAgICAgPGEgdGl0bGU9IkxlZXIgY3LDrXRpY2EgY29tcGxldGEiIGhyZWY9Imh0dHA6Ly9jb21tdW5pdHkuc2VhdHRsZXRpbWVzLm53c291cmNlLmNvbS9hcmNoaXZlLz9kYXRlPTE5OTgwNjA1JnNsdWc9Mjc1NDQ4OCIgdGFyZ2V0PSJfQkxBTksiID4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGl0ZW1wcm9wPSJyZXZpZXdCb2R5Ij4mcXVvdDtVbmEgZGUgZXNhcyBwZWzDrWN1bGFzIHF1ZSBzZSBxdWVkYSBlbiBsYSBtZW1vcmlhIGR1cmFudGUgbXVjaG8gdGllbXBvLCB5IGRlIGxhcyBwb2NhcyBxdWUgc29uIGNhcGFjZXMgZGUgY2FtYmlhciBudWVzdHJhIGZvcm1hIGRlIGVudGVuZGVyIGxhIHZpZGEgeSBlbCBtdW5kby4mcXVvdDsmbmJzcDs8aSBjbGFzcz0nZmFzIGZhLWV4dGVybmFsLWxpbmstYWx0Jz48L2k+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvLWNyaXQtbWVkIiBpdGVtcHJvcD0iYXV0aG9yIj5Ub20gS2VvZ2g6IFNlYXR0bGUgVGltZXMgPGkgYWx0PSJ0ZW5kZW5jaWEgZGUgbGEgY3LDrXRpY2E6IHBvc2l0aXZhIiB0aXRsZT0idGVuZGVuY2lhIGRlIGxhIGNyw610aWNhOiBwb3NpdGl2YSIgY2xhc3M9ImZhcyBmYS1jaXJjbGUgIHBvcyI+PC9pPjwvZGl2PgoKCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PGVtPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvcHJvLXJldmlld3MucGhwP21vdmllLWlkPTUwNDg4OSI+TW9zdHJhciA1IGNyw610aWNhcyBtw6FzIDxpIGNsYXNzPSJmYXMgZmEtY2hldnJvbi1yaWdodCBzdHJpcC1kb3duIj48L2k+PC9hPjwvZW0+PC9saT4KCiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kZD4KICAgIDwvZGw+CgogICAgICAgIDxkbCBjbGFzcz0ibWFyZ2luLXRvcCBtb3ZpZS1pbmZvIj4KICAgICAgICAgICAgPGEgbmFtZT0ibXlyZXZpZXciPjwvYT4KICAgICAgICAgICAgPGR0IGlkPSJteXJldmlld3QiPlR1IGNyw610aWNhPC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hcmdpbi1ib3R0b20gYWRkLXJldmlldy13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmV2dGV4dCIgZGF0YS1tb3ZpZS1pZD0iNTA0ODg5IiBjb250ZW50ZWRpdGFibGU9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+RXNjcmliZSB0dSBvcGluacOzbiBwYXJhIHF1ZSBlbCByZXN0byBkZSBsb3MgdXN1YXJpb3MgbGEgcHVlZGEgbGVlci48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvYWRkcmV2aWV3LnBocD9tb3ZpZV9pZD01MDQ4ODkiPjxzbWFsbD5Bw7FhZGUgdHUgY3LDrXRpY2E8L3NtYWxsPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgPC9kbD4KCgogICAgPGRsIGNsYXNzPSJtYXJnaW4tdG9wIG1vdmllLWluZm8iPgogICAgICAgIDxkdCBzdHlsZT0icGFkZGluZy1ib3R0b206IDUwcHg7Ij5Wb3RhY2lvbmVzIGRlIGFsbWFzIGdlbWVsYXM8L2R0PgogICAgICAgIDxkZCBzdHlsZT0icGFkZGluZy1ib3R0b206IDUwcHg7Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWFyZ2luLWJvdHRvbSIgaWQ9InNtLW0tcmF0Ij4KICAgICAgICAgICAgICAgIA0KICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvcmVnaXN0ZXIucGhwIj5SZWfDrXN0cmF0ZTwvYT4geSBwb2Ryw6FzIGFjY2VkZXIgYSByZWNvbWVuZGFjaW9uZXMgcGVyc29uYWxpemFkYXMgc2Vnw7puIHR1cyBndXN0b3MgZGUgY2luZSAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGQ+CgogICAgICAgIDxkdD5Wb3RhY2lvbmVzIGRlIHR1cyBhbWlnb3M8L2R0PgogICAgICAgIDxkZD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWFyZ2luLWJvdHRvbSIgaWQ9ImZyLW0tcmF0Ij4KICAgICAgICAgICAgICAgIDxkaXY+PGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9yZWdpc3Rlci5waHAiPlJlZ8Otc3RyYXRlPC9hPiB5IHBvZHLDoXMgYWNjZWRlciBhIHRvZGFzIGxhcyB2b3RhY2lvbmVzIGRlIHR1cyBhbWlnb3MsIGZhbWlsaWFyZXMsIGV0Yy48L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGQ+CiAgICA8L2RsPgoKICAgIDxzY3JpcHQ+CiAgICAgICAgJChmdW5jdGlvbigpewogICAgICAgICAgICAkKCcjbGlzdC10b3AtcmFuayAuc2hvdy1hbGwgYScpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICQoJyNsaXN0LXRvcC1yYW5rIC5zaG93LWFsbCcpLmhpZGUoKTsKICAgICAgICAgICAgICAgJCgnI2xpc3QtdG9wLXJhbmsgbGknKS5zaG93KCk7CiAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcjbGlzdC10b3AtcmFuayBsaScpLmVhY2goZnVuY3Rpb24oaW5keCwgdmFsdWUpewogICAgICAgICAgICAgICAgJCh2YWx1ZSkuYXR0cigndGl0bGUnLCAkKHZhbHVlKS5maW5kKCdlbScpLnRleHQoKS5tYXRjaCgvXGQrLykgKyAnIGFwYXJpY2lvbmVzIGVuIGVzdGEgbGlzdGEnKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICA8L3NjcmlwdD4KICAgIDxkbCBjbGFzcz0ibWFyZ2luLXRvcCBtb3ZpZS1pbmZvIj4KICAgICAgICA8ZHQ+UG9zaWNpw7NuIHJhbmtpbmdzIGxpc3RhczwvZHQ+CiAgICAgICAgPGRkIGlkPSJsaXN0LXRvcC1yYW5rIiBjbGFzcz0ibm8tcGFkZGluZyI+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+PHN0cm9uZz4xMjwvc3Ryb25nPiA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2xpc3R0b3Btb3ZpZXMucGhwP2xpc3RfaWQ9NTE5Ij5QZWzDrWN1bGFzIGluZnJhdmFsb3JhZGFzPC9hPiA8ZW0+KDExMyk8L2VtPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgPjxzdHJvbmc+MTU8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9saXN0dG9wbW92aWVzLnBocD9saXN0X2lkPTUwMCI+UGVsw61jdWxhcyBhcGFyZW50ZW1lbnRlIG5vcm1hbGVzIHF1ZSB0aWVuZW4gYWxnbyBlc3BlY2lhbCBwYXJhIG3DrTwvYT4gPGVtPigxMDcpPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpID48c3Ryb25nPjE2PC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbGlzdHRvcG1vdmllcy5waHA/bGlzdF9pZD04MzAiPlBlbMOtY3VsYXMgY29uIGVsIHBvc3RlciBtw6FzIG9yaWdpbmFsL2N1cmlvc28gZGUgbGEgaGlzdG9yaWEgZGVsIGNpbmU8L2E+IDxlbT4oNyk8L2VtPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgPjxzdHJvbmc+MTk8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9saXN0dG9wbW92aWVzLnBocD9saXN0X2lkPTUwOSI+TWlzIHBlbMOtY3VsYXMgcHJlZmVyaWRhcyBkZSBsb3MgOTA8L2E+IDxlbT4oMzA4KTwvZW0+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+PHN0cm9uZz4yMTwvc3Ryb25nPiA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2xpc3R0b3Btb3ZpZXMucGhwP2xpc3RfaWQ9NTMwIj5QZWzDrWN1bGFzIGNvbiBtZWpvciBndWnDs248L2E+IDxlbT4oOTYpPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpID48c3Ryb25nPjI3PC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbGlzdHRvcG1vdmllcy5waHA/bGlzdF9pZD01MTciPlBlbMOtY3VsYXMgcXVlIG1lIGd1c3Rhcm9uIG3DoXMgbGEgMsKqIHZleiBxdWUgbGFzIHZpPC9hPiA8ZW0+KDM2KTwvZW0+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+PHN0cm9uZz4zNDwvc3Ryb25nPiA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2xpc3R0b3Btb3ZpZXMucGhwP2xpc3RfaWQ9MzAwIj5NaXMgZHJhbWFzIGZhdm9yaXRvczwvYT4gPGVtPigyNjcpPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpID48c3Ryb25nPjM4PC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbGlzdHRvcG1vdmllcy5waHA/bGlzdF9pZD02MDAiPlBlbMOtY3VsYXMgY29uIG1lam9yZXMgZmluYWxlczwvYT4gPGVtPigyMDQpPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpID48c3Ryb25nPjQ0PC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbGlzdHRvcG1vdmllcy5waHA/bGlzdF9pZD01MjYiPlBlbMOtY3VsYXMgY29uIHVuYSBpbnRlcnByZXRhY2nDs24gbWFzY3VsaW5hIGlub2x2aWRhYmxlPC9hPiA8ZW0+KDg3KTwvZW0+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+PHN0cm9uZz41MTwvc3Ryb25nPiA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2xpc3R0b3Btb3ZpZXMucGhwP2xpc3RfaWQ9ODAwIj5QZWzDrWN1bGFzIGNvbiBtZWpvciBwb3N0ZXIgb3JpZ2luYWwgZGUgbGEgaGlzdG9yaWEgZGVsIGNpbmUgKE1pcyBwb3N0ZXJzIGZhdm9yaXRvcyk8L2E+IDxlbT4oMjkpPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjxzdHJvbmc+NTI8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9saXN0dG9wbW92aWVzLnBocD9saXN0X2lkPTg5MCI+UGVsw61jdWxhcyBxdWUgbWUgZW5jYW50YW4geSBxdWUgbm8gZ3VzdGFuIGEgdG9kb3M8L2E+IDxlbT4oMTApPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjxzdHJvbmc+NjE8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9saXN0dG9wbW92aWVzLnBocD9saXN0X2lkPTMwMSI+TWlzIGNvbWVkaWFzIHByZWZlcmlkYXM8L2E+IDxlbT4oMjAzKTwvZW0+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBzdHlsZT0iZGlzcGxheTpub25lIj48c3Ryb25nPjYzPC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbGlzdHRvcG1vdmllcy5waHA/bGlzdF9pZD02MjAiPlBlbMOtY3VsYXMgcXVlIG3DoXMgbWUgaGFuIGVtb2Npb25hZG88L2E+IDxlbT4oNjMpPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjxzdHJvbmc+Njk8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9saXN0dG9wbW92aWVzLnBocD9saXN0X2lkPTEwMCI+TWlzIHBlbMOtY3VsYXMgZmF2b3JpdGFzPC9hPiA8ZW0+KDI5MTgpPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjxzdHJvbmc+NzE8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9saXN0dG9wbW92aWVzLnBocD9saXN0X2lkPTcwMCI+UGVsw61jdWxhcyBxdWUgbcOhcyB2ZWNlcyBoZSB2aXN0bzwvYT4gPGVtPigxMDcpPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjxzdHJvbmc+NzE8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9saXN0dG9wbW92aWVzLnBocD9saXN0X2lkPTg4MCI+U2kgbm8gdGUgZ3VzdGFuIGVzdGFzIHBlbMOtY3VsYXMgYSBtw60gbmkgbWUgaGFibGVzPC9hPiA8ZW0+KDIxKTwvZW0+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBzdHlsZT0iZGlzcGxheTpub25lIj48c3Ryb25nPjgxPC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbGlzdHRvcG1vdmllcy5waHA/bGlzdF9pZD0yMDIiPlBlbMOtY3VsYXMgcXVlIHF1aWVybyB0ZW5lci9jb21wcmFyPC9hPiA8ZW0+KDEwNik8L2VtPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PHN0cm9uZz44NTwvc3Ryb25nPiA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2xpc3R0b3Btb3ZpZXMucGhwP2xpc3RfaWQ9NTExIj5NaXMgcGVsw61jdWxhcyAmcXVvdDtwYXJhIHRvZGEgbGEgZmFtaWxpYSZxdW90OyBwcmVmZXJpZGFzPC9hPiA8ZW0+KDIwKTwvZW0+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBzdHlsZT0iZGlzcGxheTpub25lIj48c3Ryb25nPjkwPC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbGlzdHRvcG1vdmllcy5waHA/bGlzdF9pZD0zNjUiPkxhcyBwZWzDrWN1bGFzIG3DoXMgcmFyYXMgcXVlIGhlIHZpc3RvPC9hPiA8ZW0+KDQyKTwvZW0+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hvdy1hbGwiPjxhIGhyZWY9IiMiPk1vc3RyYXIgbGFzIDE5IGxpc3RhczwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2RkPgogICAgPC9kbD4KCiAgICA8ZGl2IGNsYXNzPSJtb3ZpZS1kaXNjbGFpbWVyIiBzdHlsZT0ibWFyZ2luLXRvcDogNjBweDsgIj4KCgoKICAgICAgICA8cD5TaSBhbGd1bmEgc2lub3BzaXMgY3VlbnRhIGRlbWFzaWFkb3MgZGV0YWxsZXMgZGVsIGFyZ3VtZW50byAtbyBwYXJhIGNvcnJlZ2lyIGVycm9yZXMgbyBjb21wbGV0YXIgZGF0b3MgZGUgbGEgZmljaGEgbyBmZWNoYSBkZSBlc3RyZW5vLSBwdWVkZXMgbWFuZGFybm9zIHVuIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvaW1zZW5kbXNnLnBocD90bz05ODU0NjIiPm1lbnNhamU8L2E+LiBTaSBubyBlc3TDoXMgcmVnaXN0cmFkQCBwdWVkZXMgY29udGFjdGFybm9zIHbDrWEgVHdpdHRlciwgRkIgbyBwb3IgZW1haWwgYSBpbmZvIC1hcnJvYmEtIGZpbG1hZmZpbml0eSAtcHVudG8tIGNvbS4NCjxwPkxvcyBkZXJlY2hvcyBkZSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgZGUgbGFzIGNyw610aWNhcyBjb3JyZXNwb25kZW4gYSBsb3MgY29ycmVzcG9uZGllbnRlcyBjcsOtdGljb3MgeS9vIG1lZGlvcyBkZSBjb211bmljYWNpw7NuIGRlIGxvcyBxdWUgaGFuIHNpZG8gZXh0cmHDrWRvcy4gRmlsbWFmZmluaXR5IG5vIHRpZW5lIHJlbGFjacOzbiBhbGd1bmEgY29uIGVsIHByb2R1Y3RvciwgcHJvZHVjdG9yYSBvIGVsIGRpcmVjdG9yIGRlIGxhIHBlbMOtY3VsYS4gRWwgY29weXJpZ2h0IGRlbCBwb3N0ZXIsIGNhcsOhdHVsYSwgZm90b2dyYW1hcywgZm90b2dyYWbDrWFzIGUgaW3DoWdlbmVzIGRlIGNhZGEgRFZELCBWT0QsIEJsdS1yYXksIHRyw6FpbGVyIHkgYmFuZGEgc29ub3JhIG9yaWdpbmFsIChCU08pIHBlcnRlbmVjZW4gYSBsYXMgY29ycmVzcG9uZGllbnRlcyBwcm9kdWN0b3JhcyB5L28gZGlzdHJpYnVpZG9yYXMuPC9wPgogICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+CjwvZGl2PgogICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctdG9wOiA1MHB4OyBjbGVhcjogYm90aDsiPjxkaXY+DQogICAgICAgICAgICAgIDwvdGQ+DQogICAgPC90cj4NCjwvdGFibGU+DQo8L2Rpdj4NCjxkaXYgaWQ9ImJwYW5lbCI+DQo8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzogMTBweCI+DQogICAgICA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2ZhcS5waHAiPlByZWd1bnRhcyBtw6FzIGZyZWN1ZW50ZXM8L2E+DQogICAgfCA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3ByaXZhdGUucGhwIiA+UG9sw610aWNhIGRlIHByaXZhY2lkYWQgLyBjb25kaWNpb25lcyBkZSB1c288L2E+DQogICAgfCA8YSBvbmNsaWNrPSJ3aW5kb3cuX190Y2ZhcGkoJ2Rpc3BsYXlDb25zZW50VWknLCAyLCBmdW5jdGlvbigpIHt9ICk7IiBpZD0icHJpdmFjeS1jb25maWctMiIgaHJlZj0iIyI+Q29uZmlndXJhY2nDs24gZGUgcHJpdmFjaWRhZDwvYT4NCiAgICB8IDxhIGhyZWY9Imh0dHBzOi8vbS5maWxtYWZmaW5pdHkuY29tL2VzL21vdmllLnBocD9pZD01MDQ4ODkiPjxzdHJvbmc+SXIgYSBWZXJzacOzbiBNw5NWSUw8L3N0cm9uZz48L2E+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOiAxMHB4IDJweCI+DQogICAgPHNwYW4gY2xhc3M9InN1YnRleHQiPsKpIDIwMDItMjAyMCBGaWxtYWZmaW5pdHkgLSBNb3ZpZWFmZmluaXR5IHwgRmlsbWFmZmluaXR5IGVzIHVuYSBww6FnaW5hIGRlIHJlY29tZW5kYWNpw7NuIGRlIHBlbMOtY3VsYXMgeSBzZXJpZXMsIHkgZXMgdW4gbWVkaW8gdG90YWxtZW50ZSBpbmRlcGVuZGllbnRlIGN1eWEgcHJpbmNpcGFsIHByaW9yaWRhZCBlcyBsYSBwcml2YWNpZGFkIHkgc2VndXJpZGFkIGRlIGxvcyBkYXRvcyBkZSBzdXMgdXN1YXJpb3MuPGJyPkFsbCBSaWdodHMgUmVzZXJ2ZWQgLSBUb2RvcyBsb3MgZGVyZWNob3MgcmVzZXJ2YWRvczwvc3Bhbj4NCjwvZGl2Pg0KPC9kaXY+DQoNCg0KDQoNCg0KDQoNCgoKCgoKDQo8L2JvZHk+DQo8L2h0bWw+DQo=
58
+ recorded_at: Mon, 12 Oct 2020 21:41:11 GMT
59
+ recorded_with: VCR 6.0.0
@@ -0,0 +1,59 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://www.filmaffinity.com/es/film504889.html
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Mon, 12 Oct 2020 21:41:09 GMT
23
+ Server:
24
+ - Apache
25
+ Expires:
26
+ - Thu, 19 Nov 1981 08:52:00 GMT
27
+ Pragma:
28
+ - no-cache
29
+ Cache-Control:
30
+ - public, max-age=0, must-revalidate
31
+ Set-Cookie:
32
+ - FCD=FfHf8e7JwvH7DnBlJUMtKJXxf_J-MxCGEmJeZV_pjy9lnlGvz32IffnHkmzpV1RxMD-ZtWhZKyrlmL7OwpdfyLQBswCLx33kBkP299XHcYxmMI0P1jbneC0IwNdZ_l9dM_W5P8zuHFlHc2exhMua4C-YFV_gxsow;
33
+ expires=Sun, 09-Jul-2023 21:41:09 GMT; Max-Age=86400000; path=/; domain=.filmaffinity.com;
34
+ secure; HttpOnly
35
+ - FSID=e662cqiae9ceamdmmtio0e5r278prba8lk874cjj7i33kp4h0lsgrf2fejvbspn3; path=/;
36
+ domain=.filmaffinity.com; secure; HttpOnly
37
+ - client-data=%7B%22ism%22%3Afalse%2C%22showm%22%3Afalse%2C%22ts%22%3A1602538869%7D;
38
+ expires=Tue, 27-Oct-2020 21:41:09 GMT; Max-Age=1296000
39
+ - client-data=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0
40
+ X-Frame-Options:
41
+ - SAMEORIGIN
42
+ Upgrade:
43
+ - h2,h2c
44
+ Connection:
45
+ - Upgrade
46
+ Vary:
47
+ - Accept-Encoding
48
+ X-Xss-Protection:
49
+ - 1; mode=block
50
+ Content-Length:
51
+ - '14941'
52
+ Content-Type:
53
+ - text/html; charset=utf-8
54
+ body:
55
+ encoding: ASCII-8BIT
56
+ string: !binary |-
57
+ PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVzIj4KPGhlYWQ+Cjx0aXRsZT5FbCBzaG93IGRlIFRydW1hbiAoVW5hIHZpZGEgZW4gZGlyZWN0bykgICgxOTk4KSAtIEZpbG1BZmZpbml0eTwvdGl0bGU+CjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkVsIHNob3cgZGUgVHJ1bWFuIChVbmEgdmlkYSBlbiBkaXJlY3RvKSBlcyB1bmEgcGVsw61jdWxhIGRpcmlnaWRhIHBvciBQZXRlciBXZWlyIGNvbiBKaW0gQ2FycmV5LCBMYXVyYSBMaW5uZXksIE5vYWggRW1tZXJpY2gsIEVkIEhhcnJpcywgTmF0YXNjaGEgTWNFbGhvbmUgLi4uLiBBw7FvOiAxOTk4LiBUw610dWxvIG9yaWdpbmFsOiBUaGUgVHJ1bWFuIFNob3cuIFNpbm9wc2lzOiBUcnVtYW4gQnVyYmFuayBlcyB1biBob21icmUgY29ycmllbnRlIHkgYWxnbyBpbmdlbnVvIHF1ZSBoYSB2aXZpZG8gdG9kYSBzdSB2aWRhIGVuIHVubyBkZSBlc29zIHB1ZWJsb3MgZG9uZGUgbnVuY2EgcGFzYSBuYWRhLiBTaW4gZW1iYXJnbywgZGUgcmVwZW50ZSwgdW5vcyBleHRyYcOxb3Mgc3VjZXNvcyBsZSBoYWNlbiBzb3NwZWNoYXIgcXVlIGFsZ28gLi4uIj4KPG1ldGEgcHJvcGVydHk9Im9nOnNpdGVfbmFtZSIgY29udGVudD0iRmlsbUFmZmluaXR5Ij4KPG1ldGEgbmFtZT0idHdpdHRlcjpjYXJkIiBjb250ZW50PSJzdW1tYXJ5IiA+CjxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJ2aWRlby5tb3ZpZSIgPgo8bWV0YSBuYW1lPSJ0d2l0dGVyOnNpdGUiIHZhbHVlPSJARmlsbWFmZmluaXR5IiA+CjxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvZmlsbTUwNDg4OS5odG1sIiAvPgo8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IkVsIHNob3cgZGUgVHJ1bWFuIChVbmEgdmlkYSBlbiBkaXJlY3RvKSAgKDE5OTgpIiAvPgo8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkRpcmVjdG9yOiBQZXRlciBXZWlyIHwgUmVwYXJ0bzogSmltIENhcnJleSwgTGF1cmEgTGlubmV5LCBOb2FoIEVtbWVyaWNoLCBFZCBIYXJyaXMgLi4uIHwgR8OpbmVybzogRHJhbWEgfCBTaW5vcHNpczogVHJ1bWFuIEJ1cmJhbmsgZXMgdW4gaG9tYnJlIGNvcnJpZW50ZSB5IGFsZ28gaW5nZW51byBxdWUgaGEgdml2aWRvIHRvZGEgc3UgdmlkYSBlbiB1bm8gZGUgZXNvcyBwdWVibG9zIGRvbmRlIG51bmNhIHBhc2EgbmFkYS4gU2luIGVtYmFyZ28sIGRlIHJlcGVudGUsIHVub3MgZXh0cmHDsW9zIHN1Y2Vzb3MgbGUgaGFjZW4gc29zcGVjaGFyIHF1ZSBhbGdvIC4uLiIgLz4KPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL3BpY3MuZmlsbWFmZmluaXR5LmNvbS90aGVfdHJ1bWFuX3Nob3ctMTMwMDkxNTU3LW1tZWQuanBnIiAvPgo8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cDovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2ZpbG01MDQ4ODkuaHRtbCI+CjxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBtZWRpYT0ib25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KSIgaHJlZj0iaHR0cHM6Ly9tLmZpbG1hZmZpbml0eS5jb20vZXMvbW92aWUucGhwP2lkPTUwNDg4OSI+CjxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBocmVmPSIvZmF2aWNvbi5wbmciPgo8bGluayBocmVmPSIvc3R5bGUvZmlsbS4xNTg5NDcwNDAzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIGhyZWY9Ii9zdHlsZS9zaGFyZS4xNTM5MDk2MjkxLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIGhyZWY9Ii9zdHlsZS9qcXVlcnkvZmEtdWktdGhlbWUvanF1ZXJ5LXVpLm1pbi4xNTM5MDk2MzA2LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIGhyZWY9Ii9zdHlsZS9qcXVlcnkvZmEtdWktdGhlbWUvanF1ZXJ5LXVpLnN0cnVjdHVyZS5taW4uMTUzOTA5NjMwNi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8bGluayBocmVmPSIvc3R5bGUvanF1ZXJ5L2ZhLXVpLXRoZW1lL2pxdWVyeS11aS50aGVtZS5taW4uMTUzOTA5NjMwNi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8bGluayBocmVmPSIvc3R5bGUvanF1ZXJ5L2NvbG9yYm94L2NvbG9yYm94LTEuNi4xNTM5MDk2MzA1LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+CjxsaW5rIGhyZWY9Ii9zdHlsZS9qcXVlcnkvY29sb3Jib3gvY29sb3Jib3gtZmEuMTUzOTA5NjMwNS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8bGluayBocmVmPSIvc3R5bGUvanF1ZXJ5L2pxdm1hcC9qcXZtYXAubWluLjE1NjE0NTA4NjEuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgaHJlZj0iL3N0eWxlL21haW4zLjE2MDE2NDExNDEuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgaHJlZj0iL3N0eWxlL21vdmllY2FyZHMzLjE1ODU3MzQzNDMuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgaHJlZj0iL3N0eWxlL2ZhLWF3ZXNvbWUuMTUzOTA5NjI5MS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8bGluayBocmVmPSIvc3R5bGUvZm9udC1hd2Vzb21lLjUuMTEuMS5taW4uMTU3OTE3NDY5MS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8bGluayBocmVmPSIvc3R5bGUvZmEtaWNvbnMuMTU4MjI4ODQ3Ny5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8bGluayBocmVmPSIvc3R5bGUvbWFnaWMtY2hlY2subWluLjE1MzkwOTYyOTEuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KPGxpbmsgaHJlZj0iL3N0eWxlL3JhdGluZzIuMTUzOTA5NjI5Mi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvanMvbG9jYWxfZXMuMTUzOTA5NjI5My5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9qcXVlcnkvanF1ZXJ5LTMuMS4wLm1pbi4xNTM5MDk2MzAyLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2pzL2pxdWVyeS9qcXVlcnktbWlncmF0ZS0xLjQuMS5taW4uMTUzOTA5NjMwMi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9qcXVlcnkvdWkvanF1ZXJ5LXVpLTEuMTIuMS5taW4uMTUzOTA5NjMwOC5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9qcXVlcnkvcGx1Z2luL2pxdWVyeS5jb2xvcmJveC0xLjYuMTUzOTA5NjMwOC5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9mb3RvLjE1NTI2NTg1NjMuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvanMvY3JjMzIuMTUzOTA5NjI5My5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy90cmFuc2xhdGUtY29udGV4dC4xNTM5MDk2MjkzLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2pzL2xvY2FsZS9mcmllbmRzLXRleHRzLWVzX0VTLjE1NTgwMTI1MjEuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvanMvanF1ZXJ5L3BsdWdpbi9qcXVlcnkuY29va2llLjE1MzkwOTYzMDguanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvanMvanF1ZXJ5L3BsdWdpbi9yYXRpbmctYmFycy4xNTM5MDk2MzA5LmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2pzL2pxdWVyeS9wbHVnaW4vY2hhcnRqcy9jaGFydC5taW4uMTU2ODM2MzgyNS5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9qcXVlcnkvcGx1Z2luL2pxdm1hcC9qcXVlcnkudm1hcC5taW4uMTU2MTQ1MDgzNC5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9qcXVlcnkvcGx1Z2luL2pxdm1hcC9qcXVlcnkudm1hcC53b3JsZC4xNTYxNDUwODM2LmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2pzL2xvY2FsZS90ZXh0cy1lc19FUy4xNjAxOTA3MDcxLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2pzL2Fkcy4xNTM5MDk2MjkzLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2pzL21haW4uMTYwMDcwMjA0Ny5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9wYWdldG9wLjE1ODEzNDQ4MzQuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvanMvei1pbmRleC1maXguMTUzOTA5NjI5Mi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9qcXVlcnkvcGx1Z2luL2xhenlzaXplcy9sYXp5c2l6ZXMubWluLjE2MDIwNjgzNzUuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvanMvZmEtbGlzdHMtdGlwLjE1MzkwOTYyOTIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvanMvZmFfcmF0aW5nMi4xNTM5MDk2MjkzLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2pzL2hpZGUtcXQuMTU4NDQ1NjQxMi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9qcy9vbGQtYXV0b2NvbXBsZXRlLjE1ODU2NjczMDcuanMiPjwvc2NyaXB0PgoKPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvZmlsbTUwNDg4OS5odG1sIiBocmVmbGFuZz0iZXMiPgo8bGluayByZWw9ImFsdGVybmF0ZSIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lbi9maWxtNTA0ODg5Lmh0bWwiIGhyZWZsYW5nPSJlbiI+CjxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL214L2ZpbG01MDQ4ODkuaHRtbCIgaHJlZmxhbmc9ImVzLU1YIj4KPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vYXIvZmlsbTUwNDg4OS5odG1sIiBocmVmbGFuZz0iZXMtQVIiPgo8bGluayByZWw9ImFsdGVybmF0ZSIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9jbC9maWxtNTA0ODg5Lmh0bWwiIGhyZWZsYW5nPSJlcy1DTCI+CjxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2NvL2ZpbG01MDQ4ODkuaHRtbCIgaHJlZmxhbmc9ImVzLUNPIj4KPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vdXkvZmlsbTUwNDg4OS5odG1sIiBocmVmbGFuZz0iZXMtVVkiPgo8bGluayByZWw9ImFsdGVybmF0ZSIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9wZS9maWxtNTA0ODg5Lmh0bWwiIGhyZWZsYW5nPSJlcy1QRSI+CjxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VjL2ZpbG01MDQ4ODkuaHRtbCIgaHJlZmxhbmc9ImVzLUVDIj4KPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vdmUvZmlsbTUwNDg4OS5odG1sIiBocmVmbGFuZz0iZXMtVkUiPgo8bGluayByZWw9ImFsdGVybmF0ZSIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9jci9maWxtNTA0ODg5Lmh0bWwiIGhyZWZsYW5nPSJlcy1DUiI+CjxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2JvL2ZpbG01MDQ4ODkuaHRtbCIgaHJlZmxhbmc9ImVzLUJPIj4KPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vdXMvZmlsbTUwNDg4OS5odG1sIiBocmVmbGFuZz0iZW4tVVMiPgo8bGluayByZWw9ImFsdGVybmF0ZSIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS91ay9maWxtNTA0ODg5Lmh0bWwiIGhyZWZsYW5nPSJlbi1HQiI+CjxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2llL2ZpbG01MDQ4ODkuaHRtbCIgaHJlZmxhbmc9ImVuLUlFIj4KPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vYXUvZmlsbTUwNDg4OS5odG1sIiBocmVmbGFuZz0iZW4tQVUiPgo8bGluayByZWw9ImFsdGVybmF0ZSIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9jYS9maWxtNTA0ODg5Lmh0bWwiIGhyZWZsYW5nPSJlbi1DQSI+CgoKPHNjcmlwdD4KICAgICQoZnVuY3Rpb24oKXsKICAgICAgICBzZXNzUGluZygiMDE1Zjg0Y2Q3NThmMmE2NzFmZDg3YzRiMDJkMjUxODM1OTQ4NGI1NmE5IiwgMjQwMCk7CiAgICAgICAgdmFyIHRjVGV4dHMgPSBUcmFuc2xhdGVDb250ZXh0LmdldEluc3RhbmNlKGNvbW1vblRleHRzSnMpOwogICAgfSk7Cjwvc2NyaXB0Pgo8c2NyaXB0IGFzeW5jPSdhc3luYycgc3JjPSdodHRwczovL3NjLWRldmVsLnMzLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tL3NjLXRhZ21hbmFnZXIvc2NfZ3B0X2xzdGFwYy5qcyc+PC9zY3JpcHQ+DQoNCiA8c2NyaXB0Pg0KDQogICAgICAgIHZhciBnb29nbGV0YWcgPSBnb29nbGV0YWcgfHwge307DQoNCiAgICAgICAgZ29vZ2xldGFnLmNtZCA9IGdvb2dsZXRhZy5jbWQgfHwgW107DQoNCiA8L3NjcmlwdD4NCg0KIDxzY3JpcHQgc3JjPSJodHRwczovL3MzLmV1LWNlbnRyYWwtMS5hbWF6b25hd3MuY29tL3NjLWRldmVsL1NraW5zL1NNQ1NlcnZpY2UuanMiPjwvc2NyaXB0Pg0KDQogPHNjcmlwdCBzcmM9Imh0dHBzOi8vczMuZXUtY2VudHJhbC0xLmFtYXpvbmF3cy5jb20vc2MtZGV2ZWwvc2MtdGFnbWFuYWdlci9maWxtYWZmaW5pdHkuanMiPjwvc2NyaXB0Pg0KDQogPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLnNtYXJ0Y2xpcC1zZXJ2aWNlcy5jb20vdjEvU3RvcmFnZS1hNDgyMzIzL3NtYXJ0Y2xpcC1zZXJ2aWNlcy9IZWFkZXJCaWRkaW5nL2pzL1NtYXJ0Y2xpcENvbmZpZy5qcyIgYXN5bmM9ImFzeW5jIj48L3NjcmlwdD4NCjwhLS0gUXVhbnRjYXN0IENob2ljZS4gQ29uc2VudCBNYW5hZ2VyIFRhZyB2Mi4wIChmb3IgVENGIDIuMCkgLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBhc3luYz10cnVlPgooZnVuY3Rpb24oKSB7CiAgdmFyIGhvc3QgPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7CiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICB2YXIgZmlyc3RTY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07CiAgdmFyIHVybCA9ICdodHRwczovL3F1YW50Y2FzdC5tZ3IuY29uc2Vuc3Uub3JnJwogICAgLmNvbmNhdCgnL2Nob2ljZS8nLCAnTEJCckYtYmRBdGt1RicsICcvJywgaG9zdCwgJy9jaG9pY2UuanMnKQogIHZhciB1c3BUcmllcyA9IDA7CiAgdmFyIHVzcFRyaWVzTGltaXQgPSAzOwogIGVsZW1lbnQuYXN5bmMgPSB0cnVlOwogIGVsZW1lbnQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogIGVsZW1lbnQuc3JjID0gdXJsOwoKICBmaXJzdFNjcmlwdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtZW50LCBmaXJzdFNjcmlwdCk7CgogIGZ1bmN0aW9uIG1ha2VTdHViKCkgewogICAgdmFyIFRDRl9MT0NBVE9SX05BTUUgPSAnX190Y2ZhcGlMb2NhdG9yJzsKICAgIHZhciBxdWV1ZSA9IFtdOwogICAgdmFyIHdpbiA9IHdpbmRvdzsKICAgIHZhciBjbXBGcmFtZTsKCiAgICBmdW5jdGlvbiBhZGRGcmFtZSgpIHsKICAgICAgdmFyIGRvYyA9IHdpbi5kb2N1bWVudDsKICAgICAgdmFyIG90aGVyQ01QID0gISEod2luLmZyYW1lc1tUQ0ZfTE9DQVRPUl9OQU1FXSk7CgogICAgICBpZiAoIW90aGVyQ01QKSB7CiAgICAgICAgaWYgKGRvYy5ib2R5KSB7CiAgICAgICAgICB2YXIgaWZyYW1lID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwoKICAgICAgICAgIGlmcmFtZS5zdHlsZS5jc3NUZXh0ID0gJ2Rpc3BsYXk6bm9uZSc7CiAgICAgICAgICBpZnJhbWUubmFtZSA9IFRDRl9MT0NBVE9SX05BTUU7CiAgICAgICAgICBkb2MuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBzZXRUaW1lb3V0KGFkZEZyYW1lLCA1KTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuICFvdGhlckNNUDsKICAgIH0KCiAgICBmdW5jdGlvbiB0Y2ZBUElIYW5kbGVyKCkgewogICAgICB2YXIgZ2RwckFwcGxpZXM7CiAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzOwoKICAgICAgaWYgKCFhcmdzLmxlbmd0aCkgewogICAgICAgIHJldHVybiBxdWV1ZTsKICAgICAgfSBlbHNlIGlmIChhcmdzWzBdID09PSAnc2V0R2RwckFwcGxpZXMnKSB7CiAgICAgICAgaWYgKAogICAgICAgICAgYXJncy5sZW5ndGggPiAzICYmCiAgICAgICAgICBhcmdzWzJdID09PSAyICYmCiAgICAgICAgICB0eXBlb2YgYXJnc1szXSA9PT0gJ2Jvb2xlYW4nCiAgICAgICAgKSB7CiAgICAgICAgICBnZHByQXBwbGllcyA9IGFyZ3NbM107CiAgICAgICAgICBpZiAodHlwZW9mIGFyZ3NbMl0gPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgYXJnc1syXSgnc2V0JywgdHJ1ZSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGFyZ3NbMF0gPT09ICdwaW5nJykgewogICAgICAgIHZhciByZXRyID0gewogICAgICAgICAgZ2RwckFwcGxpZXM6IGdkcHJBcHBsaWVzLAogICAgICAgICAgY21wTG9hZGVkOiBmYWxzZSwKICAgICAgICAgIGNtcFN0YXR1czogJ3N0dWInCiAgICAgICAgfTsKCiAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzJdID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICBhcmdzWzJdKHJldHIpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBxdWV1ZS5wdXNoKGFyZ3MpOwogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gcG9zdE1lc3NhZ2VFdmVudEhhbmRsZXIoZXZlbnQpIHsKICAgICAgdmFyIG1zZ0lzU3RyaW5nID0gdHlwZW9mIGV2ZW50LmRhdGEgPT09ICdzdHJpbmcnOwogICAgICB2YXIganNvbiA9IHt9OwoKICAgICAgdHJ5IHsKICAgICAgICBpZiAobXNnSXNTdHJpbmcpIHsKICAgICAgICAgIGpzb24gPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBqc29uID0gZXZlbnQuZGF0YTsKICAgICAgICB9CiAgICAgIH0gY2F0Y2ggKGlnbm9yZSkge30KCiAgICAgIHZhciBwYXlsb2FkID0ganNvbi5fX3RjZmFwaUNhbGw7CgogICAgICBpZiAocGF5bG9hZCkgewogICAgICAgIHdpbmRvdy5fX3RjZmFwaSgKICAgICAgICAgIHBheWxvYWQuY29tbWFuZCwKICAgICAgICAgIHBheWxvYWQudmVyc2lvbiwKICAgICAgICAgIGZ1bmN0aW9uKHJldFZhbHVlLCBzdWNjZXNzKSB7CiAgICAgICAgICAgIHZhciByZXR1cm5Nc2cgPSB7CiAgICAgICAgICAgICAgX190Y2ZhcGlSZXR1cm46IHsKICAgICAgICAgICAgICAgIHJldHVyblZhbHVlOiByZXRWYWx1ZSwKICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHN1Y2Nlc3MsCiAgICAgICAgICAgICAgICBjYWxsSWQ6IHBheWxvYWQuY2FsbElkCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAobXNnSXNTdHJpbmcpIHsKICAgICAgICAgICAgICByZXR1cm5Nc2cgPSBKU09OLnN0cmluZ2lmeShyZXR1cm5Nc2cpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZShyZXR1cm5Nc2csICcqJyk7CiAgICAgICAgICB9LAogICAgICAgICAgcGF5bG9hZC5wYXJhbWV0ZXIKICAgICAgICApOwogICAgICB9CiAgICB9CgogICAgd2hpbGUgKHdpbikgewogICAgICB0cnkgewogICAgICAgIGlmICh3aW4uZnJhbWVzW1RDRl9MT0NBVE9SX05BTUVdKSB7CiAgICAgICAgICBjbXBGcmFtZSA9IHdpbjsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfSBjYXRjaCAoaWdub3JlKSB7fQoKICAgICAgaWYgKHdpbiA9PT0gd2luZG93LnRvcCkgewogICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIHdpbiA9IHdpbi5wYXJlbnQ7CiAgICB9CiAgICBpZiAoIWNtcEZyYW1lKSB7CiAgICAgIGFkZEZyYW1lKCk7CiAgICAgIHdpbi5fX3RjZmFwaSA9IHRjZkFQSUhhbmRsZXI7CiAgICAgIHdpbi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgcG9zdE1lc3NhZ2VFdmVudEhhbmRsZXIsIGZhbHNlKTsKICAgIH0KICB9OwoKICBtYWtlU3R1YigpOwoKICB2YXIgdXNwU3R1YkZ1bmN0aW9uID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgYXJnID0gYXJndW1lbnRzOwogICAgaWYgKHR5cGVvZiB3aW5kb3cuX191c3BhcGkgIT09IHVzcFN0dWJGdW5jdGlvbikgewogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgIGlmICh0eXBlb2Ygd2luZG93Ll9fdXNwYXBpICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgd2luZG93Ll9fdXNwYXBpLmFwcGx5KHdpbmRvdy5fX3VzcGFwaSwgYXJnKTsKICAgICAgICB9CiAgICAgIH0sIDUwMCk7CiAgICB9CiAgfTsKCiAgdmFyIGNoZWNrSWZVc3BJc1JlYWR5ID0gZnVuY3Rpb24oKSB7CiAgICB1c3BUcmllcysrOwogICAgaWYgKHdpbmRvdy5fX3VzcGFwaSA9PT0gdXNwU3R1YkZ1bmN0aW9uICYmIHVzcFRyaWVzIDwgdXNwVHJpZXNMaW1pdCkgewogICAgICBjb25zb2xlLndhcm4oJ1VTUCBpcyBub3QgYWNjZXNzaWJsZScpOwogICAgfSBlbHNlIHsKICAgICAgY2xlYXJJbnRlcnZhbCh1c3BJbnRlcnZhbCk7CiAgICB9CiAgfTsKCiAgaWYgKHR5cGVvZiB3aW5kb3cuX191c3BhcGkgPT09ICd1bmRlZmluZWQnKSB7CiAgICB3aW5kb3cuX191c3BhcGkgPSB1c3BTdHViRnVuY3Rpb247CiAgICB2YXIgdXNwSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChjaGVja0lmVXNwSXNSZWFkeSwgNjAwMCk7CiAgfQp9KSgpOwo8L3NjcmlwdD4KPCEtLSBFbmQgUXVhbnRjYXN0IENob2ljZS4gQ29uc2VudCBNYW5hZ2VyIFRhZyB2Mi4wIChmb3IgVENGIDIuMCkgLS0+CjxzY3JpcHQ+CiAgdmFyIF9jb21zY29yZSA9IF9jb21zY29yZSB8fCBbXTsKICBfY29tc2NvcmUucHVzaCh7IGMxOiAiMiIsIGMyOiAiMTMxODExMjEiIH0pOwogIChmdW5jdGlvbigpIHsKICAgIHZhciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdOyBzLmFzeW5jID0gdHJ1ZTsKICAgIHMuc3JjID0gKGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sID09ICJodHRwczoiID8gImh0dHBzOi8vc2IiIDogImh0dHA6Ly9iIikgKyAiLnNjb3JlY2FyZHJlc2VhcmNoLmNvbS9iZWFjb24uanMiOwogICAgZWwucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocywgZWwpOwogIH0pKCk7Cjwvc2NyaXB0Pgo8bm9zY3JpcHQ+CiAgPGltZyBzcmM9Imh0dHA6Ly9iLnNjb3JlY2FyZHJlc2VhcmNoLmNvbS9wP2MxPTImYzI9MTMxODExMjEmY3Y9Mi4wJmNqPTEiIC8+Cjwvbm9zY3JpcHQ+CjxzY3JpcHQ+JChmdW5jdGlvbigpe3NlbmRwdigiZDJmMzMwOWU1ZDNkY2E4M2MwNmU2ZWI3NmI0NzM5ZDMiKTt9KTs8L3NjcmlwdD4NCjwvaGVhZD4KPGJvZHk+CiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgIChmdW5jdGlvbihpLHMsbyxnLHIsYSxtKXtpWydHb29nbGVBbmFseXRpY3NPYmplY3QnXT1yO2lbcl09aVtyXXx8ZnVuY3Rpb24oKXsKICAgICAgICAgIChpW3JdLnE9aVtyXS5xfHxbXSkucHVzaChhcmd1bWVudHMpfSxpW3JdLmw9MSpuZXcgRGF0ZSgpO2E9cy5jcmVhdGVFbGVtZW50KG8pLAogICAgICAgICAgbT1zLmdldEVsZW1lbnRzQnlUYWdOYW1lKG8pWzBdO2EuYXN5bmM9MTthLnNyYz1nO20ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxtKQogICAgICAgICAgfSkod2luZG93LGRvY3VtZW50LCdzY3JpcHQnLCcvL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9hbmFseXRpY3MuanMnLCdnYScpOwogICAgICAgICAgZ2EoJ2NyZWF0ZScsICdVQS03NDE1NTUwNC0xJywgJ2F1dG8nKTsKICAgICAgICAgIGdhKCdzZW5kJywgJ3BhZ2V2aWV3Jyk7CiAgICAgICAgPC9zY3JpcHQ+CjxkaXYgaWQ9InBhZ2UtaGVhZGVyIj4KICAgIDxkaXYgaWQ9ImhlYWRlci10b3AiID4KICAgICAgICA8ZGl2IGNsYXNzPSJjcGFuZWwgdG9wLXdyYXBwZXIiPgogICAgICAgICAgICA8ZGl2IGlkPSJsb2dvLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL21haW4uaHRtbCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBhbHQ9ImxvZ28iIHNyYz0iL2ltYWdlcy9sb2dvNC5wbmciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28tc2l0ZWxvYyI+RXNwYcOxYTwvZGl2PgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2Rpdj48IS0tIGxvZ28tY29udGFpbmVyIC0tPgoKICAgICAgICAgICAgPGRpdiBpZD0idG9wc2VhcmNoIj4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9zZWFyY2gucGhwIiBtZXRob2Q9ImdldCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9InRvcC1zZWFyY2gtaW5wdXQiIHR5cGU9InRleHQiIG5hbWU9InN0ZXh0IiBzaXplPSIyMCIgdmFsdWU9IiIgdGFiaW5kZXg9IjEiPgogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLXRpbWVzIGNsZWFyLXNlYXJjaCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJidXR0b24tc2VhcmNoIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtc2VhcmNoIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIGlkPSJidXR0b24tc2VhcmNoIiB2YWx1ZT0iJm5ic3A7Ij4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkdnNlYXJjaCI+PGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9hZHZzZWFyY2gucGhwIj5Cw7pzcXVlZGEgYXZhbnphZGEgPGkgY2xhc3M9ImZhcyBmYS1hbmdsZS1kb3VibGUtcmlnaHQiPjwvaT48L2E+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PjwhLS0gdG9wc2VhcmNoIC0tPgogICAgICAgICAgICA8ZGl2IGlkPSJ1c2VyLWxvZ2luLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJsb2dpbi1yZWdpc3RlciI+CiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InNpZ24taW4iIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbG9naW4ucGhwIj48c3Ryb25nPkluaWNpYXIgc2VzacOzbjwvc3Ryb25nPjwvYT4gLyA8YSBjbGFzcz0icmVnaXN0ZXIiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvcmVnaXN0ZXIucGhwIj5SZWdpc3RyYXJzZTwvYT4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InVzZXItbWVudS13ciI+Cjx1bD4KICAgIDxsaT4KICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3VzZXJyYXRpbmdzLnBocD91c2VyX2lkPSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpYy13Ij48aSBjbGFzcz0iZmEgZmEtcmF0aW5ncy1mYSI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgIE1pcyBWb3RhY2lvbmVzICAgICAgICA8L2E+CiAgICA8L2xpPgogICAgPGxpPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbXlyZXZpZXdzLnBocCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpYy13Ij48aSBjbGFzcz0iZmEgZmEtcmV2aWV3cy1mYSI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgQ3LDrXRpY2FzICAgICAgICA8L2E+CiAgICA8L2xpPgogICAgPGxpPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbXlsaXN0cy5waHAiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWMtdyI+PGkgY2xhc3M9ImZhIGZhLWxpc3QiPjwvaT48L3NwYW4+CiAgICAgICAgICAgIExpc3RhcyA8c3BhbiBjbGFzcz0ibmJyLXciPk5ldzwvc3Bhbj4KICAgICAgICA8L2E+CiAgICA8L2xpPgogICAgPGxpPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbXlmcmllbmRzLnBocCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpYy13Ij48aSBjbGFzcz0iZmEgZmEgZmEtZnJpZW5kcy1mYSI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgQW1pZ29zIC8gR3J1cG9zICAgICAgICA8L2E+CiAgICA8L2xpPgogICAgPGxpPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvc291bG1hdGVzLnBocCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpYy13Ij48aSBjbGFzcz0iZmEgZmEtc291bG1hdGVzLWZhIj48L2k+PC9zcGFuPgogICAgICAgICAgICBBbG1hcyBnZW1lbGFzICAgICAgICA8L2E+CiAgICA8L2xpPgogICAgPGxpPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvc21zcmVjLnBocCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpYy13Ij48aSBjbGFzcz0iZmEgZmEtaGVhcnQiPjwvaT48L3NwYW4+CiAgICAgICAgICAgICAgICBSZWNvbWVuZGFjaW9uZXMgICAgICAgIDwvYT4KICAgIDwvbGk+CiAgICA8bGkgY2xhc3M9InVzZXItcHJvZi1saW5rIj4KICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL215ZGF0YS5waHAiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWMtdyI+PGkgY2xhc3M9ImZhIGZhLWFkZHJlc3MtY2FyZC1vIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgRGF0b3MgcGVyc29uYWxlcyAgICAgICAgPC9hPgogICAgPC9saT4KICAgICAgICA8bGk+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvdXNlci1mYXYtdGhlYXRlcnMucGhwIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpYy13Ij48aSBjbGFzcz0iZmEgZmEtdGlja2V0Ij48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgQ2luZXMgZmF2b3JpdG9zICAgICAgICAgICAgPC9hPgogICAgICAgIDwvbGk+CiAgICAgICAgPGxpPgogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3RvdXJzLnBocCI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWMtdyI+PGkgY2xhc3M9ImZhIGZhLXJhdGluZ3MtZmEiPjwvaT48L3NwYW4+CiAgICAgICAgICAgICAgICBWb3RhciBsb3MgdG91cnMgICAgICAgICAgICA8L2E+CiAgICAgICAgPC9saT4KICAgICAgICA8bGkgY2xhc3M9ImxnLW91dC1saSI+CiAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJzaWduLW91dCI+CiAgICAgICAgICAgICAgICBDZXJyYXIgc2VzacOzbiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L2xpPgo8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PjwhLS0gdXNlci1sb2dpbiAtY29udGFpbmVyIC0tPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJoZWFkZXItYm90dG9tIiAgPgogICAgICAgIDxkaXYgY2xhc3M9ImNwYW5lbCBuZXdzLXdyYXBwZXIiPgoKPHVsIGlkPSJhd2FyZHNtZW51Ij4KICAgICAgICAgICAgPGxpID48YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2NhdGVnb3J5LnBocD9pZD1sYXRlc3RfcmV2aWV3cyI+w5psdC4gY3LDrXRpY2FzPC9hPjwvbGk+PGxpIGNsYXNzPSJzZXAiPnw8L2xpPgogICAgICAgICAgICA8bGkgPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvY2F0ZWdvcnkucGhwP2lkPVRSQUlMRVJTIj5UcsOhaWxlcnM8L2E+PC9saT48bGkgY2xhc3M9InNlcCI+fDwvbGk+CiAgICAgICAgICAgIDxsaSA+PGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy90b3BnZW4ucGhwP2dlbnJlPSZmcm9teWVhcj0mdG95ZWFyPSZjb3VudHJ5PSZub2RvYyI+VG9wIEZBPC9hPjwvbGk+PGxpIGNsYXNzPSJzZXAiPnw8L2xpPgogICAgICAgICAgICA8bGkgPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvYWxsX2F3YXJkcy5waHAiPlByZW1pb3M8L2E+PC9saT48bGkgY2xhc3M9InNlcCI+fDwvbGk+CiAgICAgICAgICAgIDxsaSA+PGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRlZ29yeS5waHA/aWQ9c2l0Z2VzMjAyMCI+RmVzdGl2YWwgZGUgU2l0Z2VzIDIwMjA8L2E+PC9saT48bGkgY2xhc3M9InNlcCI+fDwvbGk+CjwvdWw+CgoKICAgICAgICAgICAgPGRpdiBpZD0idHJtZW51Ij4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImZiLXRvcC1sb2dvIiBjbGFzcz0ic29jaWFsLWxvZ28iPjxhIHRhcmdldD0iX0JMQU5LIiB0aXRsZT0iU2lndWUgYSBGQSBlbiBGYWNlYm9vayAoMTY1LjAwMCBmb2xsb3dlcnMpIiBocmVmPSJodHRwOi8vd3d3LmZhY2Vib29rLmNvbS9GaWxtYWZmaW5pdHkiPjxpIGNsYXNzPSJmYWIgZmEtZmFjZWJvb2stZiI+PC9pPjwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InR3LXRvcC1sb2dvIiBjbGFzcz0ic29jaWFsLWxvZ28iPjxhIHRhcmdldD0iX0JMQU5LIiB0aXRsZT0iU2lndWUgYSBGQSBlbiBUd2l0dGVyICg0MC4wMDAgZm9sbG93ZXJzKSIgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tL0ZpbG1hZmZpbml0eSI+PGkgY2xhc3M9ImZhYiBmYS10d2l0dGVyIj48L2k+PC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBpZD0iaW4tdG9wLWxvZ28iIGNsYXNzPSJzb2NpYWwtbG9nbyI+PGEgdGFyZ2V0PSJfQkxBTksiIHRpdGxlPSJTaWd1ZSBhIEZBIGVuIEluc3RhZ2FtICg3MS4wMDAgZm9sbG93ZXJzKSIgaHJlZj0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9maWxtYWZmaW5pdHkvIj48aSBjbGFzcz0iZmFiIGZhLWluc3RhZ3JhbSI+PC9pPjwvYT48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9InZlcnNpb24tc2VsZWN0b3IiPgogICAgICAgICAgICA8dWwgY2xhc3M9InZlcnNpb24iPgogICAgICAgICAgICAgICAgPGxpIGRhdGEtdmVyc2lvbj0iZXMiIGNsYXNzPSJmaXhlZCIgdGl0bGU9IkNhbWJpYXIgZGUgdmVyc2nDs24iPkVzcGHDsWEgPGkgY2xhc3M9ImZhcyBmYS1jaGV2cm9uLWRvd24iPjwvaT48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICA8L2Rpdj4KDQogICAgPGRpdiBjbGFzcz0icGFnZS12ZXJzaW9ucy1wb3AgZmEtc2hhZG93Ij4NCiAgICAgICAgPGRpdiBpZD0idm1hcCIgc3R5bGU9IndpZHRoOiA2MzBweDsgaGVpZ2h0OiA0MDBweDsiPjwvZGl2Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJjb3VudHJ5LW5hbWVzIj4NCiAgICAgICAgICAgIDx1bCBjbGFzcz0iY29udGluZW50cyI+DQogICAgICAgICAgICAgICAgICAgIDxsaSBkYXRhLWNvbnRpbmVudD0iYW1lcmljYS1ub3J0aCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPk5vcnRlYW3DqXJpY2EgPGkgY2xhc3M9ImZhcyBmYS1zZWFyY2gtcGx1cyBtYXAtem9vbSI+PC9pPjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJjb3VudHJpZXMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZGF0YS12ZXJzaW9uPSJ1cyIgZGF0YS1jb3VudHJ5LWlkPSJ1cyI+PGltZyBjbGFzcz0ibmZsYWciIHNyYz0iL2ltZ3MvY291bnRyaWVzMi9VUy5wbmciIGFsdD0iRXN0YWRvcyBVbmlkb3MiIHRpdGxlPSJFc3RhZG9zIFVuaWRvcyI+IFVTIDxpIGNsYXNzPSJmYXMgZmEtYXJyb3ctcmlnaHQgZ28tdG8tdmVyc2lvbiI+PC9pPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBkYXRhLXZlcnNpb249ImNhIiBkYXRhLWNvdW50cnktaWQ9ImNhIj48aW1nIGNsYXNzPSJuZmxhZyIgc3JjPSIvaW1ncy9jb3VudHJpZXMyL0NBLnBuZyIgYWx0PSJDYW5hZMOhIiB0aXRsZT0iQ2FuYWTDoSI+IENhbmFkw6EgPGkgY2xhc3M9ImZhcyBmYS1hcnJvdy1yaWdodCBnby10by12ZXJzaW9uIj48L2k+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGRhdGEtdmVyc2lvbj0ibXgiIGRhdGEtY291bnRyeS1pZD0ibXgiPjxpbWcgY2xhc3M9Im5mbGFnIiBzcmM9Ii9pbWdzL2NvdW50cmllczIvTVgucG5nIiBhbHQ9Ik3DqXhpY28iIHRpdGxlPSJNw6l4aWNvIj4gTcOpeGljbyA8aSBjbGFzcz0iZmFzIGZhLWFycm93LXJpZ2h0IGdvLXRvLXZlcnNpb24iPjwvaT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgICAgPGxpIGRhdGEtY29udGluZW50PSJldXJvcGUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj5FdXJvcGEgPGkgY2xhc3M9ImZhcyBmYS1zZWFyY2gtcGx1cyBtYXAtem9vbSI+PC9pPjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJjb3VudHJpZXMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZGF0YS12ZXJzaW9uPSJlcyIgZGF0YS1jb3VudHJ5LWlkPSJlcyI+PGltZyBjbGFzcz0ibmZsYWciIHNyYz0iL2ltZ3MvY291bnRyaWVzMi9FUy5wbmciIGFsdD0iRXNwYcOxYSIgdGl0bGU9IkVzcGHDsWEiPiBFc3Bhw7FhIDxpIGNsYXNzPSJmYXMgZmEtYXJyb3ctcmlnaHQgZ28tdG8tdmVyc2lvbiI+PC9pPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBkYXRhLXZlcnNpb249InVrIiBkYXRhLWNvdW50cnktaWQ9ImdiIj48aW1nIGNsYXNzPSJuZmxhZyIgc3JjPSIvaW1ncy9jb3VudHJpZXMyL0dCLnBuZyIgYWx0PSJSZWlubyBVbmlkbyIgdGl0bGU9IlJlaW5vIFVuaWRvIj4gVUsgPGkgY2xhc3M9ImZhcyBmYS1hcnJvdy1yaWdodCBnby10by12ZXJzaW9uIj48L2k+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGRhdGEtdmVyc2lvbj0iaWUiIGRhdGEtY291bnRyeS1pZD0iaWUiPjxpbWcgY2xhc3M9Im5mbGFnIiBzcmM9Ii9pbWdzL2NvdW50cmllczIvSUUucG5nIiBhbHQ9IklybGFuZGEiIHRpdGxlPSJJcmxhbmRhIj4gSXJsYW5kYSA8aSBjbGFzcz0iZmFzIGZhLWFycm93LXJpZ2h0IGdvLXRvLXZlcnNpb24iPjwvaT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICAgICAgPC9saT4NCiAgICAgICAgICAgICAgICAgICAgPGxpIGRhdGEtY29udGluZW50PSJvY2VhbmlhIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+T2NlYW7DrWEgPGkgY2xhc3M9ImZhcyBmYS1zZWFyY2gtcGx1cyBtYXAtem9vbSI+PC9pPjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJjb3VudHJpZXMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZGF0YS12ZXJzaW9uPSJhdSIgZGF0YS1jb3VudHJ5LWlkPSJhdSI+PGltZyBjbGFzcz0ibmZsYWciIHNyYz0iL2ltZ3MvY291bnRyaWVzMi9BVS5wbmciIGFsdD0iQXVzdHJhbGlhIiB0aXRsZT0iQXVzdHJhbGlhIj4gQXVzdHJhbGlhIDxpIGNsYXNzPSJmYXMgZmEtYXJyb3ctcmlnaHQgZ28tdG8tdmVyc2lvbiI+PC9pPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPg0KICAgICAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgIDx1bCBjbGFzcz0iY29udGluZW50cyI+DQogICAgICAgICAgICAgICAgPGxpIGRhdGEtY29udGluZW50PSJhbWVyaWNhLXNvdXRoIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj5BbcOpcmljYSBkZWwgc3VyIDxpIGNsYXNzPSJmYXMgZmEtc2VhcmNoLXBsdXMgbWFwLXpvb20iPjwvaT4gPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iY291bnRyaWVzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZGF0YS12ZXJzaW9uPSJhciIgZGF0YS1jb3VudHJ5LWlkPSJhciI+PGltZyBjbGFzcz0ibmZsYWciIHNyYz0iL2ltZ3MvY291bnRyaWVzMi9BUi5wbmciIGFsdD0iQXJnZW50aW5hIiB0aXRsZT0iQXJnZW50aW5hIj4gQXJnZW50aW5hIDxpIGNsYXNzPSJmYXMgZmEtYXJyb3ctcmlnaHQgZ28tdG8tdmVyc2lvbiI+PC9pPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGRhdGEtdmVyc2lvbj0iY2wiIGRhdGEtY291bnRyeS1pZD0iY2wiPjxpbWcgY2xhc3M9Im5mbGFnIiBzcmM9Ii9pbWdzL2NvdW50cmllczIvQ0wucG5nIiBhbHQ9IkNoaWxlIiB0aXRsZT0iQ2hpbGUiPiBDaGlsZSA8aSBjbGFzcz0iZmFzIGZhLWFycm93LXJpZ2h0IGdvLXRvLXZlcnNpb24iPjwvaT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBkYXRhLXZlcnNpb249ImNvIiBkYXRhLWNvdW50cnktaWQ9ImNvIj48aW1nIGNsYXNzPSJuZmxhZyIgc3JjPSIvaW1ncy9jb3VudHJpZXMyL0NPLnBuZyIgYWx0PSJDb2xvbWJpYSIgdGl0bGU9IkNvbG9tYmlhIj4gQ29sb21iaWEgPGkgY2xhc3M9ImZhcyBmYS1hcnJvdy1yaWdodCBnby10by12ZXJzaW9uIj48L2k+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZGF0YS12ZXJzaW9uPSJ1eSIgZGF0YS1jb3VudHJ5LWlkPSJ1eSI+PGltZyBjbGFzcz0ibmZsYWciIHNyYz0iL2ltZ3MvY291bnRyaWVzMi9VWS5wbmciIGFsdD0iVXJ1Z3VheSIgdGl0bGU9IlVydWd1YXkiPiBVcnVndWF5IDxpIGNsYXNzPSJmYXMgZmEtYXJyb3ctcmlnaHQgZ28tdG8tdmVyc2lvbiI+PC9pPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGRhdGEtdmVyc2lvbj0icGUiIGRhdGEtY291bnRyeS1pZD0icGUiPjxpbWcgY2xhc3M9Im5mbGFnIiBzcmM9Ii9pbWdzL2NvdW50cmllczIvUEUucG5nIiBhbHQ9IlBlcsO6IiB0aXRsZT0iUGVyw7oiPiBQZXLDuiA8aSBjbGFzcz0iZmFzIGZhLWFycm93LXJpZ2h0IGdvLXRvLXZlcnNpb24iPjwvaT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBkYXRhLXZlcnNpb249ImVjIiBkYXRhLWNvdW50cnktaWQ9ImVjIj48aW1nIGNsYXNzPSJuZmxhZyIgc3JjPSIvaW1ncy9jb3VudHJpZXMyL0VDLnBuZyIgYWx0PSJFY3VhZG9yIiB0aXRsZT0iRWN1YWRvciI+IEVjdWFkb3IgPGkgY2xhc3M9ImZhcyBmYS1hcnJvdy1yaWdodCBnby10by12ZXJzaW9uIj48L2k+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZGF0YS12ZXJzaW9uPSJ2ZSIgZGF0YS1jb3VudHJ5LWlkPSJ2ZSI+PGltZyBjbGFzcz0ibmZsYWciIHNyYz0iL2ltZ3MvY291bnRyaWVzMi9WRS5wbmciIGFsdD0iVmVuZXp1ZWxhIiB0aXRsZT0iVmVuZXp1ZWxhIj4gVmVuZXp1ZWxhIDxpIGNsYXNzPSJmYXMgZmEtYXJyb3ctcmlnaHQgZ28tdG8tdmVyc2lvbiI+PC9pPjwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGRhdGEtdmVyc2lvbj0iY3IiIGRhdGEtY291bnRyeS1pZD0iY3IiPjxpbWcgY2xhc3M9Im5mbGFnIiBzcmM9Ii9pbWdzL2NvdW50cmllczIvQ1IucG5nIiBhbHQ9IkNvc3RhIFJpY2EiIHRpdGxlPSJDb3N0YSBSaWNhIj4gQ29zdGEgUmljYSA8aSBjbGFzcz0iZmFzIGZhLWFycm93LXJpZ2h0IGdvLXRvLXZlcnNpb24iPjwvaT48L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBkYXRhLXZlcnNpb249ImJvIiBkYXRhLWNvdW50cnktaWQ9ImJvIj48aW1nIGNsYXNzPSJuZmxhZyIgc3JjPSIvaW1ncy9jb3VudHJpZXMyL0JPLnBuZyIgYWx0PSJCb2xpdmlhIiB0aXRsZT0iQm9saXZpYSI+IEJvbGl2aWEgPGkgY2xhc3M9ImZhcyBmYS1hcnJvdy1yaWdodCBnby10by12ZXJzaW9uIj48L2k+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICA8L2xpPg0KICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9mYS1pbnRlcm5hdGlvbmFsLnBocCIgY2xhc3M9Im1vcmUtaW5mbyI+PGkgY2xhc3M9ImZhcyBmYS1pbmZvLWNpcmNsZSI+PC9pPiBNw6FzIGluZm9ybWFjacOzbjwvYT4NCiAgICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQoNCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KDQogICAgdmFyIG1hcFZlcnNpb25zID0geyJ1cyI6IiMzQzZFOTkiLCJjYSI6IiMzQzZFOTkiLCJteCI6IiMzQzZFOTkiLCJlcyI6IiMzQzZFOTkiLCJnYiI6IiMzQzZFOTkiLCJpZSI6IiMzQzZFOTkiLCJhdSI6IiMzQzZFOTkiLCJhciI6IiMzQzZFOTkiLCJjbCI6IiMzQzZFOTkiLCJjbyI6IiMzQzZFOTkiLCJ1eSI6IiMzQzZFOTkiLCJwZSI6IiMzQzZFOTkiLCJlYyI6IiMzQzZFOTkiLCJ2ZSI6IiMzQzZFOTkiLCJjciI6IiMzQzZFOTkiLCJibyI6IiMzQzZFOTkifTsNCiAgICANCi8qICAvL3BhcmEgc2FjYXIgdHJhemFzIGRlIGNvb3JkZW5hZGFzLg0KICAgIGpRdWVyeSgnI3ZtYXAnKS5vbignZHJhZycsIGZ1bmN0aW9uKGV2ZW50KQ0KICAgIHsNCiAgICAgICAgY29uc29sZS5sb2coanF2bWFwLnRyYW5zWCk7DQogICAgICAgIGNvbnNvbGUubG9nKGpxdm1hcC50cmFuc1kpOw0KICAgICAgICBjb25zb2xlLmxvZyhqcXZtYXAuc2NhbGUpOw0KICAgICAgICBjb25zb2xlLmxvZyhqcXZtYXAuem9vbUN1clN0ZXApOw0KICAgIH0pOw0KKi8gICAgDQogICAgDQoNCjwvc2NyaXB0Pg0KCiAgICA8L2Rpdj4KPC9kaXY+Cgo8L2Rpdj4KPGRpdiBjbGFzcz0iY3BhbmVsIGFkdmVyLXdyYXBwZXIiPgo8ZGl2IGlkPSJ0b3AtYWQiIGNsYXNzPSJhZHZlci1maXgiPgogICAgPGRpdiBpZD0nc2MtdG9wJyBjbGFzcz0ic2MtdG9wIj4KCiAgICAgICAgICAgPHNjcmlwdD4KCiAgICAgICAgICAgICAgICAgIGdvb2dsZXRhZy5jbWQucHVzaChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGdvb2dsZXRhZy5kaXNwbGF5KCdzYy10b3AnKTsKCiAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgIDwvc2NyaXB0PgoKICAgIDwvZGl2PgoKICAgIDwhLS0gc2Mtb29wLS0+CgogICAgPGRpdiBpZD0nc2Mtb29wJyBjbGFzcz0ic2Mtb29wIj4KCiAgICAgICAgICAgPHNjcmlwdD4KCiAgICAgICAgICAgICAgICAgZ29vZ2xldGFnLmNtZC5wdXNoKGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgZ29vZ2xldGFnLmRpc3BsYXkoJ3NjLW9vcCcpOwoKICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgPC9zY3JpcHQ+CgogICAgPC9kaXY+CjwvZGl2PgoNCg0KDQoNCg0KDQoNCg0KPC9kaXY+Cgo8ZGl2IGlkPSJ0b3AtYW5jaCI+CiAgICA8YSB0aXRsZT0iSXIgYXJyaWJhIiBocmVmPSIjaGVhZGVyLXRvcCI+CiAgICAgICAgPGltZyBhbHQ9ImFycm93IiBzcmM9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vaW1hZ2VzL2Fycm93LXVwMi5wbmciPgogICAgPC9hPgo8L2Rpdj4KPGRpdiBjbGFzcz0iY3BhbmVsIj4KICA8dGFibGUgaWQ9Im1haW4tY29udGVudC10YWJsZSI+CiAgICA8dHI+CiAgICAgIDx0ZCBpZD0ibXQtbGVmdC1jZWxsIj4KICAgICAgICA8ZGl2IGlkPSJsc21lbnUiPgo8ZGl2IGNsYXNzPSJjYXQtY29udGFpbmVyIj4KPGRpdiBjbGFzcz0ibHNtaGVhZGVyIj5Vc3VhcmlvczwvZGl2Pgo8dWw+CjxsaSA+PGEgY2xhc3M9InJhdGUtdG91cnMiICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3RvdXJzLnBocCI+Vm90YXIgbG9zIHRvdXJzPC9hPjwvbGk+PGxpID48YSBjbGFzcz0ic2lnbi1pbiIgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbG9naW4ucGhwIj5JbmljaWFyIHNlc2nDs248L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3JlZ2lzdGVyLnBocCI+UmVnaXN0cmFyc2U8L2E+PC9saT48L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJjYXQtY29udGFpbmVyIj4KPGRpdiBjbGFzcz0ibHNtaGVhZGVyIj5Fc3Bhw7FhPC9kaXY+Cjx1bD4KPGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRfbmV3X3RoX2VzLmh0bWwiPlBlbMOtY3VsYXMgZW4gY2FydGVsZXJhPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jaXR5VGhlYXRlcnMucGhwIj5DaW5lcyBFc3Bhw7FhPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9yZGNhdC5waHA/aWQ9dXBjX3RoX2VzIj5QcsOzeGltb3MgZXN0cmVub3M8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2NhdF9uZXdfc2FfZXMuaHRtbCI+RXN0cmVub3MgQmx1LXJheSB2ZW50YTwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvcmRjYXQucGhwP2lkPXVwY19zYV9lcyI+UHLDs3hpbW9zIEJsdS1yYXkgdmVudGE8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2NhdF9uZXdfcmVfZXMuaHRtbCI+WWEgcGFyYSBhbHF1aWxhcjwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvcmRjYXQucGhwP2lkPXVwY19yZV9lcyI+UHLDs3hpbWFtZW50ZSBhbHF1aWxlcjwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvdm9kX2R2ZC5waHAiPlZpZGVvIG9uIERlbWFuZDwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvY2F0X25ld19uZXRmbGl4Lmh0bWwiPk5ldGZsaXg8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3JkY2F0LnBocD9pZD11cGNfbmV0ZmxpeCI+TmV0ZmxpeCAocHLDs3gpPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRfbmV3X21vdmlzdGFyX2YuaHRtbCI+TW92aXN0YXIgKyA8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2NhdF91cGNfbW92aXN0YXJfZi5odG1sIj5Nb3Zpc3RhciArIChwcsOzeCk8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2NhdF9uZXdfaGJvX2VzLmh0bWwiPkhCTzwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvY2F0X25ld19maWxtaW4uaHRtbCI+RmlsbWluPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRfbmV3X3Jha3V0ZW4uaHRtbCI+UmFrdXRlbiBUVjwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvY2F0X25ld19hbWF6b25fZXMuaHRtbCI+QW1hem9uIFByaW1lPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRfZGlzbmV5cGx1cy5odG1sIj5EaXNuZXkrPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRfYXBwbGVfdHZfcGx1cy5odG1sIj5BcHBsZSBUVis8L2E+PC9saT48L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJjYXQtY29udGFpbmVyIj4KPGRpdiBjbGFzcz0ibHNtaGVhZGVyIj5VU0EgLSBVSyAtIEZSPC9kaXY+Cjx1bD4KPGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRfbmV3X3RoX3VzLmh0bWwiPkVzdHJlbm9zIFVTQTwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvY2F0X25ld190aF91ay5odG1sIj5Fc3RyZW5vcyBSZWlubyBVbmlkbzwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvY2F0X25ld190aF9mci5odG1sIj5Fc3RyZW5vcyBGcmFuY2lhPC9hPjwvbGk+PC91bD48L2Rpdj4KPGRpdiBjbGFzcz0iY2F0LWNvbnRhaW5lciI+CjxkaXYgY2xhc3M9ImxzbWhlYWRlciI+U2VjY2lvbmVzPC9kaXY+Cjx1bD4KPGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9ib3hvZmZpY2UucGhwIj5UYXF1aWxsYTwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvdHJhaWxlcnMucGhwIj5UcmFpbGVyczwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbGF0ZXN0ZXZpZGVvcy5waHAiPsOabHRpbW9zIHRyYWlsZXJzPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9sYXRlc3RyZXZpZXdzLnBocCI+w5psdGltYXMgY3LDrXRpY2FzIHVzZXJzPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRlZ29yeS5waHA/aWQ9bGF0ZXN0X3Jldmlld3MiPlF1w6kgZGljZSBsYSBjcsOtdGljYTwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvdG9waWNzLnBocCI+UGVsw61jdWxhcyBwb3IgdGVtYXM8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL21vdmllLWdyb3Vwcy1hbGwucGhwIj5TYWdhcyAmIEZyYW5xdWljaWFzPC9hPjwvbGk+PC91bD48L2Rpdj4KPGRpdiBjbGFzcz0iY2F0LWNvbnRhaW5lciI+CjxkaXYgY2xhc3M9ImxzbWhlYWRlciI+U2VyaWVzIGRlIFRWPC9kaXY+Cjx1bD4KPGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9jYXRfY3VycmVudF90di5odG1sIj5TZXJpZXMgZGUgYWN0dWFsaWRhZDwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvdG9wZ2VuLnBocD9nZW5yZT1UVl9TRSZjb3VudHJ5PSZmcm9teWVhcj0mdG95ZWFyPSZub2RvYyI+VG9wIHNlcmllczwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvdG91ci5waHA/aWR0b3VyPTI2Ij5Wb3RhIFNlcmllcyBkZSBUVjwvYT48L2xpPjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9ImNhdC1jb250YWluZXIiPgo8ZGl2IGNsYXNzPSJsc21oZWFkZXIiPlRPUHM8L2Rpdj4KPHVsPgo8bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3RvcGdlbi5waHAiPlRvcCBGaWxtYWZmaW5pdHk8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2Jlc3RfdG9wcy5waHAiPkxvIG1lam9yIGRlbCBUT1A8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3RvcGNhdF9uZXdfdGhfZXMuaHRtbCI+VG9wIEVzdHJlbm9zPC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy90b3BjYXRfbmV3X3NhX2VzLmh0bWwiPlRvcCBFc3RyZW5vcyBCbHUtcmF5PC9hPjwvbGk+PGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9saXN0c3JhbmsucGhwIj5SYW5raW5nIGRlIGxpc3RhczwvYT48L2xpPjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9ImNhdC1jb250YWluZXIiPgo8ZGl2IGNsYXNzPSJsc21oZWFkZXIiPlByZW1pb3MgfCBGZXN0aXZhbGVzPC9kaXY+Cjx1bD4KPGxpID48YSAgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9hbGxfYXdhcmRzLnBocCI+UHJlbWlvcyB5IEZlc3RpdmFsZXM8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL29zY2FyX2RhdGEucGhwIj5Ub2RvcyBsb3MgT3NjYXI8L2E+PC9saT48bGkgPjxhICBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2Jlc3RfMjAxOS5waHAiPlJlc3VtZW4gMjAxOTwvYT48L2xpPjwvdWw+PC9kaXY+CjxkaXYgY2xhc3M9ImNhdC1jb250YWluZXIiPgo8ZGl2IGNsYXNzPSJsc21oZWFkZXIiPkluZm9ybWFjacOzbjwvZGl2Pgo8dWw+CjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvc2l0ZS1ndWlkZS5waHAiPkFjZXJjYSBkZSBGQTwvYT48L2xpPjxsaSA+PGEgIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvY29udGFjdF91cy5waHAiPkNvbnRhY3RvPC9hPjwvbGk+PC91bD48L2Rpdj4KPC9kaXY+CiAgICAgIDwvdGQ+CiAgICAgIDx0ZD4KICAgICAgICA8ZGl2IGlkPSJtdC1jb250ZW50LWNlbGwiPgogICAgICAgICAgICA8ZGl2IGlkPSJzaC1wb3MtYWJzIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNoLWhlYWRlciIgdGl0bGU9ImNvbXBhcnRpciI+PGkgY2xhc3M9ImZhcyBmYS1zaGFyZS1hbHQiPjwvaT48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxzdHlsZT4KICAgICNoaWRkZW4tdXJsIHtwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDY1cHg7IHRvcDogMnB4OyBkaXNwbGF5OiBub25lOyBwYWRkaW5nOiAycHggNnB4IDRweCA2cHg7IGJhY2tncm91bmQ6ICNmZGNjMWE7IG1hcmdpbi10b3A6IDVweDsgd2lkdGg6IDQ4NXB4OyBib3JkZXItcmFkaXVzOiA1cHg7IGFuaW1hdGlvbi1kdXJhdGlvbjogLjNzOyB6LWluZGV4OiAxMDA7fQogICAgI2hpZGRlbi11cmwgaW5wdXR7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IG91dGxpbmU6IG5vbmU7IGJvcmRlcjogMXB4IHNvbGlkICNEREREREQ7IGJvcmRlci1yYWRpdXM6IDVweDsgcGFkZGluZzogOHB4IDRweDsgd2lkdGg6IDQzNXB4OyBtYXJnaW4tbGVmdDogNXB4OyBmb250LWZhbWlseTogbW9ub3NwYWNlO30KICAgICNoaWRkZW4tdXJsIC5oaWRlLXVybCB7Y3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDIycHg7IG1hcmdpbjogMCA1cHg7IGNvbG9yOiAjMDAwOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO30KICAgICNjb3B5LWNsaXBib2FyZCB7cG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwcHg7IHRvcDogMzFweDsgcGFkZGluZzogMnB4IDZweDsgYmFja2dyb3VuZDogI2ZkY2MxYTsgbWFyZ2luLXRvcDogNXB4OyBhbmltYXRpb24tZHVyYXRpb246IC4zczsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OyB3aWR0aDogMjAwcHg7IGN1cnNvcjogcG9pbnRlcjsgcGFkZGluZy1sZWZ0OiAxNXB4O30KPC9zdHlsZT4KCjxzY3JpcHQ+CgogICAgZnVuY3Rpb24gaGlkZU9uQ2xpY2soICl7CiAgICAgICAgJChkb2N1bWVudCkuY2xpY2soZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgaWYoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KCcuaGQtc2gtd3JhcHBlcicpLmxlbmd0aCAmJiAhJChldmVudC50YXJnZXQpLmNsb3Nlc3QoJyNoaWRkZW4tdXJsJykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBpZigkKCcuaGQtc2gtd3JhcHBlcicpLmlzKCI6dmlzaWJsZSIpKSB7CiAgICAgICAgICAgICAgICAgICAgLy8kKCcuaGlkZGVuLXNoYXJlLXdyYXBwZXInKS5oaWRlKCk7CiAgICAgICAgICAgICAgICAgICAgJCgnLnNoLWhlYWRlcicpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gICAgICAgIAogICAgICAgIH0pOwogICAgfSAgCiAKICAgICQoZnVuY3Rpb24oKSB7CiAgICAgICAgJCgnLmhkLXNoLXdyYXBwZXInKS5iaW5kKCdhbmltYXRpb25FbmQgb0FuaW1hdGlvbkVuZCBtc0FuaW1hdGlvbkVuZCBtb3pBbmltYXRpb25FbmQgd2Via2l0QW5pbWF0aW9uRW5kJywgZnVuY3Rpb24oZXZlbnQpewogICAgICAgICAgICBpZiggICQoZXZlbnQudGFyZ2V0KS5oYXNDbGFzcygnbmtvb3V0JykgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkKCcuaGQtc2gtd3JhcHBlcicpLmhpZGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgfSk7ICAgICAgICAKCiAgICAgICAgJCgnI3NoLXBvcy1hYnMnKS50b2dnbGUoIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAkKCcuc2gtaGVhZGVyJykuYWRkQ2xhc3MoJ2NsaWNrZWQnKTsKICAgICAgICAgICAgICAgICQoJy5oZC1zaC13cmFwcGVyJykucmVtb3ZlQ2xhc3MoJ25rb291dCcpLmFkZENsYXNzKCdua29pbicpLnNob3coKTsKICAgICAgICAgICAgfSwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICQoJy5oZC1zaC13cmFwcGVyJykucmVtb3ZlQ2xhc3MoJ25rb2luJykuYWRkQ2xhc3MoJ25rb291dCcpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAkKCcubWFpbi1zaCcpLnJlbW92ZUNsYXNzKCdjbGlja2VkJyk7CiAgICAgICAgICAgICAgICBpZiggJCgnI2hpZGRlbi11cmwnKS5pcygiOnZpc2libGUiKSApIHsKICAgICAgICAgICAgICAgICAgICAkKCcjY29weS10by1jbGlwJykuY2xpY2soKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICAKICAgICAgICAvL3ZhciBwYXRobmFtZSA9ICdodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tJyArIGxvY2F0aW9uLnBhdGhuYW1lICsgbG9jYXRpb24uc2VhcmNoOwogICAgICAgIHZhciBwYXRobmFtZSA9IGVuY29kZVVSSSgnaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9maWxtNTA0ODg5Lmh0bWwnKTsKICAgICAgICB2YXIgc2xpZGVPcHRpb25zID0geyBkaXJlY3Rpb246ICdsZWZ0JyB9OwoKICAgICAgICAkKCcjY29weS10by1jbGlwJykudG9nZ2xlKAogICAgICAgICAgICBmdW5jdGlvbigpewogICAgICAgICAgICAgICAgJCgnI2hpZGRlbi11cmwnKS5zaG93KCk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAkKCcjaGlkZGVuLXVybCcpLmZpbmQoJzppbnB1dCcpLnZhbChwYXRobmFtZSk7CiAgICAgICAgICAgICAgICAgICAgLy8kKCcjaGlkZGVuLXVybCcpLmZpbmQoJzppbnB1dCcpLnNlbGVjdCgpOwogICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0ID0gJCgnI2hpZGRlbi11cmwnKS5maW5kKCc6aW5wdXQnKS50ZXh0KCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgJCgnI2hpZGRlbi11cmwnKS5oaWRlKCk7CiAgICAgICAgfSk7CgogICAgICAgICQoJyNoaWRkZW4tdXJsJykub24oJ2NsaWNrJywgJyNjb3B5LWNsaXBib2FyZCcsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICQodGhpcykudGV4dCggJCgnI2NvcHktY2xpcGJvYXJkJykuYXR0cignZGF0YS10ZXh0JykgKTsKICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoIHBhdGhuYW1lICkKICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyggcGF0aG5hbWUgKTsKICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgY29weSB0ZXh0OiAnLCBlcnIpOwogICAgICAgICAgICB9KTsgIAogICAgICAgIH0pCgogICAgICAgICQoJyNoaWRkZW4tdXJsJykuZmluZCgnLmhpZGUtdXJsJykuY2xpY2soZnVuY3Rpb24oKQogICAgICAgIHsKICAgICAgICAgICAgJCgnI2NvcHktdG8tY2xpcCcpLnRyaWdnZXIoJ2NsaWNrJykKICAgICAgICB9KTsKCiAgICAgICAgaGlkZU9uQ2xpY2soKTsKICAgIH0pOwo8L3NjcmlwdD4KCjxkaXYgY2xhc3M9ImhkLXNoLW1haW4td3JhcHBlciI+CiAgICA8ZGl2IGNsYXNzPSJoZC1zaC13cmFwcGVyIj4KICAgICAgICA8YSBpZD0iY29weS10by1jbGlwIiB0aXRsZT0iQ29waWEgbGEgVVJMIHBhcmEgY29tcGFydGlyIiBocmVmPSIjIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hhcmUtaWNvbiIgaWQ9ImNvcHktdG8tY2xpcC1jb250YWluZXIiPjxpIGNsYXNzPSJmYXMgZmEtbGluayI+PC9pPjwvZGl2PgogICAgICAgIDwvYT4KICAgICAgICAgICAgCiAgICAgICAgPGEgY2xhc3M9ImZiLXNoIiB0YXJnZXQ9Il9CTEFOSyIgaHJlZj0iaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL3NoYXJlci5waHA/dT1odHRwcyUzQSUyRiUyRnd3dy5maWxtYWZmaW5pdHkuY29tJTJGZXMlMkZmaWxtNTA0ODg5Lmh0bWwmdD1FbCBzaG93IGRlIFRydW1hbiAoVW5hIHZpZGEgZW4gZGlyZWN0bykgICgxOTk4KSIgdGl0bGU9IkNvbXBhcnRlIGVuIEZhY2Vib29rIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hhcmUtaWNvbiI+PGkgY2xhc3M9ImZhYiBmYS1mYWNlYm9vay1mIj48L2k+PC9kaXY+CiAgICAgICAgPC9hPgogICAgCiAgICAgICAgPGEgY2xhc3M9InR3LXNoIiB0YXJnZXQ9Il9CTEFOSyIgdGl0bGU9IkNvbXBhcnRlIGVuIFR3aXR0ZXIiIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vaW50ZW50L3R3ZWV0P3RleHQ9RWwlMjBzaG93JTIwZGUlMjBUcnVtYW4lMjAlMjhVbmElMjB2aWRhJTIwZW4lMjBkaXJlY3RvJTI5JTIwJTIwJTI4MTk5OCUyOSZuYnNwO2VuIEBmaWxtYWZmaW5pdHkgaHR0cHMlM0ElMkYlMkZ3d3cuZmlsbWFmZmluaXR5LmNvbSUyRmVzJTJGZmlsbTUwNDg4OS5odG1sIiB0aXRsZT0iQ29tcGFydGUgZW4gVHdpdHRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNoYXJlLWljb24iPjxpIGNsYXNzPSJmYWIgZmEtdHdpdHRlciI+PC9pPjwvZGl2PgogICAgICAgIDwvYT4KICAgICAgICA8YSBjbGFzcz0id2gtc2giIHRhcmdldD0iX0JMQU5LIiB0aXRsZT0iQ29tcGFydGUgZW4gV2hhdHNBcHAiIGhyZWY9Imh0dHBzOi8vYXBpLndoYXRzYXBwLmNvbS9zZW5kP3RleHQ9RWwlMjBzaG93JTIwZGUlMjBUcnVtYW4lMjAlMjhVbmElMjB2aWRhJTIwZW4lMjBkaXJlY3RvJTI5JTIwJTIwJTI4MTk5OCUyOSZuYnNwO2VuIEBmaWxtYWZmaW5pdHkgaHR0cHMlM0ElMkYlMkZ3d3cuZmlsbWFmZmluaXR5LmNvbSUyRmVzJTJGZmlsbTUwNDg4OS5odG1sIiB0aXRsZT0iQ29tcGFydGUgZW4gV2hhdHNBcHAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzaGFyZS1pY29uIj48aSBjbGFzcz0iZmFiIGZhLXdoYXRzYXBwIj48L2k+PC9kaXY+CiAgICAgICAgPC9hPgogCjwvZGl2Pgo8L2Rpdj4KCiAgICA8ZGl2IGlkPSJoaWRkZW4tdXJsIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNTUiPjxpIGNsYXNzPSJmYXMgZmEtdGltZXMtY2lyY2xlIGhpZGUtdXJsIj48L2k+CiAgICAgICAgPGRpdiBpZD0iY29weS1jbGlwYm9hcmQiIGRhdGEtdGV4dD0iQ29waWFkbyI+SGF6IGNsaWNrIGFxdcOtIHBhcmEgY29waWFyIGxhIFVSTDwvZGl2PgogICAgPC9kaXY+CgoKICAgIAoKCgo8ZGl2IGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTW92aWUiPgogICAgPGgxIGlkPSJtYWluLXRpdGxlIj4KICAgICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+RWwgc2hvdyBkZSBUcnVtYW4gKFVuYSB2aWRhIGVuIGRpcmVjdG8pIDwvc3Bhbj4KICAgIDwvaDE+CgoKCgo8c2NyaXB0PgokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgJCgiI3Nob3ctYWxsLXBybyIpLmNsaWNrKGZ1bmN0aW9uKGV2ZW50KXsKICAgICAgICAkKHRoaXMpLnBhcmVudCgnbGknKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwogICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgJCgiLmhpZGRlbiIpLnNsaWRlRG93bignc2xvdycpOwogICAgfSk7CgogICAgJCgiI3Nob3ctYWxsLWF3YXJkcyIpLmNsaWNrKGZ1bmN0aW9uKGV2ZW50KXsKICAgICAgICAkKHRoaXMpLnBhcmVudCgnZGl2JykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICQoIi5oaWRkZW4tYXdhcmRzIikuc2xpZGVEb3duKCdzbG93Jyk7CiAgICB9KTsKCiAgICAkKCcuei1tb3ZpZSAuY3JlZGl0cycpLm9uKCdjbGljaycsICcuc2VlLW1vcmUtY3JlZGl0cycgLGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCdkaXYnKS5maW5kKCcuaGlkZGVuLWNyZWRpdCcpLmNzcygnZGlzcGxheScsICdpbmxpbmUtYmxvY2snKTsKICAgICAgICB2YXIgJGxhc3QgPSAkKHRoaXMpLmNsb3Nlc3QoJ2RpdicpLmZpbmQoJy5uYjpsYXN0IGEnKTsKICAgICAgICBpZiggJGxhc3QubGVuZ3RoID09IDAgKXsKICAgICAgICAgICAgdmFyICRsYXN0ID0gJCh0aGlzKS5jbG9zZXN0KCdkaXYnKS5maW5kKCcubmI6bGFzdCBzcGFuJyk7CiAgICAgICAgfQoKICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJ2RpdicpLmZpbmQoJy5uYjpsYXN0JykuaHRtbCgkbGFzdFswXS5vdXRlckhUTUwpOwogICAgICAgICQodGhpcykuY2xvc2VzdCgnZGl2JykuZmluZCgnLnQtcCcpLmhpZGUoKTsKCiAgICAgICAgJCh0aGlzKS5odG1sKCJWZXIgbWVub3MiKS5hZGRDbGFzcygnc2VlLWxlc3MtY3JlZGl0cycpLnJlbW92ZUNsYXNzKCdzZWUtbW9yZS1jcmVkaXRzJyk7CiAgICB9KQoKICAgICQoJy56LW1vdmllIC5jcmVkaXRzJykub24oJ2NsaWNrJywgJy5zZWUtbGVzcy1jcmVkaXRzJyAsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCdkaXYnKS5maW5kKCcuaGlkZGVuLWNyZWRpdCcpLmNzcygnZGlzcGxheScsICdub25lJyk7CiAgICAgICAgJCh0aGlzKS5odG1sKCJWZXIgdG9kb3MiKS5hZGRDbGFzcygnc2VlLW1vcmUtY3JlZGl0cycpLnJlbW92ZUNsYXNzKCdzZWUtbGVzcy1jcmVkaXRzJyk7CiAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCdkaXYnKS5maW5kKCcudC1wJykuc2hvdygpOwogICAgfSkKCiAgICAkKCIjY2JveE92ZXJsYXkiKS5vbignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0pOwoKICAgICQoJy5zaG93LWFrYXMnKS5vbignY2xpY2snLCBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdmFyIGljb24gPSAkKHRoaXMpLmZpbmQoJ2knKTsKICAgICAgICBpZihpY29uLmhhc0NsYXNzKCdmYS1jYXJldC1kb3duJykpCiAgICAgICAgewogICAgICAgICAgICAkKCcuYWthcycpLnNsaWRlRG93bigpOwogICAgICAgICAgICBpY29uLnJlbW92ZUNsYXNzKCdmYS1jYXJldC1kb3duJykuYWRkQ2xhc3MoJ2ZhLWNhcmV0LXVwJyk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgICQoJy5ha2FzJykuc2xpZGVVcCgpOwogICAgICAgICAgICBpY29uLnJlbW92ZUNsYXNzKCdmYS1jYXJldC11cCcpLmFkZENsYXNzKCdmYS1jYXJldC1kb3duJyk7CiAgICAgICAgfQoKICAgIH0pOwp9KTsKPC9zY3JpcHQ+CiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgIG5ldyBSYXRpbmdCYXJzKCQoJyNyYXQtZGlzcCcpLCBbMTUsNTQsMTAwLDc2LDMxLDgsMywxLDEsMF0pOwogICAgICAgICAgICB9KTsKICAgICAgICA8L3NjcmlwdD4KCjxkaXYgY2xhc3M9InotbW92aWUiPgoKPHNjcmlwdD4NCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7DQogICAgJCgiI21vcmUtY2F0ZWdvcmllcyIpLmNsaWNrKGZ1bmN0aW9uKGUpew0KICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsNCiAgICAgICAgJCgiLmhpZGRlbi1tZW51IikudG9nZ2xlKCk7DQogICAgfSk7DQoNCiAgICAvL3BhcmEgcG9uZXIgZWwgbGV0cmVyaXRvIGRlIG5vdmVkYWQNCiAgICAvLyQoIi5uZXciKS5hcHBlbmQoJzxkaXYgaWQ9InRvb2x0aXAtbmV3Ij5ub3ZlZGFkPC9kaXY+Jyk7DQp9KTsNCg0KJChkb2N1bWVudCkuY2xpY2soZnVuY3Rpb24oKSB7DQogICAgJCgiLmhpZGRlbi1tZW51IikuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsNCn0pOw0KDQo8L3NjcmlwdD4NCg0KPGRpdiBjbGFzcz0ibWFyZ2luLW50YWJzIj4NCiAgICANCiAgICANCiAgICANCg0KPHVsIGNsYXNzPSJudGFicyI+DQogICAgPGxpIGNsYXNzPSJhY3RpdmUiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvZmlsbTUwNDg4OS5odG1sIj5GaWNoYSZuYnNwOzwvYT48L2xpPg0KICAgIDxsaSA+PGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9yZXZpZXdzLzEvNTA0ODg5Lmh0bWwiPkNyw610aWNhcyZuYnNwOzxlbT5bMjAxXTwvZW0+PC9hPjwvbGk+DQogICAgPGxpID48YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2V2aWRlb3MucGhwP21vdmllX2lkPTUwNDg4OSI+VHLDoWlsZXJzJm5ic3A7PGVtPlszXTwvZW0+PC9hPjwvbGk+DQogICAgPGxpID48YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2ZpbG1pbWFnZXMucGhwP21vdmllX2lkPTUwNDg4OSI+SW3DoWdlbmVzJm5ic3A7PGVtPlsxNF08L2VtPjwvYT48L2xpPg0KICAgIDxsaSBjbGFzcz0ibmV3Ij48YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2J1eW1vdmllLnBocD9tb3ZpZV9pZD01MDQ4ODkiPkRWRC9Wb0QmbmJzcDs8ZW0+WzJdPC9lbT48L2E+PC9saT4NCjwvdWw+DQo8L2Rpdj4NCgogICAgPGRpdiBpZD0icmlnaHQtY29sdW1uIj4KICAgICAgICA8ZGl2IGlkPSJtb3ZpZS1tYWluLWltYWdlLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0ibGlnaHRib3giIHN0eWxlPSJkaXNwbGF5OiBibG9jazsiIGhyZWY9Imh0dHBzOi8vcGljcy5maWxtYWZmaW5pdHkuY29tL3RoZV90cnVtYW5fc2hvdy0xMzAwOTE1NTctbGFyZ2UuanBnIiB0aXRsZT0iRWwgc2hvdyBkZSBUcnVtYW4gKFVuYSB2aWRhIGVuIGRpcmVjdG8pICIgZGF0YS10PSI8cCBzdHlsZT1mb250LXNpemU6OXB4O2ZvbnQtZmFtaWx5OmFyaWFsO2NvbG9yOiM2NjY2NjY7PkVsIGNvcHlyaWdodCBkZSBsYXMgaW3DoWdlbmVzIHBlcnRlbmVjZSBhIHN1cyByZXNwZWN0aXZvcyBhdXRvcmVzIHkvbyBwcm9kdWN0b3Jhcy9kaXN0cmlidWlkb3Jhcy48L3A+IiBkYXRhLW1vdmllLWlkPSI1MDQ4ODkiPgogICAgICAgIDxpbWcgaXRlbXByb3A9ImltYWdlIiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjIzOCIgc3JjPSJodHRwczovL3BpY3MuZmlsbWFmZmluaXR5LmNvbS90aGVfdHJ1bWFuX3Nob3ctMTMwMDkxNTU3LW1tZWQuanBnIiBhbHQ9IkVsIHNob3cgZGUgVHJ1bWFuIChVbmEgdmlkYSBlbiBkaXJlY3RvKSAiPiAgICAgICAgPHNwYW4gdGl0bGU9IlZlciB0cmFpbGVyIiBjbGFzcz0ic2VlLXRyYWlsZXIiPjxpIGNsYXNzPSJmYXMgZmEtcGxheS1jaXJjbGUiPjwvaT48L3NwYW4+CiAgICA8L2E+CiAgICAgICAgPC9kaXY+CgoKICAgICAgICA8ZGl2IGlkPSJyYXQtY29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBpZD0icmF0LWF2Zy1jb3VudCIgaXRlbXByb3A9ImFnZ3JlZ2F0ZVJhdGluZyIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9BZ2dyZWdhdGVSYXRpbmciPgogICAgICAgICAgICAgICAgPGRpdiBpZD0ibW92aWUtcmF0LWltYWdlIj48c3BhbiBpZD0ic3RhcnMiPjxpbWcgc3JjPSIvaW1ncy9yYXRpbmdzLzgucG5nIj48L3NwYW4+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJyYXQtYXZnLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0ibW92aWUtcmF0LWF2ZyIgaXRlbXByb3A9InJhdGluZ1ZhbHVlIiBjb250ZW50PSI3LjciPgogICAgICAgICAgICAgICAgICAgICAgICA3LDcgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJiZXN0UmF0aW5nIiBjb250ZW50PSIxMCIvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJ3b3JzdFJhdGluZyIgY29udGVudD0iMSIvPgogICAgICAgICAgICAgICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJyZXZpZXdDb3VudCIgY29udGVudD0iMjAxIi8+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0ibW92aWUtY291bnQtcmF0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaXRlbXByb3A9InJhdGluZ0NvdW50IiBjb250ZW50PSIxMjAxMjIiPjEyMC4xMjI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im1vdmllLWNvdW50LXJhdC10ZXh0Ij52b3RvczwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNsZWFyZml4Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCgogICAgICAgICAgICA8ZGl2IGlkPSJyYXQtZ3JhcGgiPgogICAgICAgICAgICAgICAgPGNhbnZhcyBzdHlsZT0icGFkZGluZzogM3B4OyBiYWNrZ3JvdW5kOiAjZmZmOyBib3JkZXI6IDFweCBzb2xpZCAjQ0REQ0VCIiBoZWlnaHQ9IjgxIiB3aWR0aD0iMTIwIiBpZD0icmF0LWRpc3AiPgogICAgICAgICAgICAgICAgICAgIFBsdWdpbiBubyBzb3BvcnRhZG8gICAgICAgICAgICAgICAgPC9jYW52YXM+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBpZD0icmV2aWV3LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0ibW92aWUtcmV2aWV3cy1ib3giPgogICAgICAgICAgICAgICAgICAgICAgICAyMDEgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9yZXZpZXdzLzEvNTA0ODg5Lmh0bWwiPmNyw610aWNhczwvYT4gLSA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3Jldmlld3MyLzEvNTA0ODg5Lmh0bWwiPnBvciB0w610dWxvczwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNsZWFyZml4Ij48L2Rpdj4KICAgIDwvZGl2Pgo8ZGl2IGNsYXNzPSJyYXRlLW1vdmllLWJveCIgZGF0YS1tb3ZpZS1pZD0iNTA0ODg5IiBkYXRhLXVzZXItcmF0aW5nPSIiPg0KICAgIDxkaXYgY2xhc3M9InJhdGUtd3JhcHBlciI+DQogICAgICA8ZGl2IGNsYXNzPSJydC1ib3giPjxhIGNsYXNzPSJzaWduLWluIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2xvZ2luLnBocCI+Vm90YSBlc3RhIHBlbMOtY3VsYTwvYT48L2Rpdj4NCiAgICAgICAgPC9kaXY+DQo8L2Rpdj4NCgoKCgo8ZGl2IGNsYXNzPSJhZGQtbW92aWUtbGlzdC1jb250Ij4KICAgIDxkaXYgY2xhc3M9ImFkZC10ZXh0LWNvbnRlbnQiPgogICAgPGRpdiBjbGFzcz0iYWRkLW1vdmllLWxpc3QtaW5mbyBhZGQtdG8tbGlzdC1idXR0b24iPgo8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2VkdG1vdmllbGlzdHMucGhwP21vdmllX2lkPTUwNDg4OSI+QcOxYWRpciBhIGxpc3RhczwvYT4gICAgPC9kaXY+CiAgICA8L2Rpdj4KCjxkaXYgY2xhc3M9Imxpc3RzLWJveCI+PC9kaXY+Cgo8L2Rpdj4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9wcm8tcmV2aWV3cy5waHA/bW92aWUtaWQ9NTA0ODg5Ij4KICAgIDxkaXYgY2xhc3M9ImZpbG0tcmlnaHQtYm94IHByby1yZXZpZXdzLWNoYXJ0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Q3LDrXRpY2FzIHByb2Zlc2lvbmFsZXM8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJib2R5Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvLXJldmlld3MtY2hhcnQtd3JhcHBlciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3RhbC1hYnMiIHRpdGxlPSIxMiBjcsOtdGljYXMgcHJvZmVzaW9uYWxlcyI+CiAgICAgICAgICAgICAgICAgICAgMTIgPHNtYWxsPjxpIGNsYXNzPSJmYSBmYS1zaW1wbGUtdXNlci1vLWZhIj48L2k+PC9zbWFsbD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGNhbnZhcyBpZD0ibXlDaGFydCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMTBweDsgd2lkdGg6IDcwcHg7IGhlaWdodDogNzBweDsiPjwvY2FudmFzPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZyI+MTE8aSBjbGFzcz0iZmEgZmEtc2ltcGxlLXVzZXItby1mYSI+PC9pPiA8aSBjbGFzcz0iZmFzIGZhLWNpcmNsZSAgcG9zIiB0aXRsZT0idGVuZGVuY2lhIGRlIGxhIGNyw610aWNhOiBwb3NpdGl2YSIgc3R5bGU9ImNvbG9yOiAjNENBRjUwIj48L2k+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnIj4xPGkgY2xhc3M9ImZhIGZhLXNpbXBsZS11c2VyLW8tZmEiPjwvaT4gPGkgY2xhc3M9ImZhcyBmYS1jaXJjbGUgIG5ldSIgdGl0bGU9InRlbmRlbmNpYSBkZSBsYSBjcsOtdGljYTogbmV1dHJhbCIgc3R5bGU9ImNvbG9yOiAjRkZCRjAwIj48L2k+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnIj4wPGkgY2xhc3M9ImZhIGZhLXNpbXBsZS11c2VyLW8tZmEiPjwvaT4gPGkgY2xhc3M9ImZhcyBmYS1jaXJjbGUgIG5lZyIgdGl0bGU9InRlbmRlbmNpYSBkZSBsYSBjcsOtdGljYTogbmVnYXRpdmEiIHN0eWxlPSJjb2xvcjogI0Y0NDMzNiI+PC9pPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PjwhLS0gYm9keSAtLT4KICAgIDwvZGl2Pgo8L2E+CjxzY3JpcHQ+CiAgICAgICAgdmFyIHJhbmRvbVNjYWxpbmdGYWN0b3IgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDEwMCk7CiAgICAgICAgfTsKCiAgICB2YXIgY3R4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215Q2hhcnQnKTsKICAgICAgICB2YXIgY29uZmlnID0gewogICAgICAgICAgICB0eXBlOiAnZG91Z2hudXQnLAogICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICBkYXRhc2V0czogW3sKICAgICAgICAgICAgICAgICAgICBkYXRhOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDM2OCwKICAgICAgICAgICAgICAgICAgICAgICAgMzIsCiAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFsKICAgICAgICAgICAgICAgICAgICAgICAgJyMwMDgwMDAnLAogICAgICAgICAgICAgICAgICAgICAgICAnI0ZGQTUwMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICcjRkYwMDAwJywKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnRGF0YXNldCAxJwogICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICBsYWJlbHM6IFsKICAgICAgICAgICAgICAgICAgICAnUG9zaXRpdmFzJywKICAgICAgICAgICAgICAgICAgICAnTmV1dHJhcycsCiAgICAgICAgICAgICAgICAgICAgJ05lZ2F0aXZhcycsCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgIHJlc3BvbnNpdmU6IGZhbHNlLAogICAgICAgICAgICAgICAgbGVnZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmFsc2UsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdGl0bGU6IHsKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmYWxzZSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBhbmltYXRpb246IHsKICAgICAgICAgICAgICAgICAgICBhbmltYXRlU2NhbGU6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZVJvdGF0ZTogdHJ1ZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGN1dG91dFBlcmNlbnRhZ2U6IDc1LAogICAgICAgICAgICAgICAgdG9vbHRpcHM6IHsKICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgdmFyIG15Q2hhcnQgPSBuZXcgQ2hhcnQoY3R4LCBjb25maWcpOwo8L3NjcmlwdD4KCgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0ibGVmdC1jb2x1bW4iPgogICAgICAgIDxkbCBjbGFzcz0ibW92aWUtaW5mbyI+CiAgICAgICAgICAgIDxkdD5Uw610dWxvIG9yaWdpbmFsPC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgVGhlIFRydW1hbiBTaG93ICAgICAgICAgICAgIDwvZGQ+CgoKCgogICAgICAgICAgICA8ZHQ+QcOxbzwvZHQ+CiAgICAgICAgICAgIDxkZCBpdGVtcHJvcD0iZGF0ZVB1Ymxpc2hlZCI+MTk5ODwvZGQ+CgogICAgICAgICAgICA8ZHQ+RHVyYWNpw7NuPC9kdD4KICAgICAgICAgICAgPGRkIGl0ZW1wcm9wPSJkdXJhdGlvbiI+MTAzIG1pbi48L2RkPgoKICAgICAgICAgICAgPGR0PlBhw61zPC9kdD4KICAgICAgICAgICAgPGRkPjxzcGFuIGlkPSJjb3VudHJ5LWltZyI+PGltZyBjbGFzcz0ibmZsYWciIHNyYz0iL2ltZ3MvY291bnRyaWVzMi9VUy5wbmciIGFsdD0iRXN0YWRvcyBVbmlkb3MiIHRpdGxlPSJFc3RhZG9zIFVuaWRvcyI+PC9zcGFuPiZuYnNwO0VzdGFkb3MgVW5pZG9zPC9kZD4KICAgICAgICAgICAgPGR0PkRpcmVjY2nDs248L2R0PgogICAgICAgICAgICA8ZGQgY2xhc3M9ImRpcmVjdG9ycyI+CjxkaXYgY2xhc3M9ImNyZWRpdHMiPjxzcGFuIGNsYXNzPSJuYiIgIGl0ZW1wcm9wPSJkaXJlY3RvciIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9QZXJzb24iPjxhIGl0ZW1wcm9wPSJ1cmwiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvc2VhcmNoLnBocD9zdHlwZT1kaXJlY3RvciZzbiZzdGV4dD1QZXRlciUyMFdlaXIiIHRpdGxlPSJQZXRlciBXZWlyIj48c3BhbiBpdGVtcHJvcD0ibmFtZSI+UGV0ZXIgV2Vpcjwvc3Bhbj48L2E+PC9zcGFuPjwvZGl2PiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDxkdD5HdWlvbjwvZHQ+CiAgICAgICAgICAgIDxkZD48ZGl2IGNsYXNzPSJjcmVkaXRzIj48c3BhbiBjbGFzcz0ibmIiPjxzcGFuPkFuZHJldyBOaWNjb2w8L3NwYW4+PC9zcGFuPjwvZGl2PjwvZGQ+CiAgICAgICAgICAgIDxkdD5Nw7pzaWNhPC9kdD4KICAgICAgICAgICAgPGRkPjxkaXYgY2xhc3M9ImNyZWRpdHMiPjxzcGFuIGNsYXNzPSJuYiI+PHNwYW4+QnVya2hhcmQgRGFsbHdpdHo8L3NwYW4+PC9zcGFuPjwvZGl2PjwvZGQ+CiAgICAgICAgICAgIDxkdD5Gb3RvZ3JhZsOtYTwvZHQ+CiAgICAgICAgICAgIDxkZD48ZGl2IGNsYXNzPSJjcmVkaXRzIj48c3BhbiBjbGFzcz0ibmIiPjxzcGFuPlBldGVyIEJpemlvdTwvc3Bhbj48L3NwYW4+PC9kaXY+PC9kZD4KICAgICAgICAgICAgPGR0PlJlcGFydG88L2R0PgogICAgICAgICAgICA8ZGQgY2xhc3M9ImNhcmQtY2FzdCI+CjxkaXYgY2xhc3M9ImNyZWRpdHMiPjxzcGFuIGNsYXNzPSJuYiIgIGl0ZW1wcm9wPSJhY3RvciIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9QZXJzb24iPjxhIGl0ZW1wcm9wPSJ1cmwiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvc2VhcmNoLnBocD9zdHlwZT1jYXN0JnNuJnN0ZXh0PUppbSUyMENhcnJleSIgdGl0bGU9IkppbSBDYXJyZXkiPjxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5KaW0gQ2FycmV5PC9zcGFuPjwvYT4sPC9zcGFuPiA8c3BhbiBjbGFzcz0ibmIiICBpdGVtcHJvcD0iYWN0b3IiIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvUGVyc29uIj48YSBpdGVtcHJvcD0idXJsIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3NlYXJjaC5waHA/c3R5cGU9Y2FzdCZzbiZzdGV4dD1MYXVyYSUyMExpbm5leSIgdGl0bGU9IkxhdXJhIExpbm5leSI+PHNwYW4gaXRlbXByb3A9Im5hbWUiPkxhdXJhIExpbm5leTwvc3Bhbj48L2E+LDwvc3Bhbj4gPHNwYW4gY2xhc3M9Im5iIiAgaXRlbXByb3A9ImFjdG9yIiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1BlcnNvbiI+PGEgaXRlbXByb3A9InVybCIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9zZWFyY2gucGhwP3N0eXBlPWNhc3Qmc24mc3RleHQ9Tm9haCUyMEVtbWVyaWNoIiB0aXRsZT0iTm9haCBFbW1lcmljaCI+PHNwYW4gaXRlbXByb3A9Im5hbWUiPk5vYWggRW1tZXJpY2g8L3NwYW4+PC9hPiw8L3NwYW4+IDxzcGFuIGNsYXNzPSJuYiIgIGl0ZW1wcm9wPSJhY3RvciIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9QZXJzb24iPjxhIGl0ZW1wcm9wPSJ1cmwiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvc2VhcmNoLnBocD9zdHlwZT1jYXN0JnNuJnN0ZXh0PUVkJTIwSGFycmlzIiB0aXRsZT0iRWQgSGFycmlzIj48c3BhbiBpdGVtcHJvcD0ibmFtZSI+RWQgSGFycmlzPC9zcGFuPjwvYT4sPC9zcGFuPiA8c3BhbiBjbGFzcz0ibmIiICBpdGVtcHJvcD0iYWN0b3IiIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvUGVyc29uIj48YSBpdGVtcHJvcD0idXJsIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3NlYXJjaC5waHA/c3R5cGU9Y2FzdCZzbiZzdGV4dD1OYXRhc2NoYSUyME1jRWxob25lIiB0aXRsZT0iTmF0YXNjaGEgTWNFbGhvbmUiPjxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5OYXRhc2NoYSBNY0VsaG9uZTwvc3Bhbj48L2E+LDwvc3Bhbj4gPHNwYW4gY2xhc3M9Im5iIiAgaXRlbXByb3A9ImFjdG9yIiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1BlcnNvbiI+PGEgaXRlbXByb3A9InVybCIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9zZWFyY2gucGhwP3N0eXBlPWNhc3Qmc24mc3RleHQ9SG9sbGFuZCUyMFRheWxvciIgdGl0bGU9IkhvbGxhbmQgVGF5bG9yIj48c3BhbiBpdGVtcHJvcD0ibmFtZSI+SG9sbGFuZCBUYXlsb3I8L3NwYW4+PC9hPiw8L3NwYW4+IDxzcGFuIGNsYXNzPSJuYiIgIGl0ZW1wcm9wPSJhY3RvciIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9QZXJzb24iPjxhIGl0ZW1wcm9wPSJ1cmwiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvc2VhcmNoLnBocD9zdHlwZT1jYXN0JnNuJnN0ZXh0PVBhdWwlMjBHaWFtYXR0aSIgdGl0bGU9IlBhdWwgR2lhbWF0dGkiPjxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QYXVsIEdpYW1hdHRpPC9zcGFuPjwvYT4sPC9zcGFuPiA8c3BhbiBjbGFzcz0ibmIiICBpdGVtcHJvcD0iYWN0b3IiIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvUGVyc29uIj48YSBpdGVtcHJvcD0idXJsIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3NlYXJjaC5waHA/c3R5cGU9Y2FzdCZzbiZzdGV4dD1BZGFtJTIwVG9tZWkiIHRpdGxlPSJBZGFtIFRvbWVpIj48c3BhbiBpdGVtcHJvcD0ibmFtZSI+QWRhbSBUb21laTwvc3Bhbj48L2E+LDwvc3Bhbj4gPHNwYW4gY2xhc3M9Im5iIiAgaXRlbXByb3A9ImFjdG9yIiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1BlcnNvbiI+PGEgaXRlbXByb3A9InVybCIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9zZWFyY2gucGhwP3N0eXBlPWNhc3Qmc24mc3RleHQ9SGFycnklMjBTaGVhcmVyIiB0aXRsZT0iSGFycnkgU2hlYXJlciI+PHNwYW4gaXRlbXByb3A9Im5hbWUiPkhhcnJ5IFNoZWFyZXI8L3NwYW4+PC9hPiw8L3NwYW4+IDxzcGFuIGNsYXNzPSJuYiIgIGl0ZW1wcm9wPSJhY3RvciIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9QZXJzb24iPjxhIGl0ZW1wcm9wPSJ1cmwiIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvc2VhcmNoLnBocD9zdHlwZT1jYXN0JnNuJnN0ZXh0PUJyaWFuJTIwRGVsYXRlIiB0aXRsZT0iQnJpYW4gRGVsYXRlIj48c3BhbiBpdGVtcHJvcD0ibmFtZSI+QnJpYW4gRGVsYXRlPC9zcGFuPjwvYT4sPC9zcGFuPiA8c3BhbiBjbGFzcz0ibmIiICBpdGVtcHJvcD0iYWN0b3IiIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvUGVyc29uIj48YSBpdGVtcHJvcD0idXJsIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3NlYXJjaC5waHA/c3R5cGU9Y2FzdCZzbiZzdGV4dD1QaGlsaXAlMjBCYWtlciUyMEhhbGwiIHRpdGxlPSJQaGlsaXAgQmFrZXIgSGFsbCI+PHNwYW4gaXRlbXByb3A9Im5hbWUiPlBoaWxpcCBCYWtlciBIYWxsPC9zcGFuPjwvYT4sPC9zcGFuPiA8c3BhbiBjbGFzcz0ibmIiICBpdGVtcHJvcD0iYWN0b3IiIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvUGVyc29uIj48YSBpdGVtcHJvcD0idXJsIiBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3NlYXJjaC5waHA/c3R5cGU9Y2FzdCZzbiZzdGV4dD1QZXRlciUyMEtyYXVzZSIgdGl0bGU9IlBldGVyIEtyYXVzZSI+PHNwYW4gaXRlbXByb3A9Im5hbWUiPlBldGVyIEtyYXVzZTwvc3Bhbj48L2E+LDwvc3Bhbj4gPHNwYW4gY2xhc3M9Im5iIiAgaXRlbXByb3A9ImFjdG9yIiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1BlcnNvbiI+PGEgaXRlbXByb3A9InVybCIgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9zZWFyY2gucGhwP3N0eXBlPWNhc3Qmc24mc3RleHQ9Ty1MYW4lMjBKb25lcyIgdGl0bGU9Ik8tTGFuIEpvbmVzIj48c3BhbiBpdGVtcHJvcD0ibmFtZSI+Ty1MYW4gSm9uZXM8L3NwYW4+PC9hPjwvc3Bhbj48L2Rpdj4gICAgICAgICAgICA8L2RkPgogICAgICAgICAgICA8ZHQ+UHJvZHVjdG9yYTwvZHQ+CiAgICAgICAgICAgIDxkZCBjbGFzcz0iY2FyZC1wcm9kdWNlciI+PGRpdiBjbGFzcz0iY3JlZGl0cyI+PHNwYW4gY2xhc3M9Im5iIj48c3Bhbj5QYXJhbW91bnQgUGljdHVyZXM8L3NwYW4+LDwvc3Bhbj4gPHNwYW4gY2xhc3M9Im5iIj48c3Bhbj5TY290dCBSdWRpbiBQcm9kdWN0aW9uczwvc3Bhbj48L3NwYW4+PC9kaXY+PC9kZD4KCiAgICAgICAgICAgIDxkdD5Hw6luZXJvPC9kdD4KICAgICAgICAgICAgPGRkIGNsYXNzPSJjYXJkLWdlbnJlcyI+CiAgICAgICAgICAgICAgICA8c3BhbiBpdGVtcHJvcD0iZ2VucmUiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbW92aWVnZW5yZS5waHA/Z2VucmU9RFImYXR0cj1yYXRfY291bnQmbm9kb2MiPkRyYW1hPC9hPjwvc3Bhbj4uICAgICAgICAgICAgICAgICA8c3BhbiBpdGVtcHJvcD0iZ2VucmUiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbW92aWVnZW5yZS5waHA/Z2VucmU9Q08mYXR0cj1yYXRfY291bnQmbm9kb2MiPkNvbWVkaWE8L2E+PC9zcGFuPiB8ICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL21vdmlldG9waWMucGhwP3RvcGljPTg5OTc3NiZhdHRyPXJhdF9jb3VudCZub2RvYyI+Q29tZWRpYSBkcmFtw6F0aWNhPC9hPi4gICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbW92aWV0b3BpYy5waHA/dG9waWM9MzMzNjkyJmF0dHI9cmF0X2NvdW50Jm5vZG9jIj5Tw6F0aXJhPC9hPi4gICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbW92aWV0b3BpYy5waHA/dG9waWM9MTYyMDE3JmF0dHI9cmF0X2NvdW50Jm5vZG9jIj5UZWxldmlzacOzbjwvYT4uICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL21vdmlldG9waWMucGhwP3RvcGljPTQzNjQ0NyZhdHRyPXJhdF9jb3VudCZub2RvYyI+UGVsw61jdWxhIGRlIGN1bHRvPC9hPiAgICAgICAgICAgIDwvZGQ+CgoKICAgICAgICA8ZHQ+U2lub3BzaXM8L2R0PgogICAgICAgIDxkZCBjbGFzcz0iIiBpdGVtcHJvcD0iZGVzY3JpcHRpb24iPlRydW1hbiBCdXJiYW5rIGVzIHVuIGhvbWJyZSBjb3JyaWVudGUgeSBhbGdvIGluZ2VudW8gcXVlIGhhIHZpdmlkbyB0b2RhIHN1IHZpZGEgZW4gdW5vIGRlIGVzb3MgcHVlYmxvcyBkb25kZSBudW5jYSBwYXNhIG5hZGEuIFNpbiBlbWJhcmdvLCBkZSByZXBlbnRlLCB1bm9zIGV4dHJhw7FvcyBzdWNlc29zIGxlIGhhY2VuIHNvc3BlY2hhciBxdWUgYWxnbyBhbm9ybWFsIGVzdMOhIG9jdXJyaWVuZG8uIFRvZG9zIHN1cyBhbWlnb3Mgc29uIGFjdG9yZXMsIHRvZGEgc3UgY2l1ZGFkIGVzIHVuIHBsYXTDsywgdG9kYSBzdSB2aWRhIGVzdMOhIHNpZW5kbyBmaWxtYWRhIHkgZW1pdGlkYSBjb21vIGVsIHJlYWxpdHkgbcOhcyBhbWJpY2lvc28gZGUgbGEgaGlzdG9yaWEuIChGSUxNQUZGSU5JVFkpPC9kZD4KICAgIDwvZGw+CiAgICA8ZGwgY2xhc3M9Im1hcmdpbi10b3AgbW92aWUtaW5mbyI+CiAgICAgICAgPGR0PlByZW1pb3M8L2R0PgogICAgICAgIDxkZCBjbGFzcz0iYXdhcmQiPgogICAgICAgIDxkaXYgIGNsYXNzPSJtYXJnaW4tYm90dG9tIj48YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2F3YXJkcy5waHA/YXdhcmRfaWQ9YWNhZGVteV9hd2FyZHMmeWVhcj0xOTk5Ij4xOTk4PC9hPjogMyBub21pbmFjaW9uZXMgYWwgT3NjYXI6IE1lam9yIGRpcmVjdG9yLCBhY3RvciBzZWN1bmRhcmlvIChFZCBIYXJyaXMpLCBndWnDs248L2Rpdj4KICAgICAgICA8ZGl2ICBjbGFzcz0ibWFyZ2luLWJvdHRvbSI+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvYXdhcmRzLnBocD9hd2FyZF9pZD1nb2xkZW5nbG9iZXMmeWVhcj0xOTk5Ij4xOTk4PC9hPjogMyBHbG9ib3MgZGUgT3JvOiBhY3RvciBkcmFtYSAoQ2FycmV5KSwgYWN0b3Igc2VjdW5kYXJpbyB5IG3DunNpY2EuIDYgbm9taW5hY2lvbmVzPC9kaXY+CiAgICAgICAgPGRpdiAgY2xhc3M9Im1hcmdpbi1ib3R0b20iPgo8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2F3YXJkcy5waHA/YXdhcmRfaWQ9YmFmdGEmeWVhcj0xOTk5Ij4xOTk4PC9hPjogMyBwcmVtaW9zIEJBRlRBOiBNZWpvciBkaXJlY3RvciwgZGlzZcOxbyBkZSBwcm9kdWNjacOzbiB5IGd1acOzbiBvcmlnaW5hbC4gNyBub20uPC9kaXY+CiAgICAgICAgPGRpdiAgY2xhc3M9Im1hcmdpbi1ib3R0b20iPgo8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2F3YXJkcy5waHA/YXdhcmRfaWQ9bmJyJnllYXI9MTk5OCI+MTk5ODwvYT46IE5hdGlvbmFsIEJvYXJkIG9mIFJldmlldzogQWN0b3Igc2VjdW5kYXJpbyAoRWQgSGFycmlzKTwvZGl2PgogICAgICAgIDxkaXYgIGNsYXNzPSJtYXJnaW4tYm90dG9tIj4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9hd2FyZHMucGhwP2F3YXJkX2lkPWxhZmNhJnllYXI9MTk5OCI+MTk5ODwvYT46IEFzb2NpYWNpw7NuIGRlIENyw610aWNvcyBkZSBMb3MgQW5nZWxlczogTm9taW5hZGEgTWVqb3IgZGlzZcOxbyBkZSBwcm9kdWNjacOzbjwvZGl2PgogICAgICAgIDxkaXYgIGNsYXNzPSJtYXJnaW4tYm90dG9tIj4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9hd2FyZHMucGhwP2F3YXJkX2lkPWNyaXRpY3NfY2hvaWNlX2F3YXJkcyZ5ZWFyPTE5OTgiPjE5OTg8L2E+OiBDcml0aWNzJyBDaG9pY2UgQXdhcmRzOiBOb21pbmFkYSBhIE1lam9yIHBlbMOtY3VsYTwvZGl2PgogICAgICAgIDxkaXY+PHNwYW4gaWQ9InNob3ctYWxsLWF3YXJkcyI+PGEgaHJlZj0iIyI+TW9zdHJhciA0IHByZW1pb3MgbcOhczwvYT4KICAgICAgICAgICAgPGkgY2xhc3M9ImZhcyBmYS1jaGV2cm9uLWRvd24gc3RyaXAtZG93biI+PC9pPjwvc3Bhbj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJoaWRkZW4tYXdhcmRzIG1hcmdpbi1ib3R0b20iIGNsYXNzPSJtYXJnaW4tYm90dG9tIj4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9hd2FyZHMucGhwP2F3YXJkX2lkPWNmY2EmeWVhcj0xOTk4Ij4xOTk4PC9hPjogQXNvY2lhY2nDs24gZGUgQ3LDrXRpY29zIGRlIENoaWNhZ286IE1lam9yIGJhbmRhIHNvbm9yYS4gNSBub21pbmFjaW9uZXM8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJoaWRkZW4tYXdhcmRzIG1hcmdpbi1ib3R0b20iIGNsYXNzPSJtYXJnaW4tYm90dG9tIj4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9hd2FyZHMucGhwP2F3YXJkX2lkPXBnYSZ5ZWFyPTE5OTkiPjE5OTg8L2E+OiBTaW5kaWNhdG8gZGUgUHJvZHVjdG9yZXMgKFBHQSk6IE5vbWluYWRhIGEgTWVqb3IgcGVsw61jdWxhPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iaGlkZGVuLWF3YXJkcyBtYXJnaW4tYm90dG9tIiBjbGFzcz0ibWFyZ2luLWJvdHRvbSI+CjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvYXdhcmRzLnBocD9hd2FyZF9pZD1kZ2EmeWVhcj0xOTk5Ij4xOTk4PC9hPjogU2luZGljYXRvIGRlIERpcmVjdG9yZXMgKERHQSk6IE5vbWluYWRhIGEgTWVqb3IgZGlyZWN0b3I8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJoaWRkZW4tYXdhcmRzIG1hcmdpbi1ib3R0b20iIGNsYXNzPSJtYXJnaW4tYm90dG9tIj4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9hd2FyZHMucGhwP2F3YXJkX2lkPXdnYSZ5ZWFyPTE5OTkiPjE5OTg8L2E+OiBTaW5kaWNhdG8gZGUgR3Vpb25pc3RhcyAoV0dBKTogTm9taW5hZGEgYSBNZWpvciBndWnDs24gb3JpZ2luYWw8L2Rpdj4KICAgICAgICA8L2RkPgogICAgPC9kbD4KCiAgICA8ZGwgY2xhc3M9Im1hcmdpbi10b3AgbW92aWUtaW5mbyI+CiAgICAgICAgPGR0PkNyw610aWNhczwvZHQ+CiAgICAgICAgPGRkPgogICAgICAgICAgICA8dWwgaWQ9InByby1yZXZpZXdzIj4KICAgICAgICAgICA8bGkgPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvLXJldmlldyIgaXRlbXByb3A9InJldmlldyIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9SZXZpZXciPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGl0ZW1wcm9wPSJyZXZpZXdCb2R5Ij4mcXVvdDtNdXkgZGUgdmV6IGVuIGN1YW5kbywgc2UgZGEgZWwgbWlsYWdybyBkZSBxdWUgYSB1biBndWlvbmlzdGEgZGUgcmF6YSBzZSBsZSBvY3VycmEgdW4gYXJndW1lbnRvIGluc8OzbGl0bywgY2FlIGVuIG1hbm9zIGRlIHVuIGRpcmVjdG9yIGRlIGFsdHVyYSB5IGxvcyBlc3BlY3RhZG9yZXMgcG9kZW1vcyBkaXNmcnV0YXIgZGUgbG8gbnVuY2EgdmlzdG8geSBvaWRvJnF1b3Q7PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm8tY3JpdC1tZWQiIGl0ZW1wcm9wPSJhdXRob3IiPkNhcmxvcyBCb3llcm86IERpYXJpbyBFbCBNdW5kbyA8aSBhbHQ9InRlbmRlbmNpYSBkZSBsYSBjcsOtdGljYTogcG9zaXRpdmEiIHRpdGxlPSJ0ZW5kZW5jaWEgZGUgbGEgY3LDrXRpY2E6IHBvc2l0aXZhIiBjbGFzcz0iZmFzIGZhLWNpcmNsZSAgcG9zIj48L2k+PC9kaXY+CgoKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgIDxsaSA+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm8tcmV2aWV3IiBpdGVtcHJvcD0icmV2aWV3IiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1JldmlldyI+CgogICAgICAgICAgICAgICAgICAgIDxhIHRpdGxlPSJMZWVyIGNyw610aWNhIGNvbXBsZXRhIiBocmVmPSJodHRwOi8vZWxwYWlzLmNvbS9kaWFyaW8vMTk5OC8wOS8wNy9jdWx0dXJhLzkwNTExOTIwOF84NTAyMTUuaHRtbCIgdGFyZ2V0PSJfQkxBTksiID4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGl0ZW1wcm9wPSJyZXZpZXdCb2R5Ij4mcXVvdDtEZXNjb25jZXJ0YW50ZSB5IHBlcnR1cmJhZG9yYSBwZWzDrWN1bGEgKC4uLikgdW4gbWF6YXpvIG1vbm9sw610aWNvLCBjb21wYWN0bywgdmlnb3Jvc28geSBkZSBncmFuIGVmaWNhY2lhJnF1b3Q7Jm5ic3A7PGkgY2xhc3M9J2ZhcyBmYS1leHRlcm5hbC1saW5rLWFsdCc+PC9pPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByby1jcml0LW1lZCIgaXRlbXByb3A9ImF1dGhvciI+w4FuZ2VsIEZlcm7DoW5kZXogU2FudG9zOiBEaWFyaW8gRWwgUGHDrXMgPGkgYWx0PSJ0ZW5kZW5jaWEgZGUgbGEgY3LDrXRpY2E6IHBvc2l0aXZhIiB0aXRsZT0idGVuZGVuY2lhIGRlIGxhIGNyw610aWNhOiBwb3NpdGl2YSIgY2xhc3M9ImZhcyBmYS1jaXJjbGUgIHBvcyI+PC9pPjwvZGl2PgoKCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICA8bGkgPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvLXJldmlldyIgaXRlbXByb3A9InJldmlldyIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9SZXZpZXciPgoKICAgICAgICAgICAgICAgICAgICA8YSB0aXRsZT0iTGVlciBjcsOtdGljYSBjb21wbGV0YSIgaHJlZj0iaHR0cHM6Ly93d3cucm9nZXJlYmVydC5jb20vcmV2aWV3cy90aGUtdHJ1bWFuLXNob3ctMTk5OCIgdGFyZ2V0PSJfQkxBTksiID4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGl0ZW1wcm9wPSJyZXZpZXdCb2R5Ij4mcXVvdDtMYXMgaWRlYXMgcXVlIHN1YnlhY2VuIGVuIGVsIHRyYXNmb25kbyBkZSBlc3RhIG9icmEgbGEgY29udmllcnRlbiBlbiBhbGdvIG3DoXMgcXVlIHVuIHNpbXBsZSBlbnRyZXRlbmltaWVudG8gKC4uLikgRXMgdW5hIHJlZmxleGnDs24gc29icmUgbG9zIG51ZXZvcyB2YWxvcmVzIHF1ZSBsYSB0ZWNub2xvZ8OtYSB0cmFlIGltcGzDrWNpdG9zIHBhcmEgbGEgaHVtYW5pZGFkICjigKYpIFB1bnR1YWNpw7NuOiAmIzk3MzM7JiM5NzMzOyYjOTczMzsmIzk3MzM7IChzb2JyZSA0KSZxdW90OyZuYnNwOzxpIGNsYXNzPSdmYXMgZmEtZXh0ZXJuYWwtbGluay1hbHQnPjwvaT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm8tY3JpdC1tZWQiIGl0ZW1wcm9wPSJhdXRob3IiPlJvZ2VyIEViZXJ0OiByb2dlcmViZXJ0LmNvbSA8aSBhbHQ9InRlbmRlbmNpYSBkZSBsYSBjcsOtdGljYTogcG9zaXRpdmEiIHRpdGxlPSJ0ZW5kZW5jaWEgZGUgbGEgY3LDrXRpY2E6IHBvc2l0aXZhIiBjbGFzcz0iZmFzIGZhLWNpcmNsZSAgcG9zIj48L2k+PC9kaXY+CgoKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgIDxsaSA+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm8tcmV2aWV3IiBpdGVtcHJvcD0icmV2aWV3IiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1JldmlldyI+CgogICAgICAgICAgICAgICAgICAgIDxhIHRpdGxlPSJMZWVyIGNyw610aWNhIGNvbXBsZXRhIiBocmVmPSJodHRwczovL3d3dy50aGVndWFyZGlhbi5jb20vZmlsbS8xOTk4L29jdC8wOS8xIiB0YXJnZXQ9Il9CTEFOSyIgPgogICAgICAgICAgICAgICAgICAgIDxkaXYgaXRlbXByb3A9InJldmlld0JvZHkiPiZxdW90O0FsZ3VuYXMgdmVjZXMsIGF1bnF1ZSBubyBjb24gbGEgc3VmaWNpZW50ZSBmcmVjdWVuY2lhLCB1bmEgcGVsw61jdWxhIGRlIEhvbGx5d29vZCBsb2dyYSBwZXJzdWFkaXIgYSBsb3MgZXNwZWN0YWRvcmVzIGRlIHF1ZSByZWZsZXhpb25lbiBzb2JyZSBlbCBtdW5kbyBlbiBlbCBxdWUgdml2ZW4geSBkZSBjw7NtbyDDqXNvIGxlcyBhZmVjdGEgZW4gc3UgdmlkYSBwZXJzb25hbC4mcXVvdDsmbmJzcDs8aSBjbGFzcz0nZmFzIGZhLWV4dGVybmFsLWxpbmstYWx0Jz48L2k+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvLWNyaXQtbWVkIiBpdGVtcHJvcD0iYXV0aG9yIj5SaWNoYXJkIFdpbGxpYW1zOiBUaGUgR3VhcmRpYW4gPGkgYWx0PSJ0ZW5kZW5jaWEgZGUgbGEgY3LDrXRpY2E6IHBvc2l0aXZhIiB0aXRsZT0idGVuZGVuY2lhIGRlIGxhIGNyw610aWNhOiBwb3NpdGl2YSIgY2xhc3M9ImZhcyBmYS1jaXJjbGUgIHBvcyI+PC9pPjwvZGl2PgoKCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICA8bGkgPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvLXJldmlldyIgaXRlbXByb3A9InJldmlldyIgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9SZXZpZXciPgoKICAgICAgICAgICAgICAgICAgICA8YSB0aXRsZT0iTGVlciBjcsOtdGljYSBjb21wbGV0YSIgaHJlZj0iaHR0cHM6Ly93d3cuZW1waXJlb25saW5lLmNvbS9tb3ZpZXMvZW1waXJlLWVzc2F5LXRydW1hbi1zaG93L3Jldmlldy8iIHRhcmdldD0iX0JMQU5LIiA+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpdGVtcHJvcD0icmV2aWV3Qm9keSI+JnF1b3Q7VmFsaWVudGUgeSBjb24gY29uc2NpZW5jaWEgcHJvcGlhLiBBdGFjYSBzaW4gY29udGVtcGxhY2lvbmVzIGEgbG9zIG1lZGlvcyBkZSBjb211bmljYWNpw7NuIHkgYSBzdSBuZWNlc2lkYWQgZGUgY29udHJvbGFyIHkgZXRpcXVldGFyIHRvZG8gbG8gcXVlIHN1Y2VkZSBlbiBsYSB2aWRhIHJlYWwgKOKApikgUHVudHVhY2nDs246ICYjOTczMzsmIzk3MzM7JiM5NzMzOyYjOTczMzsmIzk3MzM7IChzb2JyZSA1KSZxdW90OyZuYnNwOzxpIGNsYXNzPSdmYXMgZmEtZXh0ZXJuYWwtbGluay1hbHQnPjwvaT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm8tY3JpdC1tZWQiIGl0ZW1wcm9wPSJhdXRob3IiPkFkYW0gU21pdGg6IEVtcGlyZSA8aSBhbHQ9InRlbmRlbmNpYSBkZSBsYSBjcsOtdGljYTogcG9zaXRpdmEiIHRpdGxlPSJ0ZW5kZW5jaWEgZGUgbGEgY3LDrXRpY2E6IHBvc2l0aXZhIiBjbGFzcz0iZmFzIGZhLWNpcmNsZSAgcG9zIj48L2k+PC9kaXY+CgoKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgIDxsaSA+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm8tcmV2aWV3IiBpdGVtcHJvcD0icmV2aWV3IiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1JldmlldyI+CgogICAgICAgICAgICAgICAgICAgIDxhIHRpdGxlPSJMZWVyIGNyw610aWNhIGNvbXBsZXRhIiBocmVmPSJodHRwOi8vYXJ0aWNsZXMuY2hpY2Fnb3RyaWJ1bmUuY29tLzE5OTgtMDYtMDUvZW50ZXJ0YWlubWVudC85ODA2MDUwMDk4XzFfdHJ1bWFuLWJ1cmJhbmstdHJ1bWFuLXNob3ctc2VhaGF2ZW4iIHRhcmdldD0iX0JMQU5LIiA+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpdGVtcHJvcD0icmV2aWV3Qm9keSI+JnF1b3Q7RXMgYSBsYSB2ZXogc8OhdGlyYSwgY29tZWRpYSB5IGZhbnRhc8OtYSBzb2JyZSBlbCBmdXR1cm8gZGUgbGEgVFYgeSBkZSBjw7NtbyBsYSBnZW50ZSBzZSB2ZXLDoSBhdHJhcGFkYSBlbiBsYXMgcmVkZXMgZGUgbGEgb21uaXByZXNlbnRlIHRlY25vbG9nw61hICjigKYpIFB1bnR1YWNpw7NuOiAmIzk3MzM7JiM5NzMzOyYjOTczMzsmIzk3MzM7IChzb2JyZSA0KSZxdW90OyZuYnNwOzxpIGNsYXNzPSdmYXMgZmEtZXh0ZXJuYWwtbGluay1hbHQnPjwvaT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm8tY3JpdC1tZWQiIGl0ZW1wcm9wPSJhdXRob3IiPk1pY2hhZWwgV2lsbWluZ3RvbjogQ2hpY2FnbyBUcmlidW5lIDxpIGFsdD0idGVuZGVuY2lhIGRlIGxhIGNyw610aWNhOiBwb3NpdGl2YSIgdGl0bGU9InRlbmRlbmNpYSBkZSBsYSBjcsOtdGljYTogcG9zaXRpdmEiIGNsYXNzPSJmYXMgZmEtY2lyY2xlICBwb3MiPjwvaT48L2Rpdj4KCgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgPGxpID4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByby1yZXZpZXciIGl0ZW1wcm9wPSJyZXZpZXciIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvUmV2aWV3Ij4KCiAgICAgICAgICAgICAgICAgICAgPGEgdGl0bGU9IkxlZXIgY3LDrXRpY2EgY29tcGxldGEiIGhyZWY9Imh0dHA6Ly9jb21tdW5pdHkuc2VhdHRsZXRpbWVzLm53c291cmNlLmNvbS9hcmNoaXZlLz9kYXRlPTE5OTgwNjA1JnNsdWc9Mjc1NDQ4OCIgdGFyZ2V0PSJfQkxBTksiID4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGl0ZW1wcm9wPSJyZXZpZXdCb2R5Ij4mcXVvdDtVbmEgZGUgZXNhcyBwZWzDrWN1bGFzIHF1ZSBzZSBxdWVkYSBlbiBsYSBtZW1vcmlhIGR1cmFudGUgbXVjaG8gdGllbXBvLCB5IGRlIGxhcyBwb2NhcyBxdWUgc29uIGNhcGFjZXMgZGUgY2FtYmlhciBudWVzdHJhIGZvcm1hIGRlIGVudGVuZGVyIGxhIHZpZGEgeSBlbCBtdW5kby4mcXVvdDsmbmJzcDs8aSBjbGFzcz0nZmFzIGZhLWV4dGVybmFsLWxpbmstYWx0Jz48L2k+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvLWNyaXQtbWVkIiBpdGVtcHJvcD0iYXV0aG9yIj5Ub20gS2VvZ2g6IFNlYXR0bGUgVGltZXMgPGkgYWx0PSJ0ZW5kZW5jaWEgZGUgbGEgY3LDrXRpY2E6IHBvc2l0aXZhIiB0aXRsZT0idGVuZGVuY2lhIGRlIGxhIGNyw610aWNhOiBwb3NpdGl2YSIgY2xhc3M9ImZhcyBmYS1jaXJjbGUgIHBvcyI+PC9pPjwvZGl2PgoKCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+PGVtPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvcHJvLXJldmlld3MucGhwP21vdmllLWlkPTUwNDg4OSI+TW9zdHJhciA1IGNyw610aWNhcyBtw6FzIDxpIGNsYXNzPSJmYXMgZmEtY2hldnJvbi1yaWdodCBzdHJpcC1kb3duIj48L2k+PC9hPjwvZW0+PC9saT4KCiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kZD4KICAgIDwvZGw+CgogICAgICAgIDxkbCBjbGFzcz0ibWFyZ2luLXRvcCBtb3ZpZS1pbmZvIj4KICAgICAgICAgICAgPGEgbmFtZT0ibXlyZXZpZXciPjwvYT4KICAgICAgICAgICAgPGR0IGlkPSJteXJldmlld3QiPlR1IGNyw610aWNhPC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hcmdpbi1ib3R0b20gYWRkLXJldmlldy13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmV2dGV4dCIgZGF0YS1tb3ZpZS1pZD0iNTA0ODg5IiBjb250ZW50ZWRpdGFibGU9ImZhbHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+RXNjcmliZSB0dSBvcGluacOzbiBwYXJhIHF1ZSBlbCByZXN0byBkZSBsb3MgdXN1YXJpb3MgbGEgcHVlZGEgbGVlci48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvYWRkcmV2aWV3LnBocD9tb3ZpZV9pZD01MDQ4ODkiPjxzbWFsbD5Bw7FhZGUgdHUgY3LDrXRpY2E8L3NtYWxsPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgPC9kbD4KCgogICAgPGRsIGNsYXNzPSJtYXJnaW4tdG9wIG1vdmllLWluZm8iPgogICAgICAgIDxkdCBzdHlsZT0icGFkZGluZy1ib3R0b206IDUwcHg7Ij5Wb3RhY2lvbmVzIGRlIGFsbWFzIGdlbWVsYXM8L2R0PgogICAgICAgIDxkZCBzdHlsZT0icGFkZGluZy1ib3R0b206IDUwcHg7Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWFyZ2luLWJvdHRvbSIgaWQ9InNtLW0tcmF0Ij4KICAgICAgICAgICAgICAgIA0KICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvcmVnaXN0ZXIucGhwIj5SZWfDrXN0cmF0ZTwvYT4geSBwb2Ryw6FzIGFjY2VkZXIgYSByZWNvbWVuZGFjaW9uZXMgcGVyc29uYWxpemFkYXMgc2Vnw7puIHR1cyBndXN0b3MgZGUgY2luZSAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGQ+CgogICAgICAgIDxkdD5Wb3RhY2lvbmVzIGRlIHR1cyBhbWlnb3M8L2R0PgogICAgICAgIDxkZD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWFyZ2luLWJvdHRvbSIgaWQ9ImZyLW0tcmF0Ij4KICAgICAgICAgICAgICAgIDxkaXY+PGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9yZWdpc3Rlci5waHAiPlJlZ8Otc3RyYXRlPC9hPiB5IHBvZHLDoXMgYWNjZWRlciBhIHRvZGFzIGxhcyB2b3RhY2lvbmVzIGRlIHR1cyBhbWlnb3MsIGZhbWlsaWFyZXMsIGV0Yy48L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGQ+CiAgICA8L2RsPgoKICAgIDxzY3JpcHQ+CiAgICAgICAgJChmdW5jdGlvbigpewogICAgICAgICAgICAkKCcjbGlzdC10b3AtcmFuayAuc2hvdy1hbGwgYScpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICQoJyNsaXN0LXRvcC1yYW5rIC5zaG93LWFsbCcpLmhpZGUoKTsKICAgICAgICAgICAgICAgJCgnI2xpc3QtdG9wLXJhbmsgbGknKS5zaG93KCk7CiAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcjbGlzdC10b3AtcmFuayBsaScpLmVhY2goZnVuY3Rpb24oaW5keCwgdmFsdWUpewogICAgICAgICAgICAgICAgJCh2YWx1ZSkuYXR0cigndGl0bGUnLCAkKHZhbHVlKS5maW5kKCdlbScpLnRleHQoKS5tYXRjaCgvXGQrLykgKyAnIGFwYXJpY2lvbmVzIGVuIGVzdGEgbGlzdGEnKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICA8L3NjcmlwdD4KICAgIDxkbCBjbGFzcz0ibWFyZ2luLXRvcCBtb3ZpZS1pbmZvIj4KICAgICAgICA8ZHQ+UG9zaWNpw7NuIHJhbmtpbmdzIGxpc3RhczwvZHQ+CiAgICAgICAgPGRkIGlkPSJsaXN0LXRvcC1yYW5rIiBjbGFzcz0ibm8tcGFkZGluZyI+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+PHN0cm9uZz4xMjwvc3Ryb25nPiA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2xpc3R0b3Btb3ZpZXMucGhwP2xpc3RfaWQ9NTE5Ij5QZWzDrWN1bGFzIGluZnJhdmFsb3JhZGFzPC9hPiA8ZW0+KDExMyk8L2VtPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgPjxzdHJvbmc+MTU8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9saXN0dG9wbW92aWVzLnBocD9saXN0X2lkPTUwMCI+UGVsw61jdWxhcyBhcGFyZW50ZW1lbnRlIG5vcm1hbGVzIHF1ZSB0aWVuZW4gYWxnbyBlc3BlY2lhbCBwYXJhIG3DrTwvYT4gPGVtPigxMDcpPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpID48c3Ryb25nPjE2PC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbGlzdHRvcG1vdmllcy5waHA/bGlzdF9pZD04MzAiPlBlbMOtY3VsYXMgY29uIGVsIHBvc3RlciBtw6FzIG9yaWdpbmFsL2N1cmlvc28gZGUgbGEgaGlzdG9yaWEgZGVsIGNpbmU8L2E+IDxlbT4oNyk8L2VtPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgPjxzdHJvbmc+MTk8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9saXN0dG9wbW92aWVzLnBocD9saXN0X2lkPTUwOSI+TWlzIHBlbMOtY3VsYXMgcHJlZmVyaWRhcyBkZSBsb3MgOTA8L2E+IDxlbT4oMzA4KTwvZW0+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+PHN0cm9uZz4yMTwvc3Ryb25nPiA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2xpc3R0b3Btb3ZpZXMucGhwP2xpc3RfaWQ9NTMwIj5QZWzDrWN1bGFzIGNvbiBtZWpvciBndWnDs248L2E+IDxlbT4oOTYpPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpID48c3Ryb25nPjI3PC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbGlzdHRvcG1vdmllcy5waHA/bGlzdF9pZD01MTciPlBlbMOtY3VsYXMgcXVlIG1lIGd1c3Rhcm9uIG3DoXMgbGEgMsKqIHZleiBxdWUgbGFzIHZpPC9hPiA8ZW0+KDM2KTwvZW0+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+PHN0cm9uZz4zNDwvc3Ryb25nPiA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2xpc3R0b3Btb3ZpZXMucGhwP2xpc3RfaWQ9MzAwIj5NaXMgZHJhbWFzIGZhdm9yaXRvczwvYT4gPGVtPigyNjcpPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpID48c3Ryb25nPjM4PC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbGlzdHRvcG1vdmllcy5waHA/bGlzdF9pZD02MDAiPlBlbMOtY3VsYXMgY29uIG1lam9yZXMgZmluYWxlczwvYT4gPGVtPigyMDQpPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpID48c3Ryb25nPjQ0PC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbGlzdHRvcG1vdmllcy5waHA/bGlzdF9pZD01MjYiPlBlbMOtY3VsYXMgY29uIHVuYSBpbnRlcnByZXRhY2nDs24gbWFzY3VsaW5hIGlub2x2aWRhYmxlPC9hPiA8ZW0+KDg3KTwvZW0+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSA+PHN0cm9uZz41MTwvc3Ryb25nPiA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2xpc3R0b3Btb3ZpZXMucGhwP2xpc3RfaWQ9ODAwIj5QZWzDrWN1bGFzIGNvbiBtZWpvciBwb3N0ZXIgb3JpZ2luYWwgZGUgbGEgaGlzdG9yaWEgZGVsIGNpbmUgKE1pcyBwb3N0ZXJzIGZhdm9yaXRvcyk8L2E+IDxlbT4oMjkpPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjxzdHJvbmc+NTI8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9saXN0dG9wbW92aWVzLnBocD9saXN0X2lkPTg5MCI+UGVsw61jdWxhcyBxdWUgbWUgZW5jYW50YW4geSBxdWUgbm8gZ3VzdGFuIGEgdG9kb3M8L2E+IDxlbT4oMTApPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjxzdHJvbmc+NjE8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9saXN0dG9wbW92aWVzLnBocD9saXN0X2lkPTMwMSI+TWlzIGNvbWVkaWFzIHByZWZlcmlkYXM8L2E+IDxlbT4oMjAzKTwvZW0+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBzdHlsZT0iZGlzcGxheTpub25lIj48c3Ryb25nPjYzPC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbGlzdHRvcG1vdmllcy5waHA/bGlzdF9pZD02MjAiPlBlbMOtY3VsYXMgcXVlIG3DoXMgbWUgaGFuIGVtb2Npb25hZG88L2E+IDxlbT4oNjMpPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjxzdHJvbmc+Njk8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9saXN0dG9wbW92aWVzLnBocD9saXN0X2lkPTEwMCI+TWlzIHBlbMOtY3VsYXMgZmF2b3JpdGFzPC9hPiA8ZW0+KDI5MTgpPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjxzdHJvbmc+NzE8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9saXN0dG9wbW92aWVzLnBocD9saXN0X2lkPTcwMCI+UGVsw61jdWxhcyBxdWUgbcOhcyB2ZWNlcyBoZSB2aXN0bzwvYT4gPGVtPigxMDcpPC9lbT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjxzdHJvbmc+NzE8L3N0cm9uZz4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmlsbWFmZmluaXR5LmNvbS9lcy9saXN0dG9wbW92aWVzLnBocD9saXN0X2lkPTg4MCI+U2kgbm8gdGUgZ3VzdGFuIGVzdGFzIHBlbMOtY3VsYXMgYSBtw60gbmkgbWUgaGFibGVzPC9hPiA8ZW0+KDIxKTwvZW0+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBzdHlsZT0iZGlzcGxheTpub25lIj48c3Ryb25nPjgxPC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbGlzdHRvcG1vdmllcy5waHA/bGlzdF9pZD0yMDIiPlBlbMOtY3VsYXMgcXVlIHF1aWVybyB0ZW5lci9jb21wcmFyPC9hPiA8ZW0+KDEwNik8L2VtPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PHN0cm9uZz44NTwvc3Ryb25nPiA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2xpc3R0b3Btb3ZpZXMucGhwP2xpc3RfaWQ9NTExIj5NaXMgcGVsw61jdWxhcyAmcXVvdDtwYXJhIHRvZGEgbGEgZmFtaWxpYSZxdW90OyBwcmVmZXJpZGFzPC9hPiA8ZW0+KDIwKTwvZW0+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBzdHlsZT0iZGlzcGxheTpub25lIj48c3Ryb25nPjkwPC9zdHJvbmc+IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvbGlzdHRvcG1vdmllcy5waHA/bGlzdF9pZD0zNjUiPkxhcyBwZWzDrWN1bGFzIG3DoXMgcmFyYXMgcXVlIGhlIHZpc3RvPC9hPiA8ZW0+KDQyKTwvZW0+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2hvdy1hbGwiPjxhIGhyZWY9IiMiPk1vc3RyYXIgbGFzIDE5IGxpc3RhczwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2RkPgogICAgPC9kbD4KCiAgICA8ZGl2IGNsYXNzPSJtb3ZpZS1kaXNjbGFpbWVyIiBzdHlsZT0ibWFyZ2luLXRvcDogNjBweDsgIj4KCgoKICAgICAgICA8cD5TaSBhbGd1bmEgc2lub3BzaXMgY3VlbnRhIGRlbWFzaWFkb3MgZGV0YWxsZXMgZGVsIGFyZ3VtZW50byAtbyBwYXJhIGNvcnJlZ2lyIGVycm9yZXMgbyBjb21wbGV0YXIgZGF0b3MgZGUgbGEgZmljaGEgbyBmZWNoYSBkZSBlc3RyZW5vLSBwdWVkZXMgbWFuZGFybm9zIHVuIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZpbG1hZmZpbml0eS5jb20vZXMvaW1zZW5kbXNnLnBocD90bz05ODU0NjIiPm1lbnNhamU8L2E+LiBTaSBubyBlc3TDoXMgcmVnaXN0cmFkQCBwdWVkZXMgY29udGFjdGFybm9zIHbDrWEgVHdpdHRlciwgRkIgbyBwb3IgZW1haWwgYSBpbmZvIC1hcnJvYmEtIGZpbG1hZmZpbml0eSAtcHVudG8tIGNvbS4NCjxwPkxvcyBkZXJlY2hvcyBkZSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgZGUgbGFzIGNyw610aWNhcyBjb3JyZXNwb25kZW4gYSBsb3MgY29ycmVzcG9uZGllbnRlcyBjcsOtdGljb3MgeS9vIG1lZGlvcyBkZSBjb211bmljYWNpw7NuIGRlIGxvcyBxdWUgaGFuIHNpZG8gZXh0cmHDrWRvcy4gRmlsbWFmZmluaXR5IG5vIHRpZW5lIHJlbGFjacOzbiBhbGd1bmEgY29uIGVsIHByb2R1Y3RvciwgcHJvZHVjdG9yYSBvIGVsIGRpcmVjdG9yIGRlIGxhIHBlbMOtY3VsYS4gRWwgY29weXJpZ2h0IGRlbCBwb3N0ZXIsIGNhcsOhdHVsYSwgZm90b2dyYW1hcywgZm90b2dyYWbDrWFzIGUgaW3DoWdlbmVzIGRlIGNhZGEgRFZELCBWT0QsIEJsdS1yYXksIHRyw6FpbGVyIHkgYmFuZGEgc29ub3JhIG9yaWdpbmFsIChCU08pIHBlcnRlbmVjZW4gYSBsYXMgY29ycmVzcG9uZGllbnRlcyBwcm9kdWN0b3JhcyB5L28gZGlzdHJpYnVpZG9yYXMuPC9wPgogICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+CjwvZGl2PgogICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctdG9wOiA1MHB4OyBjbGVhcjogYm90aDsiPjxkaXY+DQogICAgICAgICAgICAgIDwvdGQ+DQogICAgPC90cj4NCjwvdGFibGU+DQo8L2Rpdj4NCjxkaXYgaWQ9ImJwYW5lbCI+DQo8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzogMTBweCI+DQogICAgICA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL2ZhcS5waHAiPlByZWd1bnRhcyBtw6FzIGZyZWN1ZW50ZXM8L2E+DQogICAgfCA8YSBocmVmPSJodHRwczovL3d3dy5maWxtYWZmaW5pdHkuY29tL2VzL3ByaXZhdGUucGhwIiA+UG9sw610aWNhIGRlIHByaXZhY2lkYWQgLyBjb25kaWNpb25lcyBkZSB1c288L2E+DQogICAgfCA8YSBvbmNsaWNrPSJ3aW5kb3cuX190Y2ZhcGkoJ2Rpc3BsYXlDb25zZW50VWknLCAyLCBmdW5jdGlvbigpIHt9ICk7IiBpZD0icHJpdmFjeS1jb25maWctMiIgaHJlZj0iIyI+Q29uZmlndXJhY2nDs24gZGUgcHJpdmFjaWRhZDwvYT4NCiAgICB8IDxhIGhyZWY9Imh0dHBzOi8vbS5maWxtYWZmaW5pdHkuY29tL2VzL21vdmllLnBocD9pZD01MDQ4ODkiPjxzdHJvbmc+SXIgYSBWZXJzacOzbiBNw5NWSUw8L3N0cm9uZz48L2E+DQo8L2Rpdj4NCjxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOiAxMHB4IDJweCI+DQogICAgPHNwYW4gY2xhc3M9InN1YnRleHQiPsKpIDIwMDItMjAyMCBGaWxtYWZmaW5pdHkgLSBNb3ZpZWFmZmluaXR5IHwgRmlsbWFmZmluaXR5IGVzIHVuYSBww6FnaW5hIGRlIHJlY29tZW5kYWNpw7NuIGRlIHBlbMOtY3VsYXMgeSBzZXJpZXMsIHkgZXMgdW4gbWVkaW8gdG90YWxtZW50ZSBpbmRlcGVuZGllbnRlIGN1eWEgcHJpbmNpcGFsIHByaW9yaWRhZCBlcyBsYSBwcml2YWNpZGFkIHkgc2VndXJpZGFkIGRlIGxvcyBkYXRvcyBkZSBzdXMgdXN1YXJpb3MuPGJyPkFsbCBSaWdodHMgUmVzZXJ2ZWQgLSBUb2RvcyBsb3MgZGVyZWNob3MgcmVzZXJ2YWRvczwvc3Bhbj4NCjwvZGl2Pg0KPC9kaXY+DQoNCg0KDQoNCg0KDQoNCgoKCgoKDQo8L2JvZHk+DQo8L2h0bWw+DQo=
58
+ recorded_at: Mon, 12 Oct 2020 21:41:10 GMT
59
+ recorded_with: VCR 6.0.0