From 4ab89765ed0c09c8d63830bf4dee12d0a60171ea Mon Sep 17 00:00:00 2001 From: jazairi <16103405+jazairi@users.noreply.github.com> Date: Tue, 10 Mar 2026 13:34:35 -0700 Subject: [PATCH] Fix configurable pagination Why these changes are being introduced: Configuring the results per page to a non-default number yielded unexpected numbers of results. This was because the per-page value is set at multiple points in the query processing chain, and not always consistently. Relevant ticket(s): - [USE-442](https://mitlibraries.atlassian.net/browse/USE-442) How this addresses that need: This updates how results per page is defined for TIMDEX queries. `SearchController#fetch_timdex_data`, now ensures that `per_page` is always set by checking env and falling back to the default value of '20'. This mirrors how the value is set for the corresponding Primo method. The query param name is also updated from `size` to `perPage`. That change had been made in TIMDEX API, but we forgot to make it here. Side effects of this change: - Some cassettes were regenerated. - We should, at some point, evaluate whether it's possible to simplify the query processing chain. --- .env.test | 1 + app/controllers/search_controller.rb | 2 +- test/models/analyzer_test.rb | 37 ++++++++++++ test/vcr_cassettes/timdex_error.yml | 77 +++++++++--------------- test/vcr_cassettes/timdex_no_results.yml | 16 ++--- 5 files changed, 77 insertions(+), 56 deletions(-) diff --git a/.env.test b/.env.test index e39230dd..ced71e2b 100644 --- a/.env.test +++ b/.env.test @@ -10,6 +10,7 @@ PRIMO_API_URL=https://api-na.hosted.exlibrisgroup.com/primo/v1 PRIMO_SCOPE=cdi PRIMO_TAB=all PRIMO_VID=01MIT_INST:MIT +RESULTS_PER_PAGE=20 SYNDETICS_PRIMO_URL=https://syndetics.com/index.php?client=primo TACOS_HOST=FAKE_TACOS_HOST TACOS_URL=http://FAKE_TACOS_HOST/graphql diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb index 40d13bb0..a543aba2 100644 --- a/app/controllers/search_controller.rb +++ b/app/controllers/search_controller.rb @@ -160,7 +160,7 @@ def fetch_primo_data(offset: nil, per_page: nil) def fetch_timdex_data(offset: nil, per_page: nil) query = QueryBuilder.new(@enhanced_query).query query['from'] = offset.to_s if offset - query['size'] = per_page.to_s if per_page + query['perPage'] = per_page || ENV.fetch('RESULTS_PER_PAGE', '20').to_i query['fulltext'] = true if Feature.enabled?(:timdex_fulltext) response = query_timdex(query) diff --git a/test/models/analyzer_test.rb b/test/models/analyzer_test.rb index 74140ab5..bb51fcc8 100644 --- a/test/models/analyzer_test.rb +++ b/test/models/analyzer_test.rb @@ -318,4 +318,41 @@ class AnalyzerTest < ActiveSupport::TestCase assert_equal 100, pagination[:end] # 2 * 50 end end + + test 'analyzer correctly handles configurable results per page' do + eq = { + q: 'data', + page: 1 + } + + ClimateControl.modify RESULTS_PER_PAGE: '50' do + pagination = Analyzer.new(eq, 500, :timdex).pagination + + assert_equal 50, pagination[:per_page] + assert_equal 1, pagination[:start] + assert_equal 50, pagination[:end] + assert_equal 2, pagination[:next] + refute pagination.key?(:prev) + end + end + + test 'analyzer correctly handles configurable results per page for all tab' do + eq = { + q: 'data', + page: 1 + } + + ClimateControl.modify RESULTS_PER_PAGE: '50' do + pagination = Analyzer.new(eq, 500, :all, 300).pagination + + # Combined hits: 300 + 500 = 800 + # Page 1 with 50 per page: 1-50 of 800 + assert_equal 50, pagination[:per_page] + assert_equal 800, pagination[:hits] + assert_equal 1, pagination[:start] + assert_equal 50, pagination[:end] + assert_equal 2, pagination[:next] + refute pagination.key?(:prev) + end + end end diff --git a/test/vcr_cassettes/timdex_error.yml b/test/vcr_cassettes/timdex_error.yml index 20141607..36595f4f 100644 --- a/test/vcr_cassettes/timdex_error.yml +++ b/test/vcr_cassettes/timdex_error.yml @@ -2,7 +2,7 @@ http_interactions: - request: method: post - uri: https://FAKE_TIMDEX_HOST/graphql + uri: http://FAKE_TIMDEX_HOST/graphql/ body: encoding: UTF-8 string: '{"query":"query TimdexSearch__BaseQuery($q: String, $citation: String, @@ -26,12 +26,12 @@ http_interactions: {\n kind\n restrictions\n text\n url\n }\n notes {\n kind\n value\n }\n highlight {\n matchedField\n matchedPhrases\n }\n provider\n rights {\n kind\n description\n uri\n }\n sourceLink\n summary\n subjects - {\n kind\n value\n }\n citation\n }\n aggregations {\n accessToFiles - {\n key\n docCount\n }\n contentType {\n key\n docCount\n }\n contributors - {\n key\n docCount\n }\n format {\n key\n docCount\n }\n languages - {\n key\n docCount\n }\n literaryForm {\n key\n docCount\n }\n places - {\n key\n docCount\n }\n source {\n key\n docCount\n }\n subjects - {\n key\n docCount\n }\n }\n }\n}","variables":{"from":"0","q":"poverty","booleanType":"AND","index":"FAKE_TIMDEX_INDEX","fulltext":true},"operationName":"TimdexSearch__BaseQuery"}' + {\n kind\n value\n }\n citation\n }\n aggregations + {\n accessToFiles {\n key\n docCount\n }\n contentType + {\n key\n docCount\n }\n contributors {\n key\n docCount\n }\n format + {\n key\n docCount\n }\n languages {\n key\n docCount\n }\n literaryForm + {\n key\n docCount\n }\n places {\n key\n docCount\n }\n source + {\n key\n docCount\n }\n subjects {\n key\n docCount\n }\n }\n }\n}","variables":{"from":"0","q":"poverty","booleanType":"AND","index":"FAKE_TIMDEX_INDEX","perPage":20,"fulltext":true},"operationName":"TimdexSearch__BaseQuery"}' headers: Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 @@ -46,49 +46,32 @@ http_interactions: code: 500 message: Internal Server Error headers: - Server: - - Cowboy - Date: - - Wed, 20 Mar 2024 15:53:37 GMT + Content-Length: + - '46' + Content-Type: + - application/json; charset=UTF-8 + Nel: + - '{"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}' Report-To: - - '{"group":"heroku-nel","max_age":3600,"endpoints":[{"url":"https://nel.heroku.com/reports?ts=1710950017&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&s=EpPd6%2BxPsRBfJqsCEGw8En%2Bl8IeCWikhI%2FF6eOm478I%3D"}]}' + - '{"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=qXzpfpp4s90bI3DL4tKbpNW5SzBdOl5q9Z5koorltjA%3D\u0026sid=67ff5de4-ad2b-4112-9289-cf96be89efed\u0026ts=1773174537"}],"max_age":3600}' Reporting-Endpoints: - - heroku-nel=https://nel.heroku.com/reports?ts=1710950017&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&s=EpPd6%2BxPsRBfJqsCEGw8En%2Bl8IeCWikhI%2FF6eOm478I%3D - Nel: - - '{"report_to":"heroku-nel","max_age":3600,"success_fraction":0.005,"failure_fraction":0.05,"response_headers":["Via"]}' - Connection: - - keep-alive - X-Frame-Options: - - SAMEORIGIN - X-Xss-Protection: - - '0' - X-Content-Type-Options: - - nosniff - X-Permitted-Cross-Domain-Policies: - - none - Referrer-Policy: - - strict-origin-when-cross-origin - Content-Type: - - application/json; charset=utf-8 - Vary: - - Accept, Origin - Etag: - - W/"0b38dfd851fa89eafcea03ea1acc3d17" - Cache-Control: - - max-age=0, private, must-revalidate - X-Request-Id: - - 56786e6a-7891-47b6-b327-9bf68fd29792 - X-Runtime: - - '0.443616' + - heroku-nel="https://nel.heroku.com/reports?s=qXzpfpp4s90bI3DL4tKbpNW5SzBdOl5q9Z5koorltjA%3D&sid=67ff5de4-ad2b-4112-9289-cf96be89efed&ts=1773174537" + Server: + - Heroku Strict-Transport-Security: - max-age=63072000; includeSubDomains - Content-Length: - - '58000' + Vary: + - Origin Via: - - 1.1 vegur + - 1.1 heroku-router + X-Request-Id: + - a6fa8e25-52c2-de63-acc7-a4b9e1d8d211 + X-Runtime: + - '0.065401' + Date: + - Tue, 10 Mar 2026 20:28:57 GMT body: - encoding: ASCII-8BIT - string: !binary |- - eyJkYXRhIjp7InNlYXJjaCI6eyJoaXRzIjoxMDAwMCwicmVjb3JkcyI6W3sidGltZGV4UmVjb3JkSWQiOiJnaXNvZ206ZWR1LnN0YW5mb3JkLnB1cmw6MzU0YmRmNjMzOGZmIiwidGl0bGUiOiJQb3ZlcnR5IExldmVsLCBWZW5lenVlbGEsIDIwMTEiLCJjb250ZW50VHlwZSI6WyJQb2x5Z29uIGRhdGEiXSwiY29udHJpYnV0b3JzIjpbeyJraW5kIjoiQ3JlYXRvciIsInZhbHVlIjoiRWFzdCBWaWV3IENhcnRvZ3JhcGhpYywgSW5jIn0seyJraW5kIjoiQ3JlYXRvciIsInZhbHVlIjoiSW5zdGl0dXRvIE5hY2lvbmFsIGRlIEVzdGFkw61zdGljYSAoVmVuZXp1ZWxhKSJ9XSwicHVibGljYXRpb25JbmZvcm1hdGlvbiI6bnVsbCwiZGF0ZXMiOlt7ImtpbmQiOiJJc3N1ZWQiLCJ2YWx1ZSI6IjIwMTgifSx7ImtpbmQiOiJDb3ZlcmFnZSIsInZhbHVlIjoiMjAxMSJ9XSwibGlua3MiOlt7ImtpbmQiOiJEb3dubG9hZCIsInJlc3RyaWN0aW9ucyI6bnVsbCwidGV4dCI6IkRhdGEiLCJ1cmwiOiJodHRwczovL3N0YWNrcy5zdGFuZm9yZC5lZHUvZmlsZS9kcnVpZDpnYzI3MGZjNTUwNC9kYXRhLnppcCJ9LHsia2luZCI6IldlYnNpdGUiLCJyZXN0cmljdGlvbnMiOm51bGwsInRleHQiOiJXZWJzaXRlIiwidXJsIjoiaHR0cHM6Ly9wdXJsLnN0YW5mb3JkLmVkdS9nYzI3MGZjNTUwNCJ9XSwibm90ZXMiOm51bGwsImhpZ2hsaWdodCI6W3sibWF0Y2hlZEZpZWxkIjoic3VtbWFyeSIsIm1hdGNoZWRQaHJhc2VzIjpbIlRoaXMgcG9seWdvbiBzaGFwZWZpbGUgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHBlcnNvbnMgbGl2aW5nIGluIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZXBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBhY2NvcmRpbmcgdG8gdGhlIDIwMTEgQ2Vuc3VzIiwiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIExldmVsLCBWZW5lenVlbGEsIDIwMTEuIEVhc3QgVmlldyBDYXJ0b2dyYXBoaWMsIEluYy4uIl19LHsibWF0Y2hlZEZpZWxkIjoiY2l0YXRpb24iLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgTGV2ZWwsIFZlbmV6dWVsYSwgMjAxMS4gRWFzdCBWaWV3IENhcnRvZ3JhcGhpYywgSW5jLi4iXX0seyJtYXRjaGVkRmllbGQiOiJ0aXRsZS5leGFjdF92YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHkgTGV2ZWwsIFZlbmV6dWVsYSwgMjAxMVx1MDAzYy9zcGFuXHUwMDNlIl19LHsibWF0Y2hlZEZpZWxkIjoidGl0bGUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgTGV2ZWwsIFZlbmV6dWVsYSwgMjAxMSJdfSx7Im1hdGNoZWRGaWVsZCI6InN1YmplY3RzLnZhbHVlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIl19XSwicHJvdmlkZXIiOiJTdGFuZm9yZCIsInJpZ2h0cyI6W3sia2luZCI6IkFjY2VzcyByaWdodHMiLCJkZXNjcmlwdGlvbiI6IlJlc3RyaWN0ZWQiLCJ1cmkiOm51bGx9LHsia2luZCI6IkFjY2VzcyB0byBmaWxlcyIsImRlc2NyaXB0aW9uIjoiTm90IG93bmVkIGJ5IE1JVCIsInVyaSI6bnVsbH1dLCJzb3VyY2VMaW5rIjoiaHR0cHM6Ly9wdXJsLnN0YW5mb3JkLmVkdS9nYzI3MGZjNTUwNCIsInN1bW1hcnkiOlsiVGhpcyBwb2x5Z29uIHNoYXBlZmlsZSByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgcGVyc29ucyBsaXZpbmcgaW4gcG92ZXJ0eSBhY2NvcmRpbmcgdG8gdGhlIDIwMTEgQ2Vuc3VzIG9mIFBvcHVsYXRpb24gYW5kIEhvdXNpbmcgaW4gVmVuZXp1ZWxhLiBUaGUgY2Vuc3VzIGluZm9ybWF0aW9uIHdhcyBjb2xsZWN0ZWQgYnkgdGhlIEluc3RpdHV0byBOYWNpb25hbCBkZSBFc3RhZGlzdGljYSBpbiBWZW5lenVlbGEgYmV0d2VlbiBTZXB0ZW1iZXIgMSBhbmQgTm92ZW1iZXIgMzAgb2YgMjAxMS4gVGhlIHF1ZXN0aW9ubmFpcmUgYW5kIHN1cnZleSByZXBvcnQgZm9yIHRoaXMgY2Vuc3VzIGluIGluY2x1ZGVkIHdpdGggdGhpcyBkb3dubG9hZC4gVGhlc2UgZGF0YSBhcmUgaW50ZW5kZWQgZm9yIHJlc2VhcmNoZXJzLCBzdHVkZW50cywgYW5kIHBvbGljeSBtYWtlcnMgZm9yIHJlZmVyZW5jZSBhbmQgbWFwcGluZyBwdXJwb3NlcywgYW5kIG1heSBiZSB1c2VkIGZvciBiYXNpYyBhcHBsaWNhdGlvbnMgc3VjaCBhcyB2aWV3aW5nLCBxdWVyeWluZywgYW5kIG1hcCBvdXRwdXQgcHJvZHVjdGlvbi4gRWFzdCBWaWV3IENhcnRvZ3JhcGhpYywgSW5jLiBhbmQgSW5zdGl0dXRvIE5hY2lvbmFsIGRlIEVzdGFkaXN0aWNhLCBWZW5lenVlbGEuKDIwMTgpLiBQb3ZlcnR5IExldmVsLCBWZW5lenVlbGEsIDIwMTEuIEVhc3QgVmlldyBDYXJ0b2dyYXBoaWMsIEluYy4uIEF2YWlsYWJsZSBhdDogaHR0cC8vcHVybC5zdGFuZm9yZC5lZHUvZ2MyNzBmYzU1MDQuIFRoaXMgbGF5ZXIgaXMgcHJlc2VudGVkIGluIHRoZSBXR1M4NCBjb29yZGluYXRlIHN5c3RlbSBmb3Igd2ViIGRpc3BsYXkgcHVycG9zZXMuIERvd25sb2FkYWJsZSBkYXRhIGFyZSBwcm92aWRlZCBpbiBuYXRpdmUgY29vcmRpbmF0ZSBzeXN0ZW0gb3IgcHJvamVjdGlvbi4iXX0seyJ0aW1kZXhSZWNvcmRJZCI6Imdpc29nbTplZHUuc3RhbmZvcmQucHVybDoxODA2ZTlhYjgyMjgiLCJ0aXRsZSI6IlBvdmVydHkgQ2Vuc3VzIFRyYWN0cywgMjAxMCIsImNvbnRlbnRUeXBlIjpbIlBvbHlnb24gZGF0YSJdLCJjb250cmlidXRvcnMiOlt7ImtpbmQiOiJDcmVhdG9yIiwidmFsdWUiOiJVbml0ZWQgU3RhdGVzLiBEZXBhcnRtZW50IG9mIEhvdXNpbmcgYW5kIFVyYmFuIERldmVsb3BtZW50In1dLCJwdWJsaWNhdGlvbkluZm9ybWF0aW9uIjpudWxsLCJkYXRlcyI6W3sia2luZCI6Iklzc3VlZCIsInZhbHVlIjoiMjAxNCJ9LHsia2luZCI6IkNvdmVyYWdlIiwidmFsdWUiOiIyMDEwIn1dLCJsaW5rcyI6W3sia2luZCI6IkRvd25sb2FkIiwicmVzdHJpY3Rpb25zIjpudWxsLCJ0ZXh0IjoiRGF0YSIsInVybCI6Imh0dHBzOi8vc3RhY2tzLnN0YW5mb3JkLmVkdS9maWxlL2RydWlkOnNiNzQydmgyMTgyL2RhdGEuemlwIn0seyJraW5kIjoiV2Vic2l0ZSIsInJlc3RyaWN0aW9ucyI6bnVsbCwidGV4dCI6IldlYnNpdGUiLCJ1cmwiOiJodHRwczovL3B1cmwuc3RhbmZvcmQuZWR1L3NiNzQydmgyMTgyIn1dLCJub3RlcyI6bnVsbCwiaGlnaGxpZ2h0IjpbeyJtYXRjaGVkRmllbGQiOiJzdW1tYXJ5IiwibWF0Y2hlZFBocmFzZXMiOlsiQ2Vuc3VzIFRyYWN0cyB3aXRoIGEgMzklIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBSYXRlIG9yIEdyZWF0ZXIuIERhdGEgQ3VycmVudCBhcyBvZjogTm92ZW1iZXIgMTAsIDIwMTQuIiwiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIENlbnN1cyBUcmFjdHMsIDIwMTAuIFVuaXRlZCBTdGF0ZXMuIERlcGFydG1lbnQgb2YgSG91c2luZyBhbmQgVXJiYW4gRGV2ZWxvcG1lbnQuIl19LHsibWF0Y2hlZEZpZWxkIjoiY2l0YXRpb24iLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgQ2Vuc3VzIFRyYWN0cywgMjAxMC4gVW5pdGVkIFN0YXRlcy4gRGVwYXJ0bWVudCBvZiBIb3VzaW5nIGFuZCBVcmJhbiBEZXZlbG9wbWVudC4iXX0seyJtYXRjaGVkRmllbGQiOiJ0aXRsZS5leGFjdF92YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHkgQ2Vuc3VzIFRyYWN0cywgMjAxMFx1MDAzYy9zcGFuXHUwMDNlIl19LHsibWF0Y2hlZEZpZWxkIjoidGl0bGUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgQ2Vuc3VzIFRyYWN0cywgMjAxMCJdfSx7Im1hdGNoZWRGaWVsZCI6InN1YmplY3RzLnZhbHVlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIl19XSwicHJvdmlkZXIiOiJTdGFuZm9yZCIsInJpZ2h0cyI6W3sia2luZCI6IkFjY2VzcyByaWdodHMiLCJkZXNjcmlwdGlvbiI6IlB1YmxpYyIsInVyaSI6bnVsbH0seyJraW5kIjoiQWNjZXNzIHRvIGZpbGVzIiwiZGVzY3JpcHRpb24iOiJOb3Qgb3duZWQgYnkgTUlUIiwidXJpIjpudWxsfV0sInNvdXJjZUxpbmsiOiJodHRwczovL3B1cmwuc3RhbmZvcmQuZWR1L3NiNzQydmgyMTgyIiwic3VtbWFyeSI6WyJUaGlzIHBvbHlnb24gc2hhcGVmaWxlIHJlcHJlc2VudHMgMjAxMCBVLlMuIENlbnN1cyBUcmFjdHMgd2l0aCBhIDM5JSBQb3ZlcnR5IFJhdGUgb3IgR3JlYXRlci4gRGF0YSBDdXJyZW50IGFzIG9mOiBOb3ZlbWJlciAxMCwgMjAxNC4gVGhpcyBsYXllciBpcyBpbnRlbmRlZCBmb3IgcmVzZWFyY2hlcnMsIHN0dWRlbnRzLCBwb2xpY3kgbWFrZXJzLCBhbmQgdGhlIGdlbmVyYWwgcHVibGljIGZvciByZWZlcmVuY2UgYW5kIG1hcHBpbmcgcHVycG9zZXMsIGFuZCBtYXkgYmUgdXNlZCBmb3IgYmFzaWMgYXBwbGljYXRpb25zIHN1Y2ggYXMgdmlld2luZywgcXVlcnlpbmcsIGFuZCBtYXAgb3V0cHV0IHByb2R1Y3Rpb24uIFRoaXMgbGF5ZXIgd2lsbCBwcm92aWRlIGEgYmFzZW1hcCBmb3IgbGF5ZXJzIHJlbGF0ZWQgdG8gc29jaW8tcG9saXRpY2FsIGFuYWx5c2lzLCBzdGF0aXN0aWNhbCBlbnVtZXJhdGlvbiBhbmQgYW5hbHlzaXMsIG9yIHRvIHN1cHBvcnQgZ3JhcGhpY2FsIG92ZXJsYXlzIGFuZCBhbmFseXNpcyB3aXRoIG90aGVyIHNwYXRpYWwgZGF0YS4gTW9yZSBhZHZhbmNlZCB1c2VyIGFwcGxpY2F0aW9ucyBtYXkgZm9jdXMgb24gZGVtb2dyYXBoaWNzLCB1cmJhbiBhbmQgcnVyYWwgbGFuZCB1c2UgcGxhbm5pbmcsIHNvY2lvLWVjb25vbWljIGFuYWx5c2lzIGFuZCByZWxhdGVkIGFyZWFzIChpbmNsdWRpbmcgZGVmaW5pbmcgYm91bmRhcmllcywgbWFuYWdpbmcgYXNzZXRzIGFuZCBmYWNpbGl0aWVzLCBpbnRlZ3JhdGluZyBhdHRyaWJ1dGUgZGF0YWJhc2VzIHdpdGggZ2VvZ3JhcGhpYyBmZWF0dXJlcywgc3BhdGlhbCBhbmFseXNpcywgYW5kIHByZXNlbnRhdGlvbiBvdXRwdXQuKSBVbml0ZWQgU3RhdGVzLiBEZXBhcnRtZW50IG9mIEhvdXNpbmcgYW5kIFVyYmFuIERldmVsb3BtZW50LiAoMjAxNCkuIFBvdmVydHkgQ2Vuc3VzIFRyYWN0cywgMjAxMC4gVW5pdGVkIFN0YXRlcy4gRGVwYXJ0bWVudCBvZiBIb3VzaW5nIGFuZCBVcmJhbiBEZXZlbG9wbWVudC4gQXZhaWxhYmxlIGF0IGh0dHA6Ly9wdXJsLnN0YW5mb3JkLmVkdS9zYjc0MnZoMjE4Mi4iXX0seyJ0aW1kZXhSZWNvcmRJZCI6Imdpc29nbTplZHUuc3RhbmZvcmQucHVybDowNDljOWViODkzMDAiLCJ0aXRsZSI6IlBvdmVydHkgQXNzZXNzbWVudCBmb3IgQ29uc3RpdHVlbmNpZXMgaW4gRWFzdGVybiBLZW55YSIsImNvbnRlbnRUeXBlIjpbIlBvbHlnb24gZGF0YSJdLCJjb250cmlidXRvcnMiOlt7ImtpbmQiOiJDcmVhdG9yIiwidmFsdWUiOiJLZW55YS4gQ2VudHJhbCBCdXJlYXUgb2YgU3RhdGlzdGljcyJ9XSwicHVibGljYXRpb25JbmZvcm1hdGlvbiI6bnVsbCwiZGF0ZXMiOlt7ImtpbmQiOiJJc3N1ZWQiLCJ2YWx1ZSI6IjIwMDUifSx7ImtpbmQiOiJDb3ZlcmFnZSIsInZhbHVlIjoiMTk5OSJ9XSwibGlua3MiOlt7ImtpbmQiOiJEb3dubG9hZCIsInJlc3RyaWN0aW9ucyI6bnVsbCwidGV4dCI6IkRhdGEiLCJ1cmwiOiJodHRwczovL3N0YWNrcy5zdGFuZm9yZC5lZHUvZmlsZS9kcnVpZDp0czM0N2Z5NDk1NS9kYXRhLnppcCJ9LHsia2luZCI6IldlYnNpdGUiLCJyZXN0cmljdGlvbnMiOm51bGwsInRleHQiOiJXZWJzaXRlIiwidXJsIjoiaHR0cHM6Ly9wdXJsLnN0YW5mb3JkLmVkdS90czM0N2Z5NDk1NSJ9XSwibm90ZXMiOm51bGwsImhpZ2hsaWdodCI6W3sibWF0Y2hlZEZpZWxkIjoic3VtbWFyeSIsIm1hdGNoZWRQaHJhc2VzIjpbIlRoaXMgcG9seWdvbiBzaGFwZWZpbGUgc2hvd3MgdGhlIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZXBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSByYXRlLCBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2Vwb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgZ2FwLCBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2Vwb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgZGVuc2l0eSBhbmQgbnVtYmVyIG9mIEtlbnlhbiBTaGlsbGluZ3MiLCIocGVyIG1vbnRoIHBlciBrbTIpIGVzdGltYXRlZCB0byBjbG9zZSB0aGUgXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlcG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIGdhcCBmb3IgY29uc3RpdHVlbmNpZXMgaW4gZWFzdGVybiBLZW55YSBmb3IgMTk5OS4iLCJJdCBpcyB1c2VkIHRvIHNob3cgZGF0YSBmb3IgZWFzdGVybiBLZW55YSwgZm9yIHdoaWNoIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZXBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBkYXRhIGZvciB0aGUgbG9jYXRpb24tIGFuZCBzdWItbG9jYXRpb24tbGV2ZWwiLCJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgQXNzZXNzbWVudCBmb3IgQ29uc3RpdHVlbmNpZXMgaW4gRWFzdGVybiBLZW55YS4gV29ybGQgUmVzb3VyY2VzIEluc3RpdHV0ZS4iXX0seyJtYXRjaGVkRmllbGQiOiJjaXRhdGlvbiIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBBc3Nlc3NtZW50IGZvciBDb25zdGl0dWVuY2llcyBpbiBFYXN0ZXJuIEtlbnlhLiBLZW55YS4gQ2VudHJhbCBCdXJlYXUgb2YgU3RhdGlzdGljcy4iXX0seyJtYXRjaGVkRmllbGQiOiJ0aXRsZS5leGFjdF92YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHkgQXNzZXNzbWVudCBmb3IgQ29uc3RpdHVlbmNpZXMgaW4gRWFzdGVybiBLZW55YVx1MDAzYy9zcGFuXHUwMDNlIl19LHsibWF0Y2hlZEZpZWxkIjoidGl0bGUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgQXNzZXNzbWVudCBmb3IgQ29uc3RpdHVlbmNpZXMgaW4gRWFzdGVybiBLZW55YSJdfSx7Im1hdGNoZWRGaWVsZCI6InN1YmplY3RzLnZhbHVlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIl19XSwicHJvdmlkZXIiOiJTdGFuZm9yZCIsInJpZ2h0cyI6W3sia2luZCI6IkFjY2VzcyByaWdodHMiLCJkZXNjcmlwdGlvbiI6IlB1YmxpYyIsInVyaSI6bnVsbH0seyJraW5kIjoiQWNjZXNzIHRvIGZpbGVzIiwiZGVzY3JpcHRpb24iOiJOb3Qgb3duZWQgYnkgTUlUIiwidXJpIjpudWxsfV0sInNvdXJjZUxpbmsiOiJodHRwczovL3B1cmwuc3RhbmZvcmQuZWR1L3RzMzQ3Znk0OTU1Iiwic3VtbWFyeSI6WyJUaGlzIHBvbHlnb24gc2hhcGVmaWxlIHNob3dzIHRoZSBwb3ZlcnR5IHJhdGUsIHBvdmVydHkgZ2FwLCBwb3ZlcnR5IGRlbnNpdHkgYW5kIG51bWJlciBvZiBLZW55YW4gU2hpbGxpbmdzIChwZXIgbW9udGggcGVyIGttMikgZXN0aW1hdGVkIHRvIGNsb3NlIHRoZSBwb3ZlcnR5IGdhcCBmb3IgY29uc3RpdHVlbmNpZXMgaW4gZWFzdGVybiBLZW55YSBmb3IgMTk5OS4gVGhpcyBkYXRhIGlzIGRpc3BsYXllZCBpbiBNYXAgMi42LCBNYXAgMi43LCBNYXAgMi44IGFuZCBNYXAgMi45IGluIE5hdHVyZSdzIEJlbmVmaXRzIGluIEtlbnlhOiBBbiBBdGxhcyBvZiBFY29zeXN0ZW1zIGFuZCBIdW1hbiBXZWxsLUJlaW5nLiBJdCBpcyB1c2VkIHRvIHNob3cgZGF0YSBmb3IgZWFzdGVybiBLZW55YSwgZm9yIHdoaWNoIHBvdmVydHkgZGF0YSBmb3IgdGhlIGxvY2F0aW9uLSBhbmQgc3ViLWxvY2F0aW9uLWxldmVsIHdlcmUgbm90IGF2YWlsYWJsZS4gV29ybGQgUmVzb3VyY2VzIEluc3RpdHV0ZS4gKDIwMDUpLiBQb3ZlcnR5IEFzc2Vzc21lbnQgZm9yIENvbnN0aXR1ZW5jaWVzIGluIEVhc3Rlcm4gS2VueWEuIFdvcmxkIFJlc291cmNlcyBJbnN0aXR1dGUuIEF2YWlsYWJsZSBhdDogaHR0cDovL3B1cmwuc3RhbmZvcmQuZWR1L3RzMzQ3Znk0OTU1IExvY2F0aW9ucyBhcmUgdGhyaWQgbGV2ZWwgYWRtaW5pc3RyYXRpdmUgZGl2aXNpb25zIChiZWxvdyBjb3VudGllcykuIERhdGEgc2V0IGlzIG5vdCBmb3IgdXNlIGluIGxpdGlnYXRpb24uIFdoaWxlIGVmZm9ydHMgaGF2ZSBiZWVuIG1hZGUgdG8gZW5zdXJlIHRoYXQgdGhlc2UgZGF0YSBhcmUgYWNjdXJhdGUgYW5kIHJlbGlhYmxlIHdpdGhpbiB0aGUgc3RhdGUgb2YgdGhlIGFydCwgV1JJLCBjYW5ub3QgYXNzdW1lIGxpYWJpbGl0eSBmb3IgYW55IGRhbWFnZXMsIG9yIG1pc3JlcHJlc2VudGF0aW9ucywgY2F1c2VkIGJ5IGFueSBpbmFjY3VyYWNpZXMgaW4gdGhlIGRhdGEsIG9yIGFzIGEgcmVzdWx0IG9mIHRoZSBkYXRhIHRvIGJlIHVzZWQgb24gYSBwYXJ0aWN1bGFyIHN5c3RlbS4gV1JJIG1ha2VzIG5vIHdhcnJhbnR5LCBleHByZXNzZWQgb3IgaW1wbGllZCwgbm9yIGRvZXMgdGhlIGZhY3Qgb2YgZGlzdHJpYnV0aW9uIGNvbnN0aXR1dGUgc3VjaCBhIHdhcnJhbnR5LiJdfSx7InRpbWRleFJlY29yZElkIjoiYWxtYTo5OTM1MTU3MTA5MTA2NzYxIiwidGl0bGUiOiJQb3ZlcnR5LCBDaHJvbmljIFBvdmVydHkgYW5kIFBvdmVydHkgRHluYW1pY3MgUG9saWN5IEltcGVyYXRpdmVzIiwiY29udGVudFR5cGUiOlsiTGFuZ3VhZ2UgbWF0ZXJpYWwiXSwiY29udHJpYnV0b3JzIjpbeyJraW5kIjoiZWRpdG9yIiwidmFsdWUiOiJNZWh0YSwgQWFzaGEgS2FwdXIifSx7ImtpbmQiOiJlZGl0b3IiLCJ2YWx1ZSI6IkJoaWRlLCBTaGFzaGFua2EifSx7ImtpbmQiOiJlZGl0b3IiLCJ2YWx1ZSI6Ikt1bWFyLCBBbmFuZCJ9LHsia2luZCI6ImVkaXRvciIsInZhbHVlIjoiU2hhaCwgQW1pdGEifV0sInB1YmxpY2F0aW9uSW5mb3JtYXRpb24iOlsiU2luZ2Fwb3JlIDogU3ByaW5nZXIgU2luZ2Fwb3JlIDogSW1wcmludDogU3ByaW5nZXIsIDIwMTgiXSwiZGF0ZXMiOlt7ImtpbmQiOiJQdWJsaWNhdGlvbiBkYXRlIiwidmFsdWUiOiIyMDE4In1dLCJsaW5rcyI6W3sia2luZCI6IkRpZ2l0YWwgb2JqZWN0IFVSTCIsInJlc3RyaWN0aW9ucyI6bnVsbCwidGV4dCI6IlNwcmluZ2VyIE5hdHVyZSAtIFNwcmluZ2VyIEVjb25vbWljcyBhbmQgRmluYW5jZSBlQm9va3MgMjAxOCBFbmdsaXNoIEludGVybmF0aW9uYWwiLCJ1cmwiOiJodHRwczovL25hMDYtcHNiLmFsbWEuZXhsaWJyaXNncm91cC5jb20vdmlldy91cmVzb2x2ZXIvMDFNSVRfSU5TVC9vcGVudXJsP3UuaWdub3JlX2RhdGVfY292ZXJhZ2U9dHJ1ZVx1MDAyNnBvcnRmb2xpb19waWQ9NTM2MjIxMDc4OTAwMDY3NjFcdTAwMjZGb3JjZV9kaXJlY3Q9dHJ1ZSJ9XSwibm90ZXMiOlt7ImtpbmQiOiJUaXRsZSBTdGF0ZW1lbnQgb2YgUmVzcG9uc2liaWxpdHkiLCJ2YWx1ZSI6WyJlZGl0ZWQgYnkgQWFzaGEgS2FwdXIgTWVodGEsIFNoYXNoYW5rYSBCaGlkZSwgQW5hbmQgS3VtYXIsIEFtaXRhIFNoYWgiXX1dLCJoaWdobGlnaHQiOlt7Im1hdGNoZWRGaWVsZCI6InN1bW1hcnkiLCJtYXRjaGVkUGhyYXNlcyI6WyJpc3N1ZXMgdGhhdCBuZWVkIHRvIGJlIGFkZHJlc3NlZCBpZiBJbmRpYSB3aXNoZXMgdG8gYWNoaWV2ZSB0aGUgU0RHIDEgYmFzZWQgZWx1c2l2ZSBnb2FsIG9mIGVuZGluZyBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2Vwb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UiLCJJbiBpdHMgbmluZSBjaGFwdGVycywgaXQgdGFrZXMgdGhlIHJlYWRlcnMgdGhyb3VnaCB0cmVuZHMgYW5kIGVzdGltYXRlcyBvZiBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2Vwb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgaW4gSW5kaWEsIGV4cGxhaW5zIiwiY2hhbmdlcyBpbiB0aGUgd2F5IGl0IGhhcyBiZWVuIG1lYXN1cmVkIG92ZXIgdGltZSBhbmQgdGhlIGZhY3RvcnMgdGhhdCBsZWFkIHRvIHBlcnNpc3RlbmNlIG9mIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZXBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSIsIlNERyAxIG9yIOKAnGVuZGluZyBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2Vwb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgaW4gYWxsIGl0cyBmb3JtcyBldmVyeXdoZXJl4oCdIGNhbm5vdCBiZSBhY2hpZXZlZCB1bmxlc3MgcG9saWNpZXMgYW5kIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZXBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSIsImFsbGV2aWF0aW9uIHByb2dyYW1tZXMgdW5kZXJzdGFuZCBhbmQgYWRkcmVzcyBjaHJvbmljIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZXBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBhbmQgaXRzIGR5bmFtaWNzLiJdfSx7Im1hdGNoZWRGaWVsZCI6ImNvbnRlbnRzIiwibWF0Y2hlZFBocmFzZXMiOlsiQSByZXZpZXcgb2YgdGhlIER5bmFtaWNzIG9mIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZXBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSIsIkFkZHJlc3NpbmcgXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIGFuZCBDb25mbGljdDogQSBHYW5kaGlhbiBpbml0aWF0aXZlIiwiQ2hhbmdpbmcgU2NlbmFyaW8gb2YgTWlncmF0aW9uIGFuZCBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgaW4gSW5kaWE6IFJlZmxlY3Rpb25zIGFuZCBJc3N1ZXMiLCJJbGwgaGVhbHRoIGFuZCBFbnRyeSBpbnRvIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZTogV2hhdCBIYXMgV29ya2VkLCBXaGF0IEhhcyBOb3QgYW5kIFdoeSIsIkVkdWNhdGlvbiBhbmQgXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIl19LHsibWF0Y2hlZEZpZWxkIjoiY2l0YXRpb24iLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UsIENocm9uaWMgXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIGFuZCBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgRHluYW1pY3MgUG9saWN5IEltcGVyYXRpdmVzLiAyMDE4LiJdfSx7Im1hdGNoZWRGaWVsZCI6InRpdGxlLmV4YWN0X3ZhbHVlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eSwgQ2hyb25pYyBQb3ZlcnR5IGFuZCBQb3ZlcnR5IER5bmFtaWNzIFBvbGljeSBJbXBlcmF0aXZlc1x1MDAzYy9zcGFuXHUwMDNlIl19LHsibWF0Y2hlZEZpZWxkIjoidGl0bGUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UsIENocm9uaWMgXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIGFuZCBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgRHluYW1pY3MgUG9saWN5IEltcGVyYXRpdmVzIl19XSwicHJvdmlkZXIiOm51bGwsInJpZ2h0cyI6bnVsbCwic291cmNlTGluayI6Imh0dHBzOi8vbWl0LnByaW1vLmV4bGlicmlzZ3JvdXAuY29tL2Rpc2NvdmVyeS9mdWxsZGlzcGxheT92aWQ9MDFNSVRfSU5TVDpNSVRcdTAwMjZkb2NpZD1hbG1hOTkzNTE1NzEwOTEwNjc2MSIsInN1bW1hcnkiOlsiVGhpcyBib29rIGRpc2N1c3NlcyBjcml0aWNhbCBwb2xpY3kgaXNzdWVzIHRoYXQgbmVlZCB0byBiZSBhZGRyZXNzZWQgaWYgSW5kaWEgd2lzaGVzIHRvIGFjaGlldmUgdGhlIFNERyAxIGJhc2VkIGVsdXNpdmUgZ29hbCBvZiBlbmRpbmcgcG92ZXJ0eSBpbiB0aGUgY291bnRyeS4gSW4gaXRzIG5pbmUgY2hhcHRlcnMsIGl0IHRha2VzIHRoZSByZWFkZXJzIHRocm91Z2ggdHJlbmRzIGFuZCBlc3RpbWF0ZXMgb2YgcG92ZXJ0eSBpbiBJbmRpYSwgZXhwbGFpbnMgY2hhbmdlcyBpbiB0aGUgd2F5IGl0IGhhcyBiZWVuIG1lYXN1cmVkIG92ZXIgdGltZSBhbmQgdGhlIGZhY3RvcnMgdGhhdCBsZWFkIHRvIHBlcnNpc3RlbmNlIG9mIHBvdmVydHksIGRyYXdzIGF0dGVudGlvbiB0byB0aGUgZmFjdCB0aGF0IGh1bmdlciBpcyBib3RoIGEgY2F1c2UgYW5kIGFuIGVmZmVjdCBvZiBwb3ZlcnR5IGFuZCBoYXMgZ2VuZGVyIGFuZCBhZ2UgZGltZW5zaW9ucyB0b28uIFRoZSBib29rIHJldmlzaXRzIHN0cmF0ZWdpZXMgdGhhdCB3ZXJlIHN1Y2Nlc3NmdWwgaW4gYWRkcmVzc2luZyBwb3ZlcnR5IGVtYW5hdGluZyBmcm9tIHNpdHVhdGlvbnMgb2YgY29uZmxpY3QsIHByZXNlbnRzIGEgZGlzY3Vzc2lvbiBvbiBtaWdyYXRpb24gYXMgYSBjcml0aWNhbCBjb3BpbmcgbWVjaGFuaXNtIGFtb25nIHBvb3IsIGFuYWx5c2VzIHRoZSBsaW5rcyBiZXR3ZWVuIGlsbCBoZWFsdGggYW5kIHBvdmVydHkgYXMgd2VsbCBhcyBlZHVjYXRpb24gYW5kIHBvdmVydHkgdG8gZHJhdyBhdHRlbnRpb24gdG8gdGhlIHBvbGljeSBpbXBlcmF0aXZlcyB0aGF0IG5lZWQgYXR0ZW50aW9uLiBJbmRpYeKAmXMgcmVwb3J0IGNhcmQgb24gcG92ZXJ0eSByZW1haW5zIGRpc21hbCBldmVuIHRob3VnaCB0aGVyZSBpcyByZWNvZ25pdGlvbiBvZiB0aGUgaW1wb3J0YW5jZSBvZiByZWR1Y2luZyBvciBlbGltaW5hdGluZyBvciBlbmRpbmcgaXQgYXQgYm90aCBuYXRpb25hbCBhbmQgZ2xvYmFsIGxldmVscy4gRGVzcGl0ZSByYXBpZCBlY29ub21pYyBncm93dGggYW5kIGltcHJvdmVtZW50IG9uIGEgcmFuZ2Ugb2YgZGV2ZWxvcG1lbnQgaW5kaWNhdG9ycywgYW4gdW5hY2NlcHRhYmx5IGhpZ2ggcHJvcG9ydGlvbiBvZiBJbmRpYeKAmXMgcG9wdWxhdGlvbiBjb250aW51ZXMgdG8gc3VmZmVyIHBvdmVydHkgaW4gbXVsdGlwbGUgZGltZW5zaW9ucy4gU0RHIDEgb3Ig4oCcZW5kaW5nIHBvdmVydHkgaW4gYWxsIGl0cyBmb3JtcyBldmVyeXdoZXJl4oCdIGNhbm5vdCBiZSBhY2hpZXZlZCB1bmxlc3MgcG9saWNpZXMgYW5kIHBvdmVydHkgYWxsZXZpYXRpb24gcHJvZ3JhbW1lcyB1bmRlcnN0YW5kIGFuZCBhZGRyZXNzIGNocm9uaWMgcG92ZXJ0eSBhbmQgaXRzIGR5bmFtaWNzLiBUaGlzIHJlcXVpcmVzIHRoYXQgd2UgZXN0aW1hdGUgYW5kIHVuZGVyc3RhbmQgdGhlIGV4dGVudCBvZiBwb3ZlcnR5LCB0aGUgZmFjdG9ycyB0aGF0IGxlYWQgdG8gcGVvcGxlIGdldHRpbmcgc3R1Y2sgaW4gaXQgYW5kIHRoZSB3YXlzIHRoaXMgY2FuIGJlIGFkZHJlc3NlZC4gSXQgYWxzbyByZXF1aXJlcyB1bmRlcnN0YW5kaW5nIHRoZSBkeW5hbWljIG5hdHVyZSBvZiBwb3ZlcnR5IG9yIHRoZSBmYWN0IHRoYXQgbWFueSBvZiB0aG9zZSB3aG8gYXJlIHBvb3IgYXJlIGFibGUgdG8gbW92ZSBvdXQgb2YgcG92ZXJ0eSBhcyB3ZWxsIGFzIHRoZSBmYWN0IHRoYXQgbWFueSBvdGhlcnMgd2hvIGFyZSBub3QgcG9vciBiZWNvbWUgaW1wb3ZlcmlzaGVkLiBUaGVzZSBhcmUgdGhlIGlzc3VlcyB0aGF0IGFyZSBjb21wcmVoZW5zaXZlbHkgZXhhbWluZWQgYW5kIGFkZHJlc3NlZCBpbiB0aGlzIGJvb2suIEluIGFkZGl0aW9uIHRvIHN0dWRlbnRzLCB0ZWFjaGVycyBhbmQgcmVzZWFyY2hlcnMgaW4gdGhlIGFyZWFzIG9mIGRldmVsb3BtZW50LCBlY29ub21pYyBncm93dGgsIGVxdWl0eSBhbmQgd2VsZmFyZSwgdGhlIGJvb2sgaXMgYWxzbyBvZiBncmVhdCBpbnRlcmVzdCB0byBwb2xpY3kgbWFrZXJzLCBwbGFubmVycyBhbmQgbm9u4oCQZ292ZXJubWVudCBhZ2VuY2llcyB3aG8gYXJlIGNvbmNlcm5lZCB3aXRoIHVuZGVyc3RhbmRpbmcgYW5kIGFkZHJlc3NpbmcgcG92ZXJ0eS1yZWxhdGVkIGlzc3VlcyBpbiB0aGUgZGV2ZWxvcGluZyBjb3VudHJpZXMuIl19LHsidGltZGV4UmVjb3JkSWQiOiJhbG1hOjk5MDAxMjkxMjQ1MDEwNjc2MSIsInRpdGxlIjoiUG92ZXJ0eSIsImNvbnRlbnRUeXBlIjpbIkxhbmd1YWdlIG1hdGVyaWFsIl0sImNvbnRyaWJ1dG9ycyI6W3sia2luZCI6Ik5vdCBzcGVjaWZpZWQiLCJ2YWx1ZSI6Ikxpc3RlciwgUnV0aCJ9XSwicHVibGljYXRpb25JbmZvcm1hdGlvbiI6WyJDYW1icmlkZ2UsIFVLIDsgTWFsZGVuLCBNQSA6IFBvbGl0eSwgMjAwNCJdLCJkYXRlcyI6W3sia2luZCI6IlB1YmxpY2F0aW9uIGRhdGUiLCJ2YWx1ZSI6IjIwMDQifV0sImxpbmtzIjpudWxsLCJub3RlcyI6W3sia2luZCI6IlRpdGxlIFN0YXRlbWVudCBvZiBSZXNwb25zaWJpbGl0eSIsInZhbHVlIjpbIlJ1dGggTGlzdGVyIl19LHsia2luZCI6IkJpYmxpb2dyYXBoeSBOb3RlIiwidmFsdWUiOlsiSW5jbHVkZXMgYmlibGlvZ3JhcGhpY2FsIHJlZmVyZW5jZXMgKHAuIFsxOTVdLTIyOCkgYW5kIGluZGV4Il19XSwiaGlnaGxpZ2h0IjpbeyJtYXRjaGVkRmllbGQiOiJjb250ZW50cyIsIm1hdGNoZWRQaHJhc2VzIjpbIkRlZmluaW5nIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZXBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSIsIk1lYXN1cmluZyBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2Vwb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UiLCJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgYW5kIHNvY2lhbCBleGNsdXNpb24iLCJEaXNjb3Vyc2VzIG9mIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZXBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSA6IGZyb20gb3RoZXJpbmcgdG8gcmVzcGVjdCIsIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSwgaHVtYW4gcmlnaHRzIGFuZCBjaXRpemVuc2hpcCJdfSx7Im1hdGNoZWRGaWVsZCI6ImNpdGF0aW9uIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlLiAyMDA0LiBDYW1icmlkZ2UsIFVLIDsgTWFsZGVuLCBNQSA6IFBvbGl0eSwgMjAwNC4iXX0seyJtYXRjaGVkRmllbGQiOiJ0aXRsZS5leGFjdF92YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSJdfSx7Im1hdGNoZWRGaWVsZCI6InRpdGxlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIl19LHsibWF0Y2hlZEZpZWxkIjoic3ViamVjdHMudmFsdWUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UiLCJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UiXX1dLCJwcm92aWRlciI6bnVsbCwicmlnaHRzIjpudWxsLCJzb3VyY2VMaW5rIjoiaHR0cHM6Ly9taXQucHJpbW8uZXhsaWJyaXNncm91cC5jb20vZGlzY292ZXJ5L2Z1bGxkaXNwbGF5P3ZpZD0wMU1JVF9JTlNUOk1JVFx1MDAyNmRvY2lkPWFsbWE5OTAwMTI5MTI0NTAxMDY3NjEiLCJzdW1tYXJ5IjpudWxsfSx7InRpbWRleFJlY29yZElkIjoiYWxtYTo5OTAwMDgxMTk1MDAxMDY3NjEiLCJ0aXRsZSI6IlBvdmVydHkgOiBhIGdsb2JhbCByZXZpZXcgOiBoYW5kYm9vayBvbiBpbnRlcm5hdGlvbmFsIHBvdmVydHkgcmVzZWFyY2giLCJjb250ZW50VHlwZSI6WyJMYW5ndWFnZSBtYXRlcmlhbCJdLCJjb250cmlidXRvcnMiOlt7ImtpbmQiOiJOb3Qgc3BlY2lmaWVkIiwidmFsdWUiOiLDmHllbiwgRWxzZSJ9LHsia2luZCI6Ik5vdCBzcGVjaWZpZWQiLCJ2YWx1ZSI6Ik1pbGxlciwgUy4gTS4gKFNleW1vdXIgTWljaGFlbCkifSx7ImtpbmQiOiJOb3Qgc3BlY2lmaWVkIiwidmFsdWUiOiJTYW1hZCwgU3llZCBBYmR1cyJ9LHsia2luZCI6Ik5vdCBzcGVjaWZpZWQiLCJ2YWx1ZSI6IkNvbXBhcmF0aXZlIFJlc2VhcmNoIFByb2dyYW1tZSBvbiBQb3ZlcnR5In1dLCJwdWJsaWNhdGlvbkluZm9ybWF0aW9uIjpbIk9zbG8gOyBDYW1icmlkZ2UsIE1BIDogU2NhbmRpbmF2aWFuIFVuaXZlcnNpdHkgUHJlc3MsIGMxOTk2Il0sImRhdGVzIjpbeyJraW5kIjoiUHVibGljYXRpb24gZGF0ZSIsInZhbHVlIjoiMTk5NiJ9XSwibGlua3MiOm51bGwsIm5vdGVzIjpbeyJraW5kIjoiVGl0bGUgU3RhdGVtZW50IG9mIFJlc3BvbnNpYmlsaXR5IiwidmFsdWUiOlsiZWRpdGVkIGJ5IEVsc2Ugw5h5ZW4sIFMuTS4gTWlsbGVyLCBhbmQgU3llZCBBYmR1cyBTYW1hZCJdfSx7ImtpbmQiOiJHZW5lcmFsIE5vdGUiLCJ2YWx1ZSI6WyJQYXBlcnMgcHJlc2VudGVkIGF0IGFuIGludGVybmF0aW9uYWwgc2NpZW50aWZpYyBzeW1wb3NpdW0gb3JnYW5pemVkIGJ5IHRoZSBDb21wYXJhdGl2ZSBSZXNlYXJjaCBQcm9ncmFtbWUgb24gUG92ZXJ0eSAoQ1JPUCkiXX0seyJraW5kIjoiQmlibGlvZ3JhcGh5IE5vdGUiLCJ2YWx1ZSI6WyJJbmNsdWRlcyBiaWJsaW9ncmFwaGljYWwgcmVmZXJlbmNlcyBhbmQgaW5kZXgiXX1dLCJoaWdobGlnaHQiOlt7Im1hdGNoZWRGaWVsZCI6ImNpdGF0aW9uIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIDogYSBnbG9iYWwgcmV2aWV3IDogaGFuZGJvb2sgb24gaW50ZXJuYXRpb25hbCBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2Vwb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgcmVzZWFyY2guIDE5OTYuIl19LHsibWF0Y2hlZEZpZWxkIjoidGl0bGUuZXhhY3RfdmFsdWUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5IDogYSBnbG9iYWwgcmV2aWV3IDogaGFuZGJvb2sgb24gaW50ZXJuYXRpb25hbCBwb3ZlcnR5IHJlc2VhcmNoXHUwMDNjL3NwYW5cdTAwM2UiXX0seyJtYXRjaGVkRmllbGQiOiJub3Rlcy52YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbInByZXNlbnRlZCBhdCBhbiBpbnRlcm5hdGlvbmFsIHNjaWVudGlmaWMgc3ltcG9zaXVtIG9yZ2FuaXplZCBieSB0aGUgQ29tcGFyYXRpdmUgUmVzZWFyY2ggUHJvZ3JhbW1lIG9uIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSJdfSx7Im1hdGNoZWRGaWVsZCI6InRpdGxlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIDogYSBnbG9iYWwgcmV2aWV3IDogaGFuZGJvb2sgb24gaW50ZXJuYXRpb25hbCBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2Vwb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgcmVzZWFyY2giXX0seyJtYXRjaGVkRmllbGQiOiJzdWJqZWN0cy52YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSAtIFJlc2VhcmNoIC0gQ29uZ3Jlc3NlcyIsIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSAtIENvbmdyZXNzZXMiLCJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UiLCJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgLSBSZXNlYXJjaCJdfSx7Im1hdGNoZWRGaWVsZCI6ImNvbnRyaWJ1dG9ycy52YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIkNvbXBhcmF0aXZlIFJlc2VhcmNoIFByb2dyYW1tZSBvbiBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UiXX1dLCJwcm92aWRlciI6bnVsbCwicmlnaHRzIjpudWxsLCJzb3VyY2VMaW5rIjoiaHR0cHM6Ly9taXQucHJpbW8uZXhsaWJyaXNncm91cC5jb20vZGlzY292ZXJ5L2Z1bGxkaXNwbGF5P3ZpZD0wMU1JVF9JTlNUOk1JVFx1MDAyNmRvY2lkPWFsbWE5OTAwMDgxMTk1MDAxMDY3NjEiLCJzdW1tYXJ5IjpudWxsfSx7InRpbWRleFJlY29yZElkIjoiYWxtYTo5OTAwMDk1Mjk2MzAxMDY3NjEiLCJ0aXRsZSI6IlBvdmVydHkiLCJjb250ZW50VHlwZSI6WyJMYW5ndWFnZSBtYXRlcmlhbCJdLCJjb250cmlidXRvcnMiOlt7ImtpbmQiOiJOb3Qgc3BlY2lmaWVkIiwidmFsdWUiOiJIdW50ZXIsIFJvYmVydCJ9XSwicHVibGljYXRpb25JbmZvcm1hdGlvbiI6WyJOZXcgWW9yaywgVGhlIE1hY21pbGxhbiBDb21wYW55OyBMb25kb24sIE1hY21pbGxhbiBcdTAwMjYgQ28uLCBsdGQuLCAxOTE3Il0sImRhdGVzIjpbeyJraW5kIjoiUHVibGljYXRpb24gZGF0ZSIsInZhbHVlIjoiMTkxNyJ9XSwibGlua3MiOlt7ImtpbmQiOiJEaWdpdGFsIG9iamVjdCBVUkwiLCJyZXN0cmljdGlvbnMiOm51bGwsInRleHQiOiJIYXRoaVRydXN0IERpZ2l0YWwgTGlicmFyeSAoTUlUKSIsInVybCI6Imh0dHA6Ly9jYXRhbG9nLmhhdGhpdHJ1c3Qub3JnL2FwaS92b2x1bWVzL29jbGMvMTE4MTUxMjcuaHRtbCJ9LHsia2luZCI6IkhhdGhpIFRydXN0IiwicmVzdHJpY3Rpb25zIjpudWxsLCJ0ZXh0IjpudWxsLCJ1cmwiOiJodHRwOi8vY2F0YWxvZy5oYXRoaXRydXN0Lm9yZy9hcGkvdm9sdW1lcy9vY2xjLzExODE1MTI3Lmh0bWwifV0sIm5vdGVzIjpbeyJraW5kIjoiVGl0bGUgU3RhdGVtZW50IG9mIFJlc3BvbnNpYmlsaXR5IiwidmFsdWUiOlsiYnkgUm9iZXJ0IEh1bnRlciJdfSx7ImtpbmQiOiJCaWJsaW9ncmFwaHkgTm90ZSIsInZhbHVlIjpbIlwiQXV0aG9yaXRpZXNcIjogcC4gMzYxLTM3MiJdfV0sImhpZ2hsaWdodCI6W3sibWF0Y2hlZEZpZWxkIjoiY29udGVudHMiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UuLS1UaGUgcGF1cGVyLi0tVGhlIHZhZ3JhbnQuLS1UaGUgc2ljay4tLVRoZSBjaGlsZC4tLVRoZSBpbW1pZ3JhbnQuLS1Db25jbHVzaW9uLi0tQXBwZW5kaWNlcy4iXX0seyJtYXRjaGVkRmllbGQiOiJjaXRhdGlvbiIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZS4gMTkxNy4gTmV3IFlvcmssIFRoZSBNYWNtaWxsYW4gQ29tcGFueTsgTG9uZG9uLCBNYWNtaWxsYW4gXHUwMDI2IENvLiwgbHRkLiwgMTkxNy4iXX0seyJtYXRjaGVkRmllbGQiOiJ0aXRsZS5leGFjdF92YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSJdfSx7Im1hdGNoZWRGaWVsZCI6InRpdGxlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIl19LHsibWF0Y2hlZEZpZWxkIjoic3ViamVjdHMudmFsdWUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UiLCJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UiXX1dLCJwcm92aWRlciI6bnVsbCwicmlnaHRzIjpudWxsLCJzb3VyY2VMaW5rIjoiaHR0cHM6Ly9taXQucHJpbW8uZXhsaWJyaXNncm91cC5jb20vZGlzY292ZXJ5L2Z1bGxkaXNwbGF5P3ZpZD0wMU1JVF9JTlNUOk1JVFx1MDAyNmRvY2lkPWFsbWE5OTAwMDk1Mjk2MzAxMDY3NjEiLCJzdW1tYXJ5IjpudWxsfSx7InRpbWRleFJlY29yZElkIjoiYWxtYTo5OTAwMDk1Mjk1ODAxMDY3NjEiLCJ0aXRsZSI6IlBvdmVydHkiLCJjb250ZW50VHlwZSI6WyJMYW5ndWFnZSBtYXRlcmlhbCJdLCJjb250cmlidXRvcnMiOlt7ImtpbmQiOiJOb3Qgc3BlY2lmaWVkIiwidmFsdWUiOiJIdW50ZXIsIFJvYmVydCJ9XSwicHVibGljYXRpb25JbmZvcm1hdGlvbiI6WyJOZXcgWW9yaywgVGhlIE1hY21pbGxhbiBDb21wYW55OyBMb25kb24sIE1hY21pbGxhbiBcdTAwMjYgQ28uLCBsdGQuLCAxOTA0Il0sImRhdGVzIjpbeyJraW5kIjoiUHVibGljYXRpb24gZGF0ZSIsInZhbHVlIjoiMTkwNCJ9XSwibGlua3MiOlt7ImtpbmQiOiJEaWdpdGFsIG9iamVjdCBVUkwiLCJyZXN0cmljdGlvbnMiOm51bGwsInRleHQiOiJIYXRoaVRydXN0IERpZ2l0YWwgTGlicmFyeSAoTUlUKSIsInVybCI6Imh0dHA6Ly9jYXRhbG9nLmhhdGhpdHJ1c3Qub3JnL2FwaS92b2x1bWVzL29jbGMvMjYzNjU2Lmh0bWwifSx7ImtpbmQiOiJIYXRoaSBUcnVzdCIsInJlc3RyaWN0aW9ucyI6bnVsbCwidGV4dCI6bnVsbCwidXJsIjoiaHR0cDovL2NhdGFsb2cuaGF0aGl0cnVzdC5vcmcvYXBpL3ZvbHVtZXMvb2NsYy8yNjM2NTYuaHRtbCJ9XSwibm90ZXMiOlt7ImtpbmQiOiJUaXRsZSBTdGF0ZW1lbnQgb2YgUmVzcG9uc2liaWxpdHkiLCJ2YWx1ZSI6WyJieSBSb2JlcnQgSHVudGVyIl19LHsia2luZCI6IkJpYmxpb2dyYXBoeSBOb3RlIiwidmFsdWUiOlsiXCJBdXRob3JpdGllc1wiOiBwLiAzNjEtMzcyIl19XSwiaGlnaGxpZ2h0IjpbeyJtYXRjaGVkRmllbGQiOiJjb250ZW50cyIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZS4tLVRoZSBwYXVwZXIuLS1UaGUgdmFncmFudC4tLVRoZSBzaWNrLi0tVGhlIGNoaWxkLi0tVGhlIGltbWlncmFudC4tLUNvbmNsdXNpb24uLS1BcHBlbmRpY2VzLiJdfSx7Im1hdGNoZWRGaWVsZCI6ImNpdGF0aW9uIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlLiAxOTA0LiBOZXcgWW9yaywgVGhlIE1hY21pbGxhbiBDb21wYW55OyBMb25kb24sIE1hY21pbGxhbiBcdTAwMjYgQ28uLCBsdGQuLCAxOTA0LiJdfSx7Im1hdGNoZWRGaWVsZCI6InRpdGxlLmV4YWN0X3ZhbHVlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIl19LHsibWF0Y2hlZEZpZWxkIjoidGl0bGUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UiXX0seyJtYXRjaGVkRmllbGQiOiJzdWJqZWN0cy52YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSIsIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSJdfV0sInByb3ZpZGVyIjpudWxsLCJyaWdodHMiOm51bGwsInNvdXJjZUxpbmsiOiJodHRwczovL21pdC5wcmltby5leGxpYnJpc2dyb3VwLmNvbS9kaXNjb3ZlcnkvZnVsbGRpc3BsYXk/dmlkPTAxTUlUX0lOU1Q6TUlUXHUwMDI2ZG9jaWQ9YWxtYTk5MDAwOTUyOTU4MDEwNjc2MSIsInN1bW1hcnkiOm51bGx9LHsidGltZGV4UmVjb3JkSWQiOiJhbG1hOjk5MzUwNTYxMzI2MDY3NjEiLCJ0aXRsZSI6IlBvdmVydHkgXHUwMDI2IHJhY2UiLCJjb250ZW50VHlwZSI6WyJMYW5ndWFnZSBtYXRlcmlhbCJdLCJjb250cmlidXRvcnMiOlt7ImtpbmQiOiJOb3Qgc3BlY2lmaWVkIiwidmFsdWUiOiJQb3ZlcnR5IFx1MDAyNiBSYWNlIFJlc2VhcmNoIEFjdGlvbiBDb3VuY2lsIn1dLCJwdWJsaWNhdGlvbkluZm9ybWF0aW9uIjpbIldhc2hpbmd0b24sIERDIDogUG92ZXJ0eSBcdTAwMjYgUmFjZSBSZXNlYXJjaCBBY3Rpb24gQ291bmNpbCJdLCJkYXRlcyI6bnVsbCwibGlua3MiOlt7ImtpbmQiOiJEaWdpdGFsIG9iamVjdCBVUkwiLCJyZXN0cmljdGlvbnMiOm51bGwsInRleHQiOiJFdGhuaWMgTmV3c1dhdGNoIiwidXJsIjoiaHR0cHM6Ly9uYTA2LXBzYi5hbG1hLmV4bGlicmlzZ3JvdXAuY29tL3ZpZXcvdXJlc29sdmVyLzAxTUlUX0lOU1Qvb3BlbnVybD91Lmlnbm9yZV9kYXRlX2NvdmVyYWdlPXRydWVcdTAwMjZwb3J0Zm9saW9fcGlkPTUzNTQyOTcwMzUwMDA2NzYxXHUwMDI2Rm9yY2VfZGlyZWN0PXRydWUifV0sIm5vdGVzIjpbeyJraW5kIjoiVGl0bGUgU3RhdGVtZW50IG9mIFJlc3BvbnNpYmlsaXR5IiwidmFsdWUiOlsiUG92ZXJ0eSBcdTAwMjYgUmFjZSBSZXNlYXJjaCBBY3Rpb24gQ291bmNpbCJdfSx7ImtpbmQiOiJTb3VyY2Ugb2YgRGVzY3JpcHRpb24gTm90ZSIsInZhbHVlIjpbIkRlc2NyaXB0aW9uIGJhc2VkIG9uOiBWb2wuIDMsIG5vLiAyIChNYXIuL0Fwci4gMTk5NCk7IHRpdGxlIGZyb20gY2FwdGlvbiJdfSx7ImtpbmQiOiJTb3VyY2Ugb2YgRGVzY3JpcHRpb24gTm90ZSIsInZhbHVlIjpbIkxhdGVzdCBpc3N1ZSBjb25zdWx0ZWQ6IFZvbC4gMjgsIG5vLiAzIChTZXB0Li9EZWMuIDIwMTkpIl19XSwiaGlnaGxpZ2h0IjpbeyJtYXRjaGVkRmllbGQiOiJjaXRhdGlvbiIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBcdTAwMjYgcmFjZS4gV2FzaGluZ3RvbiwgREMgOiBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgXHUwMDI2IFJhY2UgUmVzZWFyY2ggQWN0aW9uIENvdW5jaWwuIl19LHsibWF0Y2hlZEZpZWxkIjoidGl0bGUuZXhhY3RfdmFsdWUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5IFx1MDAyNiByYWNlXHUwMDNjL3NwYW5cdTAwM2UiXX0seyJtYXRjaGVkRmllbGQiOiJub3Rlcy52YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBcdTAwMjYgUmFjZSBSZXNlYXJjaCBBY3Rpb24gQ291bmNpbCJdfSx7Im1hdGNoZWRGaWVsZCI6InB1YmxpY2F0aW9uX2luZm9ybWF0aW9uIiwibWF0Y2hlZFBocmFzZXMiOlsiV2FzaGluZ3RvbiwgREMgOiBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgXHUwMDI2IFJhY2UgUmVzZWFyY2ggQWN0aW9uIENvdW5jaWwiXX0seyJtYXRjaGVkRmllbGQiOiJ0aXRsZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBcdTAwMjYgcmFjZSJdfSx7Im1hdGNoZWRGaWVsZCI6InN1YmplY3RzLnZhbHVlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIC0gVW5pdGVkIFN0YXRlcyAtIFBlcmlvZGljYWxzIiwiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIl19LHsibWF0Y2hlZEZpZWxkIjoiY29udHJpYnV0b3JzLnZhbHVlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIFx1MDAyNiBSYWNlIFJlc2VhcmNoIEFjdGlvbiBDb3VuY2lsIl19XSwicHJvdmlkZXIiOm51bGwsInJpZ2h0cyI6bnVsbCwic291cmNlTGluayI6Imh0dHBzOi8vbWl0LnByaW1vLmV4bGlicmlzZ3JvdXAuY29tL2Rpc2NvdmVyeS9mdWxsZGlzcGxheT92aWQ9MDFNSVRfSU5TVDpNSVRcdTAwMjZkb2NpZD1hbG1hOTkzNTA1NjEzMjYwNjc2MSIsInN1bW1hcnkiOm51bGx9LHsidGltZGV4UmVjb3JkSWQiOiJhbG1hOjk5MzUxNjYzOTI3MDY3NjEiLCJ0aXRsZSI6IlBvdmVydHkgQWxsZXZpYXRpb24gYW5kIFBvdmVydHkgb2YgQWlkIDogUGFraXN0YW4iLCJjb250ZW50VHlwZSI6WyJMYW5ndWFnZSBtYXRlcmlhbCJdLCJjb250cmlidXRvcnMiOlt7ImtpbmQiOiJhdXRob3IiLCJ2YWx1ZSI6IkJhcWlyLCBGYXl5YXoifV0sInB1YmxpY2F0aW9uSW5mb3JtYXRpb24iOlsiQm9jYSBSYXRvbiwgRkwgOiBUYXlsb3IgXHUwMDI2IEZyYW5jaXMsIFsyMDE4XSIsIsKpMjAxOSJdLCJkYXRlcyI6W3sia2luZCI6IlB1YmxpY2F0aW9uIGRhdGUiLCJ2YWx1ZSI6IjIwMTgifV0sImxpbmtzIjpbeyJraW5kIjoiRGlnaXRhbCBvYmplY3QgVVJMIiwicmVzdHJpY3Rpb25zIjpudWxsLCJ0ZXh0IjoiVGF5bG9yIFx1MDAyNiBGcmFuY2lzIGVCb29rcyBDb21wbGV0ZSIsInVybCI6Imh0dHBzOi8vbmEwNi1wc2IuYWxtYS5leGxpYnJpc2dyb3VwLmNvbS92aWV3L3VyZXNvbHZlci8wMU1JVF9JTlNUL29wZW51cmw/dS5pZ25vcmVfZGF0ZV9jb3ZlcmFnZT10cnVlXHUwMDI2cG9ydGZvbGlvX3BpZD01MzY3OTc1NzI0MDAwNjc2MVx1MDAyNkZvcmNlX2RpcmVjdD10cnVlIn1dLCJub3RlcyI6W3sia2luZCI6IlRpdGxlIFN0YXRlbWVudCBvZiBSZXNwb25zaWJpbGl0eSIsInZhbHVlIjpbImJ5IEZheXlheiBCYXFpciJdfSx7ImtpbmQiOiJCaWJsaW9ncmFwaHkgTm90ZSIsInZhbHVlIjpbIkluY2x1ZGVzIGJpYmxpb2dyYXBoaWNhbCByZWZlcmVuY2VzIGFuZCBpbmRleCJdfSx7ImtpbmQiOiJTb3VyY2Ugb2YgRGVzY3JpcHRpb24gTm90ZSIsInZhbHVlIjpbIkRlc2NyaXB0aW9uIGJhc2VkIG9uIHByaW50IHZlcnNpb24gcmVjb3JkIl19XSwiaGlnaGxpZ2h0IjpbeyJtYXRjaGVkRmllbGQiOiJzdW1tYXJ5IiwibWF0Y2hlZFBocmFzZXMiOlsiZmFpbHVyZSBvZiBQYWtpc3RhbiBpbiBhdmFpbGluZyBmb3JlaWduIGZpbmFuY2lhbCBhbmQgdGVjaG5pY2FsIGFzc2lzdGFuY2UgZm9yIGh1bWFuIGRldmVsb3BtZW50IGFuZCBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2Vwb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UiXX0seyJtYXRjaGVkRmllbGQiOiJjb250ZW50cyIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBhbGxldmlhdGlvbiBhbmQgYXJpdGhtZXRpYyBvZiB0aGUgcG9vciJdfSx7Im1hdGNoZWRGaWVsZCI6ImNpdGF0aW9uIiwibWF0Y2hlZFBocmFzZXMiOlsiQmFxaXIsIEZheXlheiAoMjAxOCk6IFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBBbGxldmlhdGlvbiBhbmQgXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIG9mIEFpZCA6IFBha2lzdGFuLiJdfSx7Im1hdGNoZWRGaWVsZCI6InRpdGxlLmV4YWN0X3ZhbHVlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eSBBbGxldmlhdGlvbiBhbmQgUG92ZXJ0eSBvZiBBaWQgOiBQYWtpc3Rhblx1MDAzYy9zcGFuXHUwMDNlIl19LHsibWF0Y2hlZEZpZWxkIjoidGl0bGUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgQWxsZXZpYXRpb24gYW5kIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBvZiBBaWQgOiBQYWtpc3RhbiJdfSx7Im1hdGNoZWRGaWVsZCI6InN1YmplY3RzLnZhbHVlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIC0gUGFraXN0YW4iLCJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgLSBHb3Zlcm5tZW50IHBvbGljeSAtIFBha2lzdGFuIl19XSwicHJvdmlkZXIiOm51bGwsInJpZ2h0cyI6bnVsbCwic291cmNlTGluayI6Imh0dHBzOi8vbWl0LnByaW1vLmV4bGlicmlzZ3JvdXAuY29tL2Rpc2NvdmVyeS9mdWxsZGlzcGxheT92aWQ9MDFNSVRfSU5TVDpNSVRcdTAwMjZkb2NpZD1hbG1hOTkzNTE2NjM5MjcwNjc2MSIsInN1bW1hcnkiOlsiQWlkIGVmZmVjdGl2ZW5lc3MgaGFzIGVtZXJnZWQgYXMgYW4gaW50ZW5zZWx5IGRlYmF0ZWQgaXNzdWUgYW1vbmdzdCBwb2xpY3kgbWFrZXJzLCBkb25vcnMsIGRldmVsb3BtZW50IHByYWN0aXRpb25lcnMsIGNpdmlsIHNvY2lldHkgYW5kIGFjYWRlbWljcyBkdXJpbmcgdGhlIHBhc3QgZGVjYWRlLiBUaGlzIGRlYmF0ZSByZXZvbHZlcyBhcm91bmQgb25lIGltcG9ydGFudCBxdWVzdGlvbjogZG9lcyBvZmZpY2lhbCBkZXZlbG9wbWVudCBhc3Npc3RhbmNlIGNvbXBsZW1lbnQsIGR1cGxpY2F0ZSBvciBkaXNyZWdhcmQgdGhlIGxvY2FsIHJlc291cmNlIGVuZG93bWVudCBpbiBvZmZlcmluZyBzdXBwb3J0IHRvIHJlY2lwaWVudCBlY29ub21pZXM/IFRoaXMgYm9vayBkcmF3cyBvbiBQYWtpc3RhbuKAmXMgZXhwZXJpZW5jZSBpbiByZXNwb25kaW5nIHRvIHRoaXMgcXVlc3Rpb24gd2l0aCBhIGRpdmVyc2UgcmFuZ2Ugb2YgZXhhbXBsZXMuIEl0IGZvY3VzZXMgb24gYSBjZW50cmFsIGlkZWE6IG5vIGFpZCBlZmZlY3RpdmVuZXNzIHdpdGhvdXQgYW4gZWZmZWN0aXZlIHJlY2VpdmluZyBtZWNoYW5pc20uIFBha2lzdGFuIGlzIGFtb25nIHRoZSB0b3AgYWlkIHJlY2lwaWVudCBjb3VudHJpZXMgaW4gdGhlIGRldmVsb3BpbmcgZWNvbm9taWVzLiBJdCB3YXMgYSBzaGluaW5nIG1vZGVsIGluIHRoZSBzaXh0aWVzIGFuZGl0IHJhbmtzIGFtb25nIHRoZSBoaWdobHkgdW5kZXJwZXJmb3JtaW5nIGNvdW50cmllcyBhZnRlciB0aGUgbmV3IG1pbGxlbm5pdW0uIFRoaXMgYm9vayBvZmZlcnMgYW4gaW5zaWdodCBpbnRvIHRoZSBkeW5hbWljcyBvZiBzdWNjZXNzIGFuZCBmYWlsdXJlIG9mIFBha2lzdGFuIGluIGF2YWlsaW5nIGZvcmVpZ24gZmluYW5jaWFsIGFuZCB0ZWNobmljYWwgYXNzaXN0YW5jZSBmb3IgaHVtYW4gZGV2ZWxvcG1lbnQgYW5kIHBvdmVydHkgYWxsZXZpYXRpb24uIEl0IGRyYXdzIG9uIGZpZWxkIGV4cGVyaWVuY2VzIHRvIHByZXNlbnQgY2FzZSBzdHVkaWVzIG9uIHdhdGVyLCBzaGVsdGVyLCBoZWFsdGgsIGVkdWNhdGlvbiwgYW5kIGhlYWx0aCBhbmQgc2FmZXR5IGF0IHdvcmsgdG8gaWRlbnRpZnkgdGhlIGNhdXNlcyBhbmQgY29uc2VxdWVuY2VzIG9mIGFpZCBpbiByZWxhdGlvbiB0byBzb2NpYWwgcmVhbGl0eS4gRmluZGluZ3MgcmVsYXRlIHRvIGRldmVsb3BpbmcgZWNvbm9taWVzIGFuZCB3b3VsZCBiZSBvZiBpbnRlcmVzdCB0byBhIHdpZGUgcmFuZ2Ugb2YgaW5kaXZpZHVhbHMgd2l0aGluIHRoZSBkZXZlbG9wbWVudCBzZWN0b3IuIl19LHsidGltZGV4UmVjb3JkSWQiOiJhbG1hOjk5MDAxNDQxMzkzMDEwNjc2MSIsInRpdGxlIjoiUG92ZXJ0eSA6IGFuIGludGVybmF0aW9uYWwgZ2xvc3NhcnkiLCJjb250ZW50VHlwZSI6WyJMYW5ndWFnZSBtYXRlcmlhbCJdLCJjb250cmlidXRvcnMiOlt7ImtpbmQiOiJOb3Qgc3BlY2lmaWVkIiwidmFsdWUiOiJTcGlja2VyLCBQYXVsIn0seyJraW5kIjoiTm90IHNwZWNpZmllZCIsInZhbHVlIjoiQcyBbHZhcmV6IExlZ3VpemFtb8yBbiwgU29uaWEifSx7ImtpbmQiOiJOb3Qgc3BlY2lmaWVkIiwidmFsdWUiOiJHb3Jkb24sIERhdmlkIn0seyJraW5kIjoiTm90IHNwZWNpZmllZCIsInZhbHVlIjoiQ29tcGFyYXRpdmUgUmVzZWFyY2ggUHJvZ3JhbW1lIG9uIFBvdmVydHkifSx7ImtpbmQiOiJOb3Qgc3BlY2lmaWVkIiwidmFsdWUiOiJJbnRlcm5hdGlvbmFsIFNvY2lhbCBTY2llbmNlIENvdW5jaWwifV0sInB1YmxpY2F0aW9uSW5mb3JtYXRpb24iOlsiTG9uZG9uIDsgTmV3IFlvcmsgOiBaZWQgQm9va3MgOyBOZXcgWW9yayA6IERpc3RyaWJ1dGVkIGluIHRoZSBVU0EgZXhjbHVzaXZlbHkgYnkgUGFsZ3JhdmUgTWFjbWlsbGFuLCBjMjAwNyJdLCJkYXRlcyI6W3sia2luZCI6IlB1YmxpY2F0aW9uIGRhdGUiLCJ2YWx1ZSI6IjIwMDcifV0sImxpbmtzIjpudWxsLCJub3RlcyI6W3sia2luZCI6IlRpdGxlIFN0YXRlbWVudCBvZiBSZXNwb25zaWJpbGl0eSIsInZhbHVlIjpbImVkaXRlZCBieSBQYXVsIFNwaWNrZXIsIFNvbmlhIEFsdmFyZXogTGVndWl6YW1vzIHMgW4sIFx1MDAyNiBEYXZpZCBHb3Jkb24iXX0seyJraW5kIjoiR2VuZXJhbCBOb3RlIiwidmFsdWUiOlsiXCJDUk9QOyBJU1MuXCIiXX0seyJraW5kIjoiQmlibGlvZ3JhcGh5IE5vdGUiLCJ2YWx1ZSI6WyJJbmNsdWRlcyBiaWJsaW9ncmFwaGljYWwgcmVmZXJlbmNlcyBhbmQgaW5kZXgiXX1dLCJoaWdobGlnaHQiOlt7Im1hdGNoZWRGaWVsZCI6ImNpdGF0aW9uIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIDogYW4gaW50ZXJuYXRpb25hbCBnbG9zc2FyeS4gMjAwNy4iXX0seyJtYXRjaGVkRmllbGQiOiJ0aXRsZS5leGFjdF92YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHkgOiBhbiBpbnRlcm5hdGlvbmFsIGdsb3NzYXJ5XHUwMDNjL3NwYW5cdTAwM2UiXX0seyJtYXRjaGVkRmllbGQiOiJ0aXRsZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSA6IGFuIGludGVybmF0aW9uYWwgZ2xvc3NhcnkiXX0seyJtYXRjaGVkRmllbGQiOiJzdWJqZWN0cy52YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSAtIERpY3Rpb25hcmllcyIsIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSJdfSx7Im1hdGNoZWRGaWVsZCI6ImNvbnRyaWJ1dG9ycy52YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIkNvbXBhcmF0aXZlIFJlc2VhcmNoIFByb2dyYW1tZSBvbiBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UiXX1dLCJwcm92aWRlciI6bnVsbCwicmlnaHRzIjpudWxsLCJzb3VyY2VMaW5rIjoiaHR0cHM6Ly9taXQucHJpbW8uZXhsaWJyaXNncm91cC5jb20vZGlzY292ZXJ5L2Z1bGxkaXNwbGF5P3ZpZD0wMU1JVF9JTlNUOk1JVFx1MDAyNmRvY2lkPWFsbWE5OTAwMTQ0MTM5MzAxMDY3NjEiLCJzdW1tYXJ5IjpudWxsfSx7InRpbWRleFJlY29yZElkIjoiYWxtYTo5OTAwMDQ5Mzc1ODAxMDY3NjEiLCJ0aXRsZSI6IlBvdmVydHkgYW5kIHNvY2lhbCBwcm9ncmVzcyIsImNvbnRlbnRUeXBlIjpbIkxhbmd1YWdlIG1hdGVyaWFsIl0sImNvbnRyaWJ1dG9ycyI6W3sia2luZCI6Ik5vdCBzcGVjaWZpZWQiLCJ2YWx1ZSI6IlBhcm1lbGVlLCBNYXVyaWNlIn1dLCJwdWJsaWNhdGlvbkluZm9ybWF0aW9uIjpbIk5ldyBZb3JrLCBUaGUgTWFjbWlsbGFuIENvbXBhbnksIDE5MTYiXSwiZGF0ZXMiOlt7ImtpbmQiOiJQdWJsaWNhdGlvbiBkYXRlIiwidmFsdWUiOiIxOTE2In1dLCJsaW5rcyI6W3sia2luZCI6IkRpZ2l0YWwgb2JqZWN0IFVSTCIsInJlc3RyaWN0aW9ucyI6bnVsbCwidGV4dCI6IkhhdGhpVHJ1c3QgRGlnaXRhbCBMaWJyYXJ5IChNSVQpIiwidXJsIjoiaHR0cDovL2NhdGFsb2cuaGF0aGl0cnVzdC5vcmcvYXBpL3ZvbHVtZXMvb2NsYy85Mzk4NjEuaHRtbCJ9LHsia2luZCI6IkhhdGhpIFRydXN0IiwicmVzdHJpY3Rpb25zIjpudWxsLCJ0ZXh0IjpudWxsLCJ1cmwiOiJodHRwOi8vY2F0YWxvZy5oYXRoaXRydXN0Lm9yZy9hcGkvdm9sdW1lcy9vY2xjLzkzOTg2MS5odG1sIn1dLCJub3RlcyI6W3sia2luZCI6IlRpdGxlIFN0YXRlbWVudCBvZiBSZXNwb25zaWJpbGl0eSIsInZhbHVlIjpbImJ5IE1hdXJpY2UgUGFybWVsZWUiXX0seyJraW5kIjoiQmlibGlvZ3JhcGh5IE5vdGUiLCJ2YWx1ZSI6WyJcIlBhcnRpYWwgYmlibGlvZ3JhcGh5XCI6IHAuIDQ1Ny00NjkiXX1dLCJoaWdobGlnaHQiOlt7Im1hdGNoZWRGaWVsZCI6ImNpdGF0aW9uIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIGFuZCBzb2NpYWwgcHJvZ3Jlc3MuIDE5MTYuIE5ldyBZb3JrLCBUaGUgTWFjbWlsbGFuIENvbXBhbnksIDE5MTYuIl19LHsibWF0Y2hlZEZpZWxkIjoidGl0bGUuZXhhY3RfdmFsdWUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5IGFuZCBzb2NpYWwgcHJvZ3Jlc3NcdTAwM2Mvc3Bhblx1MDAzZSJdfSx7Im1hdGNoZWRGaWVsZCI6InRpdGxlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIGFuZCBzb2NpYWwgcHJvZ3Jlc3MiXX0seyJtYXRjaGVkRmllbGQiOiJzdWJqZWN0cy52YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSIsIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSJdfV0sInByb3ZpZGVyIjpudWxsLCJyaWdodHMiOm51bGwsInNvdXJjZUxpbmsiOiJodHRwczovL21pdC5wcmltby5leGxpYnJpc2dyb3VwLmNvbS9kaXNjb3ZlcnkvZnVsbGRpc3BsYXk/dmlkPTAxTUlUX0lOU1Q6TUlUXHUwMDI2ZG9jaWQ9YWxtYTk5MDAwNDkzNzU4MDEwNjc2MSIsInN1bW1hcnkiOm51bGx9LHsidGltZGV4UmVjb3JkSWQiOiJhbG1hOjk5MDAxNzEwNzc1MDEwNjc2MSIsInRpdGxlIjoiUG92ZXJ0eSBhbmQgcG92ZXJ0eSBhbGxldmlhdGlvbiBzdHJhdGVnaWVzIGluIE5vcnRoIEFtZXJpY2EiLCJjb250ZW50VHlwZSI6WyJMYW5ndWFnZSBtYXRlcmlhbCJdLCJjb250cmlidXRvcnMiOlt7ImtpbmQiOiJOb3Qgc3BlY2lmaWVkIiwidmFsdWUiOiJCYW5lLCBNYXJ5IEpvIn0seyJraW5kIjoiTm90IHNwZWNpZmllZCIsInZhbHVlIjoiWmVudGVubyBRdWludGVybywgUmVuZcyBIE0ifV0sInB1YmxpY2F0aW9uSW5mb3JtYXRpb24iOlsiQ2FtYnJpZGdlLCBNYXNzLiA6IEhhcnZhcmQgVW5pdmVyc2l0eSBEYXZpZCBSb2NrZWZlbGxlciBDZW50ZXIgZm9yIExhdGluIEFtZXJpY2FuIFN0dWRpZXMgOiBEaXN0cmlidXRlZCBieSBIYXJ2YXJkIFVuaXZlcnNpdHkgUHJlc3MsIDIwMDkiXSwiZGF0ZXMiOlt7ImtpbmQiOiJQdWJsaWNhdGlvbiBkYXRlIiwidmFsdWUiOiIyMDA5In1dLCJsaW5rcyI6bnVsbCwibm90ZXMiOlt7ImtpbmQiOiJUaXRsZSBTdGF0ZW1lbnQgb2YgUmVzcG9uc2liaWxpdHkiLCJ2YWx1ZSI6WyJlZGl0ZWQgYnkgTWFyeSBKbyBCYW5lIGFuZCBSZW5lzIEgWmVudGVubyJdfSx7ImtpbmQiOiJCaWJsaW9ncmFwaHkgTm90ZSIsInZhbHVlIjpbIkluY2x1ZGVzIGJpYmxpb2dyYXBoaWMgcmVmZXJlbmNlcyJdfV0sImhpZ2hsaWdodCI6W3sibWF0Y2hlZEZpZWxkIjoiY29udGVudHMiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgYW5kIFBsYWNlIGluIE5vcnRoIEFtZXJpY2EiLCJMYWJvciBQcm9kdWN0aXZpdHk6IFRoZSBMaW5rIGJldHdlZW4gRWNvbm9taWMgR3Jvd3RoIGFuZCBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgaW4gTWV4aWNvIiwiTWFjcm9lY29ub21pYyBQb2xpY3ksIE1hcmtldHMsIGFuZCBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgUmVkdWN0aW9uIiwiU2Nob29sIEltcHJvdmVtZW50IGFuZCB0aGUgUmVkdWN0aW9uIG9mIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSIsIlNvY2lhbCBTYWZldHkgTmV0IGFuZCBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UiXX0seyJtYXRjaGVkRmllbGQiOiJjaXRhdGlvbiIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBhbmQgXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlcG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIGFsbGV2aWF0aW9uIHN0cmF0ZWdpZXMgaW4gTm9ydGggQW1lcmljYS4gMjAwOS4iXX0seyJtYXRjaGVkRmllbGQiOiJ0aXRsZS5leGFjdF92YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHkgYW5kIHBvdmVydHkgYWxsZXZpYXRpb24gc3RyYXRlZ2llcyBpbiBOb3J0aCBBbWVyaWNhXHUwMDNjL3NwYW5cdTAwM2UiXX0seyJtYXRjaGVkRmllbGQiOiJ0aXRsZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBhbmQgXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlcG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIGFsbGV2aWF0aW9uIHN0cmF0ZWdpZXMgaW4gTm9ydGggQW1lcmljYSJdfSx7Im1hdGNoZWRGaWVsZCI6InN1YmplY3RzLnZhbHVlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIC0gTm9ydGggQW1lcmljYSIsIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSAtIE5vcnRoIEFtZXJpY2EgLSBQcmV2ZW50aW9uIiwiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIC0gTWV4aWNvIC0gUHJldmVudGlvbiIsIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSIsIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSAtIEdvdmVybm1lbnQgcG9saWN5Il19XSwicHJvdmlkZXIiOm51bGwsInJpZ2h0cyI6bnVsbCwic291cmNlTGluayI6Imh0dHBzOi8vbWl0LnByaW1vLmV4bGlicmlzZ3JvdXAuY29tL2Rpc2NvdmVyeS9mdWxsZGlzcGxheT92aWQ9MDFNSVRfSU5TVDpNSVRcdTAwMjZkb2NpZD1hbG1hOTkwMDE3MTA3NzUwMTA2NzYxIiwic3VtbWFyeSI6bnVsbH0seyJ0aW1kZXhSZWNvcmRJZCI6ImFsbWE6OTkwMDA2MDIzODMwMTA2NzYxIiwidGl0bGUiOiJQb3ZlcnR5IGFuZCBydXJhbCBkZXZlbG9wbWVudCA6IHBsYW5uZXJzLCBwZWFzYW50cywgYW5kIHBvdmVydHkiLCJjb250ZW50VHlwZSI6WyJMYW5ndWFnZSBtYXRlcmlhbCJdLCJjb250cmlidXRvcnMiOlt7ImtpbmQiOiJOb3Qgc3BlY2lmaWVkIiwidmFsdWUiOiJQdXR0YXN3YW1haWFoLCBLIn0seyJraW5kIjoiTm90IHNwZWNpZmllZCIsInZhbHVlIjoiSW5zdGl0dXRlIG9mIERldmVsb3BtZW50IFN0dWRpZXMgKEJyaWdodG9uLCBFbmdsYW5kKSJ9XSwicHVibGljYXRpb25JbmZvcm1hdGlvbiI6WyJMb25kb24gOiBJbnRlcm1lZGlhdGUgVGVjaG5vbG9neSBQdWJsaWNhdGlvbnMsIDE5OTAiXSwiZGF0ZXMiOlt7ImtpbmQiOiJQdWJsaWNhdGlvbiBkYXRlIiwidmFsdWUiOiIxOTkwIn1dLCJsaW5rcyI6bnVsbCwibm90ZXMiOlt7ImtpbmQiOiJUaXRsZSBTdGF0ZW1lbnQgb2YgUmVzcG9uc2liaWxpdHkiLCJ2YWx1ZSI6WyJlZGl0b3IsIEsuIFB1dHRhc3dhbWFpYWggOyBmb3Jld29yZCBieSBNaWNoYWVsIExpcHRvbiJdfSx7ImtpbmQiOiJHZW5lcmFsIE5vdGUiLCJ2YWx1ZSI6WyJQYXBlcnMgcHJlc2VudGVkIGF0IGEgc2VtaW5hciBvcmdhbml6ZWQgYnkgdGhlIEluc3RpdHV0ZSBvZiBEZXZlbG9wbWVudCBTdHVkaWVzLCBVbml2ZXJzaXR5IG9mIFN1c3NleCwgMTk4MyJdfSx7ImtpbmQiOiJHZW5lcmFsIE5vdGUiLCJ2YWx1ZSI6WyJPcmlnaW5hbGx5IHB1Ymxpc2hlZCBieSBPeGZvcmQgXHUwMDI2IElCSCBQdWJsaXNoaW5nLCBOZXcgRGVsaGksIDE5ODkiXX0seyJraW5kIjoiQmlibGlvZ3JhcGh5IE5vdGUiLCJ2YWx1ZSI6WyJJbmNsdWRlcyBiaWJsaW9ncmFwaGljYWwgcmVmZXJlbmNlcyBhbmQgaW5kZXgiXX1dLCJoaWdobGlnaHQiOlt7Im1hdGNoZWRGaWVsZCI6ImNpdGF0aW9uIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIGFuZCBydXJhbCBkZXZlbG9wbWVudCA6IHBsYW5uZXJzLCBwZWFzYW50cywgYW5kIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZXBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZS4gMTk5MC4iXX0seyJtYXRjaGVkRmllbGQiOiJ0aXRsZS5leGFjdF92YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHkgYW5kIHJ1cmFsIGRldmVsb3BtZW50IDogcGxhbm5lcnMsIHBlYXNhbnRzLCBhbmQgcG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIl19LHsibWF0Y2hlZEZpZWxkIjoidGl0bGUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgYW5kIHJ1cmFsIGRldmVsb3BtZW50IDogcGxhbm5lcnMsIHBlYXNhbnRzLCBhbmQgXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlcG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIl19XSwicHJvdmlkZXIiOm51bGwsInJpZ2h0cyI6bnVsbCwic291cmNlTGluayI6Imh0dHBzOi8vbWl0LnByaW1vLmV4bGlicmlzZ3JvdXAuY29tL2Rpc2NvdmVyeS9mdWxsZGlzcGxheT92aWQ9MDFNSVRfSU5TVDpNSVRcdTAwMjZkb2NpZD1hbG1hOTkwMDA2MDIzODMwMTA2NzYxIiwic3VtbWFyeSI6bnVsbH0seyJ0aW1kZXhSZWNvcmRJZCI6ImFsbWE6OTkwMDExNjI1OTcwMTA2NzYxIiwidGl0bGUiOiJQb3ZlcnR5IGFuZCBoZWFsdGgiLCJjb250ZW50VHlwZSI6WyJMYW5ndWFnZSBtYXRlcmlhbCJdLCJjb250cmlidXRvcnMiOlt7ImtpbmQiOiJOb3Qgc3BlY2lmaWVkIiwidmFsdWUiOiJPcmdhbmlzYXRpb24gZm9yIEVjb25vbWljIENvLW9wZXJhdGlvbiBhbmQgRGV2ZWxvcG1lbnQifSx7ImtpbmQiOiJOb3Qgc3BlY2lmaWVkIiwidmFsdWUiOiJXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uIn0seyJraW5kIjoiTm90IHNwZWNpZmllZCIsInZhbHVlIjoiREFDIE5ldHdvcmsgb24gUG92ZXJ0eSBSZWR1Y3Rpb24ifV0sInB1YmxpY2F0aW9uSW5mb3JtYXRpb24iOlsiUGFyaXMgOiBPRUNEIDsgR2VuZXZhIDogV29ybGQgSGVhbHRoIE9yZ2FuaXphdGlvbiwgYzIwMDMiXSwiZGF0ZXMiOlt7ImtpbmQiOiJQdWJsaWNhdGlvbiBkYXRlIiwidmFsdWUiOiIyMDAzIn1dLCJsaW5rcyI6W3sia2luZCI6IkRpZ2l0YWwgb2JqZWN0IFVSTCIsInJlc3RyaWN0aW9ucyI6bnVsbCwidGV4dCI6bnVsbCwidXJsIjoiaHR0cDovL2R4LmRvaS5vcmcvMTAuMTc4Ny85Nzg5MjY0MTAwMjA2LWVuIn1dLCJub3RlcyI6W3sia2luZCI6IkdlbmVyYWwgTm90ZSIsInZhbHVlIjpbIlwiVGhpcyBEQUMgUmVmZXJlbmNlIERvY3VtZW50IC4uLiBpcyB0aGUgcmVzdWx0IG9mIGNvbGxlY3RpdmUgd29yayB1bmRlcnRha2VuIGJ5IHRoZSBEQUMgTmV0d29yayBvbiBQb3ZlcnR5IFJlZHVjdGlvbiBhbmQgaXRzIFN1Ymdyb3VwIG9uIFBvdmVydHkgYW5kIEhlYWx0aFwiLS1QLiA0Il19LHsia2luZCI6IkdlbmVyYWwgTm90ZSIsInZhbHVlIjpbIkV4cGFuZHMgb246IERBQyBndWlkZWxpbmVzIG9uIHBvdmVydHkgcmVkdWN0aW9uIC8gT3JnYW5pc2F0aW9uIGZvciBFY29ub21pYyBDby1vcGVyYXRpb24gYW5kIERldmVsb3BtZW50LiAyMDAxIl19LHsia2luZCI6IkdlbmVyYWwgTm90ZSIsInZhbHVlIjpbIkFsc28gcHVibGlzaGVkIGluIEZyZW5jaCB1bmRlciB0aXRsZTogUGF1dnJldMOpIGV0IHNhbnTDqSJdfSx7ImtpbmQiOiJCaWJsaW9ncmFwaHkgTm90ZSIsInZhbHVlIjpbIkluY2x1ZGVzIGJpYmxpb2dyYXBoaWNhbCByZWZlcmVuY2VzIChwLiBbOTFdLTkyKSJdfV0sImhpZ2hsaWdodCI6W3sibWF0Y2hlZEZpZWxkIjoiY2l0YXRpb24iLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgYW5kIGhlYWx0aC4gMjAwMy4gUGFyaXMgOiBPRUNEIDsgR2VuZXZhIDogV29ybGQgSGVhbHRoIE9yZ2FuaXphdGlvbiwgYzIwMDMuIl19LHsibWF0Y2hlZEZpZWxkIjoidGl0bGUuZXhhY3RfdmFsdWUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5IGFuZCBoZWFsdGhcdTAwM2Mvc3Bhblx1MDAzZSJdfSx7Im1hdGNoZWRGaWVsZCI6Im5vdGVzLnZhbHVlIiwibWF0Y2hlZFBocmFzZXMiOlsiXCJUaGlzIERBQyBSZWZlcmVuY2UgRG9jdW1lbnQgLi4uIGlzIHRoZSByZXN1bHQgb2YgY29sbGVjdGl2ZSB3b3JrIHVuZGVydGFrZW4gYnkgdGhlIERBQyBOZXR3b3JrIG9uIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSIsIlJlZHVjdGlvbiBhbmQgaXRzIFN1Ymdyb3VwIG9uIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBhbmQgSGVhbHRoXCItLVAuIDQiLCJFeHBhbmRzIG9uOiBEQUMgZ3VpZGVsaW5lcyBvbiBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2Vwb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgcmVkdWN0aW9uIC8gT3JnYW5pc2F0aW9uIGZvciBFY29ub21pYyBDby1vcGVyYXRpb24gYW5kIERldmVsb3BtZW50Il19LHsibWF0Y2hlZEZpZWxkIjoidGl0bGUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgYW5kIGhlYWx0aCJdfSx7Im1hdGNoZWRGaWVsZCI6InN1YmplY3RzLnZhbHVlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIC0gSGVhbHRoIGFzcGVjdHMiLCJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgLSBIZWFsdGggYXNwZWN0cyIsIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSJdfSx7Im1hdGNoZWRGaWVsZCI6ImNvbnRyaWJ1dG9ycy52YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIkRBQyBOZXR3b3JrIG9uIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBSZWR1Y3Rpb24iXX1dLCJwcm92aWRlciI6bnVsbCwicmlnaHRzIjpudWxsLCJzb3VyY2VMaW5rIjoiaHR0cHM6Ly9taXQucHJpbW8uZXhsaWJyaXNncm91cC5jb20vZGlzY292ZXJ5L2Z1bGxkaXNwbGF5P3ZpZD0wMU1JVF9JTlNUOk1JVFx1MDAyNmRvY2lkPWFsbWE5OTAwMTE2MjU5NzAxMDY3NjEiLCJzdW1tYXJ5IjpudWxsfSx7InRpbWRleFJlY29yZElkIjoiYWxtYTo5OTAwMjM4MTI2NDAxMDY3NjEiLCJ0aXRsZSI6IlBvdmVydHksIEluYyIsImNvbnRlbnRUeXBlIjpbIlByb2plY3RlZCBtZWRpdW0iXSwiY29udHJpYnV0b3JzIjpbeyJraW5kIjoic2NyZWVud3JpdGVyIiwidmFsdWUiOiJNaWxsZXIsIE1pY2hhZWwgTWF0aGVzb24ifSx7ImtpbmQiOiJmaWxtIGRpcmVjdG9yIiwidmFsdWUiOiJNaWxsZXIsIE1pY2hhZWwgTWF0aGVzb24ifSx7ImtpbmQiOiJmaWxtIHByb2R1Y2VyIiwidmFsdWUiOiJNaWxsZXIsIE1pY2hhZWwgTWF0aGVzb24ifSx7ImtpbmQiOiJmaWxtIHByb2R1Y2VyIiwidmFsdWUiOiJGaXR6Z2VyYWxkLCBKYW1lcyBGLiwgSnIifSx7ImtpbmQiOiJzY3JlZW53cml0ZXIiLCJ2YWx1ZSI6IldpdHQsIEpvbmF0aGFuIn0seyJraW5kIjoic2NyZWVud3JpdGVyIiwidmFsdWUiOiJTY2lvbmthLCBTaW1vbiJ9LHsia2luZCI6ImRpcmVjdG9yIG9mIHBob3RvZ3JhcGh5IiwidmFsdWUiOiJTY2lvbmthLCBTaW1vbiJ9LHsia2luZCI6ImVkaXRvciBvZiBtb3ZpbmcgaW1hZ2Ugd29yayIsInZhbHVlIjoiU2Npb25rYSwgU2ltb24ifSx7ImtpbmQiOiJkaXJlY3RvciBvZiBwaG90b2dyYXBoeSIsInZhbHVlIjoiU21hbGwsIFRob21hcyJ9LHsia2luZCI6ImVkaXRvciBvZiBtb3ZpbmcgaW1hZ2Ugd29yayIsInZhbHVlIjoiU21hbGwsIFRob21hcyJ9LHsia2luZCI6ImludGVydmlld2VlIiwidmFsdWUiOiJXYWRlLCBNYWdhdHRlIn0seyJraW5kIjoiaW50ZXJ2aWV3ZWUiLCJ2YWx1ZSI6IkF5aXR0ZXksIEdlb3JnZSBCLiBOIn0seyJraW5kIjoiaW50ZXJ2aWV3ZWUiLCJ2YWx1ZSI6IkVzY29iYXJpLCBNYXJjZWxsYSJ9LHsia2luZCI6ImludGVydmlld2VlIiwidmFsdWUiOiJDaGluZXJ5LUhlc3NlLCBIZXJtYW4ifSx7ImtpbmQiOiJwcmVzZW50ZXIiLCJ2YWx1ZSI6IlJvKkNvIEZpbG1zIEVkdWNhdGlvbmFsIChGaXJtKSJ9LHsia2luZCI6ImZpbG0gZGlzdHJpYnV0b3IiLCJ2YWx1ZSI6IlJvKkNvIEZpbG1zIEVkdWNhdGlvbmFsIChGaXJtKSJ9LHsia2luZCI6InByb2R1Y3Rpb24gY29tcGFueSIsInZhbHVlIjoiQWN0aW9uIE1lZGlhIn0seyJraW5kIjoicHJvZHVjdGlvbiBjb21wYW55IiwidmFsdWUiOiJDb2xkV2F0ZXIgTWVkaWEifSx7ImtpbmQiOiJwcm9kdWN0aW9uIGNvbXBhbnkiLCJ2YWx1ZSI6IlBvdmVydHlDdXJlIChPcmdhbml6YXRpb24pIn1dLCJwdWJsaWNhdGlvbkluZm9ybWF0aW9uIjpbIltTYXVzYWxpdG8sIENhbGlmb3JuaWFdIDogUm8qY28gRmlsbXMgRWR1Y2F0aW9uYWwgW0Rpc3RyaWJ1dG9yXSwgWzIwMTVdIl0sImRhdGVzIjpbeyJraW5kIjoiUHVibGljYXRpb24gZGF0ZSIsInZhbHVlIjoiMjAxNSJ9XSwibGlua3MiOm51bGwsIm5vdGVzIjpbeyJraW5kIjoiVGl0bGUgU3RhdGVtZW50IG9mIFJlc3BvbnNpYmlsaXR5IiwidmFsdWUiOlsiQWN0b24gTWVkaWEgcHJlc2VudHMgYSBQb3ZlcnR5IEN1cmUgcHJvZHVjdGlvbiBpbiBhc3NvY2lhdGlvbiB3aXRoIENvbGR3YXRlciBNZWRpYSA7IHByb2R1Y2VycywgSmFtZXMgRi4gRml0emdlcmFsZCwgSnIuLCBNaWNoYWVsIE1hdGhlc29uIE1pbGxlciA7IHdyaXR0ZW4gYnkgSm9uYXRoYW4gV2l0dCwgTWljaGFlbCBNYXRoZXNvbiBNaWxsZXIsIFNpbW9uIFNjaW9ua2EgOyBkaXJlY3RlZCBieSBNaWNoYWVsIE1hdGhlc29uIE1pbGxlciJdfSx7ImtpbmQiOiJHZW5lcmFsIE5vdGUiLCJ2YWx1ZSI6WyJJbmNsdWRlcyA5MSBtaW51dGUgYW5kIDU1IG1pbnV0ZSB2ZXJzaW9ucyJdfSx7ImtpbmQiOiJHZW5lcmFsIE5vdGUiLCJ2YWx1ZSI6WyJWaWRlb2Rpc2MgcmVsZWFzZSBvZiB0aGUgZG9jdW1lbnRhcnkgbW90aW9uIHBpY3R1cmUgcHJvZHVjZWQgaW4gMjAxNCJdfSx7ImtpbmQiOiJHZW5lcmFsIE5vdGUiLCJ2YWx1ZSI6WyJPcmlnaW5hbGx5IHJlbGVhc2VkIGFzIGEgbW90aW9uIHBpY3R1cmUgZG9jdW1lbnRhcnkgaW4gMjAxNCJdfSx7ImtpbmQiOiJDcmVhdGlvbi9Qcm9kdWN0aW9uIENyZWRpdHMgTm90ZSIsInZhbHVlIjpbIkRpcmVjdG9yIG9mIHBob3RvZ3JhcGh5LCBTaW1vbiBTY2lvbmthOyBlZGl0b3JzLCBTaW1vbiBTY2lvbmthLCBUb20gU21hbGwiXX0seyJraW5kIjoiUGFydGljaXBhbnQgb3IgUGVyZm9ybWVyIE5vdGUiLCJ2YWx1ZSI6WyJJbnRlcnZpZXdlZXM6IE1hZ2F0dGUgV2FkZSwgR2VvcmdlIEF5aXR0ZXksIE1hcmNlbGxhIEVzY29iYXJpLCBIZXJtYW4gQ2hpbmVycnktSGVzc2UiXX1dLCJoaWdobGlnaHQiOlt7Im1hdGNoZWRGaWVsZCI6InN1bW1hcnkiLCJtYXRjaGVkUGhyYXNlcyI6WyJoYXMgcG9zaXRpb25lZCBpdHNlbGYgYXMgdGhlIHByb3RhZ29uaXN0IG9mIGRldmVsb3BtZW50LCBnaXZpbmcgcmlzZSB0byBhIHZhc3QgbXVsdGktYmlsbGlvbiBkb2xsYXIgXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlcG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIiwiRHJhd2luZyBmcm9tIG92ZXIgMjAwIGludGVydmlld3MgZmlsbWVkIGluIDIwIGNvdW50cmllcywgXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlLCBJbmMuIHVuZWFydGhzIGFuIHVuY29tZm9ydGFibGUgc2lkZSJdfSx7Im1hdGNoZWRGaWVsZCI6ImNpdGF0aW9uIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlLCBJbmMuIDIwMTUuIFtTYXVzYWxpdG8sIENhbGlmb3JuaWFdIDogUm8qY28gRmlsbXMgRWR1Y2F0aW9uYWwgW0Rpc3RyaWJ1dG9yXSwgWzIwMTVdLiJdfSx7Im1hdGNoZWRGaWVsZCI6InRpdGxlLmV4YWN0X3ZhbHVlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eSwgSW5jXHUwMDNjL3NwYW5cdTAwM2UiXX0seyJtYXRjaGVkRmllbGQiOiJub3Rlcy52YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIkFjdG9uIE1lZGlhIHByZXNlbnRzIGEgXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIEN1cmUgcHJvZHVjdGlvbiBpbiBhc3NvY2lhdGlvbiB3aXRoIENvbGR3YXRlciBNZWRpYSA7IHByb2R1Y2VycywgSmFtZXMiXX0seyJtYXRjaGVkRmllbGQiOiJ0aXRsZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSwgSW5jIl19LHsibWF0Y2hlZEZpZWxkIjoic3ViamVjdHMudmFsdWUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgLSBEZXZlbG9waW5nIGNvdW50cmllcyIsIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSAtIEludGVybmF0aW9uYWwgY29vcGVyYXRpb24iLCJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UiLCJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgLSBJbnRlcm5hdGlvbmFsIGNvb3BlcmF0aW9uIl19XSwicHJvdmlkZXIiOm51bGwsInJpZ2h0cyI6bnVsbCwic291cmNlTGluayI6Imh0dHBzOi8vbWl0LnByaW1vLmV4bGlicmlzZ3JvdXAuY29tL2Rpc2NvdmVyeS9mdWxsZGlzcGxheT92aWQ9MDFNSVRfSU5TVDpNSVRcdTAwMjZkb2NpZD1hbG1hOTkwMDIzODEyNjQwMTA2NzYxIiwic3VtbWFyeSI6WyJcIidJIHNlZSBtdWx0aXBsZSBjb2xvbmlhbCBnb3Zlcm5vcnMsJyBzYXlzIEdoYW5haWFuIHNvZnR3YXJlIGVudHJlcHJlbmV1ciBIZXJtYW4gQ2hpbmVyeS1IZXNzZSBvZiB0aGUgaW50ZXJuYXRpb25hbCBkZXZlbG9wbWVudCBlc3RhYmxpc2htZW50IGluIEFmcmljYS4gJ1dlIGFyZSBoZWxkIGNhcHRpdmUgYnkgdGhlIGRvbm9yIGNvbW11bml0eS4nIFRoZSBXZXN0IGhhcyBwb3NpdGlvbmVkIGl0c2VsZiBhcyB0aGUgcHJvdGFnb25pc3Qgb2YgZGV2ZWxvcG1lbnQsIGdpdmluZyByaXNlIHRvIGEgdmFzdCBtdWx0aS1iaWxsaW9uIGRvbGxhciBwb3ZlcnR5IGluZHVzdHJ5IC0gdGhlIGJ1c2luZXNzIG9mIGRvaW5nIGdvb2QgaGFzIG5ldmVyIGJlZW4gYmV0dGVyLiBZZXQsIHRoZSByZXN1bHRzIGhhdmUgYmVlbiBtaXhlZCwgaW4gc29tZSBjYXNlcyBldmVuIGNhdGFzdHJvcGhpYywgYW5kIGxlYWRlcnMgaW4gdGhlIGRldmVsb3Bpbmcgd29ybGQgYXJlIGdyb3dpbmcgaW5jcmVhc2luZ2x5IHZvY2FsIGluIGNhbGxpbmcgZm9yIGNoYW5nZS4gRHJhd2luZyBmcm9tIG92ZXIgMjAwIGludGVydmlld3MgZmlsbWVkIGluIDIwIGNvdW50cmllcywgUG92ZXJ0eSwgSW5jLiB1bmVhcnRocyBhbiB1bmNvbWZvcnRhYmxlIHNpZGUgb2YgY2hhcml0eSB3ZSBjYW4gbm8gbG9uZ2VyIGlnbm9yZS4gRnJvbSBUT01zIFNob2VzIHRvIGludGVybmF0aW9uYWwgYWRvcHRpb25zLCBmcm9tIHNvbGFyIHBhbmVscyB0byBVLlMuIGFncmljdWx0dXJhbCBzdWJzaWRpZXMsIHRoZSBmaWxtIGNoYWxsZW5nZXMgZWFjaCBvZiB1cyB0byBhc2sgdGhlIHRvdWdoIHF1ZXN0aW9uOiBDb3VsZCBJIGJlIHBhcnQgb2YgdGhlIHByb2JsZW0/XCItLUZyb20gY29udGFpbmVyLiJdfSx7InRpbWRleFJlY29yZElkIjoiYWxtYTo5OTM1MTI1MzYxOTA2NzYxIiwidGl0bGUiOiJQb3ZlcnR5LCBJbmMiLCJjb250ZW50VHlwZSI6WyJQcm9qZWN0ZWQgbWVkaXVtIl0sImNvbnRyaWJ1dG9ycyI6W3sia2luZCI6ImRpcmVjdG9yIiwidmFsdWUiOiJNaWxsZXIsIE1pY2hhZWwgTWF0aGVzb24ifSx7ImtpbmQiOiJwcm9kdWNlciIsInZhbHVlIjoiTWlsbGVyLCBNaWNoYWVsIE1hdGhlc29uIn0seyJraW5kIjoicHVibGlzaGVyIiwidmFsdWUiOiJSbypDbyBGaWxtcyBFZHVjYXRpb25hbCAoRmlybSkifSx7ImtpbmQiOiJwcmVzZW50ZXIiLCJ2YWx1ZSI6IkFjdG9uIE1lZGlhIChGaXJtKSJ9LHsia2luZCI6InByb2R1Y3Rpb24gY29tcGFueSIsInZhbHVlIjoiUG92ZXJ0eUN1cmUgKE9yZ2FuaXphdGlvbikifSx7ImtpbmQiOiJmaWxtIGRpc3RyaWJ1dG9yIiwidmFsdWUiOiJGaWxtIFBsYXRmb3JtIn1dLCJwdWJsaWNhdGlvbkluZm9ybWF0aW9uIjpbIlNhdXNhbGl0bywgQ0EgOiBSbypDbyBGaWxtcywgMjAxNCJdLCJkYXRlcyI6W3sia2luZCI6IlB1YmxpY2F0aW9uIGRhdGUiLCJ2YWx1ZSI6IjIwMTQifV0sImxpbmtzIjpbeyJraW5kIjoiRGlnaXRhbCBvYmplY3QgVVJMIiwicmVzdHJpY3Rpb25zIjpudWxsLCJ0ZXh0IjoiQWNhZGVtaWMgVmlkZW8gT25saW5lIChBVk9OKSIsInVybCI6Imh0dHBzOi8vbmEwNi1wc2IuYWxtYS5leGxpYnJpc2dyb3VwLmNvbS92aWV3L3VyZXNvbHZlci8wMU1JVF9JTlNUL29wZW51cmw/dS5pZ25vcmVfZGF0ZV9jb3ZlcmFnZT10cnVlXHUwMDI2cG9ydGZvbGlvX3BpZD01MzU1Nzk1MDY4MDAwNjc2MVx1MDAyNkZvcmNlX2RpcmVjdD10cnVlIn1dLCJub3RlcyI6W3sia2luZCI6IlRpdGxlIFN0YXRlbWVudCBvZiBSZXNwb25zaWJpbGl0eSIsInZhbHVlIjpbIlJvKmNvIEZpbG1zIDsgQnJhaW5zdG9ybSBNZWRpYSA7IFR1Z2cgOyBBY3RvbiBNZWRpYSBwcmVzZW50cyA7IGEgUG92ZXJ0eSBDdXJlIHByb2R1Y3Rpb24gaW4gYXNzb2NpYXRpb24gd2l0aCBDb2xkd2F0ZXIgTWVkaWEgIDsgW2RpcmVjdGVkIGFuZCBwcm9kdWNlZCBieSBNaWNoYWVsIE1hdGhlc29uIE1pbGxlcl0iXX0seyJraW5kIjoiR2VuZXJhbCBOb3RlIiwidmFsdWUiOlsiVGl0bGUgZnJvbSByZXNvdXJjZSBkZXNjcmlwdGlvbiBwYWdlICh2aWV3ZWQgTWF5IDExLCAyMDIwKSJdfSx7ImtpbmQiOiJQYXJ0aWNpcGFudCBvciBQZXJmb3JtZXIgTm90ZSIsInZhbHVlIjpbIk5hcnJhdGVkIGJ5IFJvYmVydCBTaXJpY28iXX1dLCJoaWdobGlnaHQiOlt7Im1hdGNoZWRGaWVsZCI6InN1bW1hcnkiLCJtYXRjaGVkUGhyYXNlcyI6WyJoYXMgcG9zaXRpb25lZCBpdHNlbGYgYXMgdGhlIHByb3RhZ29uaXN0IG9mIGRldmVsb3BtZW50LCBnaXZpbmcgcmlzZSB0byBhIHZhc3QgbXVsdGkgLSBiaWxsaW9uIGRvbGxhciBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2Vwb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UiXX0seyJtYXRjaGVkRmllbGQiOiJjaXRhdGlvbiIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSwgSW5jLiAyMDE0LiBTYXVzYWxpdG8sIENBIDogUm8qQ28gRmlsbXMsIDIwMTQuIl19LHsibWF0Y2hlZEZpZWxkIjoidGl0bGUuZXhhY3RfdmFsdWUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5LCBJbmNcdTAwM2Mvc3Bhblx1MDAzZSJdfSx7Im1hdGNoZWRGaWVsZCI6Im5vdGVzLnZhbHVlIiwibWF0Y2hlZFBocmFzZXMiOlsiUm8qY28gRmlsbXMgOyBCcmFpbnN0b3JtIE1lZGlhIDsgVHVnZyA7IEFjdG9uIE1lZGlhIHByZXNlbnRzIDsgYSBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgQ3VyZSBwcm9kdWN0aW9uIGluIGFzc29jaWF0aW9uIl19LHsibWF0Y2hlZEZpZWxkIjoidGl0bGUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UsIEluYyJdfSx7Im1hdGNoZWRGaWVsZCI6InN1YmplY3RzLnZhbHVlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIC0gRGV2ZWxvcGluZyBjb3VudHJpZXMiLCJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgLSBJbnRlcm5hdGlvbmFsIGNvb3BlcmF0aW9uIl19XSwicHJvdmlkZXIiOm51bGwsInJpZ2h0cyI6bnVsbCwic291cmNlTGluayI6Imh0dHBzOi8vbWl0LnByaW1vLmV4bGlicmlzZ3JvdXAuY29tL2Rpc2NvdmVyeS9mdWxsZGlzcGxheT92aWQ9MDFNSVRfSU5TVDpNSVRcdTAwMjZkb2NpZD1hbG1hOTkzNTEyNTM2MTkwNjc2MSIsInN1bW1hcnkiOlsiVGhlIFdlc3QgaGFzIHBvc2l0aW9uZWQgaXRzZWxmIGFzIHRoZSBwcm90YWdvbmlzdCBvZiBkZXZlbG9wbWVudCwgZ2l2aW5nIHJpc2UgdG8gYSB2YXN0IG11bHRpIC0gYmlsbGlvbiBkb2xsYXIgcG92ZXJ0eSBpbmR1c3RyeSAtIHRoZSBidXNpbmVzcyBvZiBkb2luZyBnb29kIGhhcyBuZXZlciBiZWVuIGJldHRlci4gWWV0IHRoZSByZXN1bHRzIGhhdmUgYmVlbiBtaXhlZCwgaW4gc29tZSBjYXNlcyBldmVuIGNhdGFzdHJvcGhpYywgYW5kIGxlYWRlcnMgaW4gdGhlIGRldmVsb3Bpbmcgd29ybGQgYXJlIGdyb3dpbmcgaW5jcmVhc2luZ2x5IHZvY2FsIGluIGNhbGxpbmcgZm9yIGNoYW5nZS4gRnJvbSBUT01zIFNob2VzIHRvIGludGVybmF0aW9uYWwgYWRvcHRpb25zLCBmcm9tIHNvbGFyIHBhbmVscyB0byBVLlMuIGFncmljdWx0dXJhbCBzdWJzaWRpZXMsIHRoZSBmaWxtIGNoYWxsZW5nZXMgZWFjaCBvZiB1cyB0byBhc2sgdGhlIHRvdWdoIHF1ZXN0aW9uOiBDb3VsZCBJIGJlIHBhcnQgb2YgdGhlIHByb2JsZW0/Il19LHsidGltZGV4UmVjb3JkSWQiOiJhbG1hOjk5MzUxNzM1MzUwMDY3NjEiLCJ0aXRsZSI6IlBvdmVydHkgdHJhcHMiLCJjb250ZW50VHlwZSI6WyJMYW5ndWFnZSBtYXRlcmlhbCJdLCJjb250cmlidXRvcnMiOlt7ImtpbmQiOiJOb3Qgc3BlY2lmaWVkIiwidmFsdWUiOiJCb3dsZXMsIFNhbXVlbCJ9LHsia2luZCI6Ik5vdCBzcGVjaWZpZWQiLCJ2YWx1ZSI6IkR1cmxhdWYsIFN0ZXZlbiBOIn0seyJraW5kIjoiTm90IHNwZWNpZmllZCIsInZhbHVlIjoiSG9mZiwgS2FybGEgUnV0aCJ9LHsia2luZCI6Ik5vdCBzcGVjaWZpZWQiLCJ2YWx1ZSI6IlJ1c3NlbGwgU2FnZSBGb3VuZGF0aW9uIn1dLCJwdWJsaWNhdGlvbkluZm9ybWF0aW9uIjpbIk5ldyBZb3JrIDogUnVzc2VsbCBTYWdlIEZvdW5kYXRpb24gOyBQcmluY2V0b24sIE4uSi4gOiBQcmluY2V0b24gVW5pdmVyc2l0eSBQcmVzcywgYzIwMDYiXSwiZGF0ZXMiOlt7ImtpbmQiOiJQdWJsaWNhdGlvbiBkYXRlIiwidmFsdWUiOiIyMDA2In1dLCJsaW5rcyI6W3sia2luZCI6IkRpZ2l0YWwgb2JqZWN0IFVSTCIsInJlc3RyaWN0aW9ucyI6bnVsbCwidGV4dCI6IkRlIEdydXl0ZXIgUHJpbmNldG9uIFVuaXZlcnNpdHkgUHJlc3MgZUJvb2stUGFja2FnZSBCYWNrbGlzdCAyMDAwLTIwMTMiLCJ1cmwiOiJodHRwczovL25hMDYtcHNiLmFsbWEuZXhsaWJyaXNncm91cC5jb20vdmlldy91cmVzb2x2ZXIvMDFNSVRfSU5TVC9vcGVudXJsP3UuaWdub3JlX2RhdGVfY292ZXJhZ2U9dHJ1ZVx1MDAyNnBvcnRmb2xpb19waWQ9NTM2NTczNDI2MjAwMDY3NjFcdTAwMjZGb3JjZV9kaXJlY3Q9dHJ1ZSJ9LHsia2luZCI6IkRpZ2l0YWwgb2JqZWN0IFVSTCIsInJlc3RyaWN0aW9ucyI6bnVsbCwidGV4dCI6IkpTVE9SIEJvb2tzIEVCQSBDb2xsZWN0aW9uIiwidXJsIjoiaHR0cHM6Ly9uYTA2LXBzYi5hbG1hLmV4bGlicmlzZ3JvdXAuY29tL3ZpZXcvdXJlc29sdmVyLzAxTUlUX0lOU1Qvb3BlbnVybD91Lmlnbm9yZV9kYXRlX2NvdmVyYWdlPXRydWVcdTAwMjZwb3J0Zm9saW9fcGlkPTUzNjI3MzQwMjEwMDA2NzYxXHUwMDI2Rm9yY2VfZGlyZWN0PXRydWUifSx7ImtpbmQiOiJEaWdpdGFsIG9iamVjdCBVUkwiLCJyZXN0cmljdGlvbnMiOm51bGwsInRleHQiOiJkZSBHcnV5dGVyIGVCb29rcyBDb21wbGV0ZSIsInVybCI6Imh0dHBzOi8vbmEwNi1wc2IuYWxtYS5leGxpYnJpc2dyb3VwLmNvbS92aWV3L3VyZXNvbHZlci8wMU1JVF9JTlNUL29wZW51cmw/dS5pZ25vcmVfZGF0ZV9jb3ZlcmFnZT10cnVlXHUwMDI2cG9ydGZvbGlvX3BpZD01MzY2MjMzNjE2MDAwNjc2MVx1MDAyNkZvcmNlX2RpcmVjdD10cnVlIn0seyJraW5kIjoiRGlnaXRhbCBvYmplY3QgVVJMIiwicmVzdHJpY3Rpb25zIjpudWxsLCJ0ZXh0IjoiRGUgR3J1eXRlciBQcmluY2V0b24gVW5pdmVyc2l0eSBQcmVzcyBDb21wbGV0ZSBlQm9vay1QYWNrYWdlIDIwMTYiLCJ1cmwiOiJodHRwczovL25hMDYtcHNiLmFsbWEuZXhsaWJyaXNncm91cC5jb20vdmlldy91cmVzb2x2ZXIvMDFNSVRfSU5TVC9vcGVudXJsP3UuaWdub3JlX2RhdGVfY292ZXJhZ2U9dHJ1ZVx1MDAyNnBvcnRmb2xpb19waWQ9NTM2MzAzODY2NjAwMDY3NjFcdTAwMjZGb3JjZV9kaXJlY3Q9dHJ1ZSJ9XSwibm90ZXMiOlt7ImtpbmQiOiJUaXRsZSBTdGF0ZW1lbnQgb2YgUmVzcG9uc2liaWxpdHkiLCJ2YWx1ZSI6WyJlZGl0ZWQgYnkgU2FtdWVsIEJvd2xlcywgU3RldmVuIE4uIER1cmxhdWYsIGFuZCBLYXJsYSBIb2ZmIl19LHsia2luZCI6IkdlbmVyYWwgTm90ZSIsInZhbHVlIjpbIkRlc2NyaXB0aW9uIGJhc2VkIHVwb24gcHJpbnQgdmVyc2lvbiBvZiByZWNvcmQiXX0seyJraW5kIjoiQmlibGlvZ3JhcGh5IE5vdGUiLCJ2YWx1ZSI6WyJJbmNsdWRlcyBiaWJsaW9ncmFwaGljYWwgcmVmZXJlbmNlcyBhbmQgaW5kZXgiXX1dLCJoaWdobGlnaHQiOlt7Im1hdGNoZWRGaWVsZCI6InN1bW1hcnkiLCJtYXRjaGVkUGhyYXNlcyI6WyJNdWNoIHBvcHVsYXIgYmVsaWVmLS1hbmQgcHVibGljIHBvbGljeS0tcmVzdHMgb24gdGhlIGlkZWEgdGhhdCB0aG9zZSBib3JuIGludG8gXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlcG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIGhhdmUgaXQgaW4gdGhlaXIiLCJCdXQgdGhlIHBlcnNpc3RlbmNlIG9mIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZXBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBhbmQgZXZlci1ncm93aW5nIGVjb25vbWljIGluZXF1YWxpdHkgYXJvdW5kIHRoZSB3b3JsZCBoYXZlIGxlZCBtYW55IGVjb25vbWlzdHMiLCJJbiBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgVHJhcHMsIFNhbXVlbCBCb3dsZXMsIFN0ZXZlbiBEdXJsYXVmLCBLYXJsYSBIb2ZmLCBhbmQgdGhlIGJvb2sncyBvdGhlciBjb250cmlidXRvcnMgYXJndWUiLCJ0aGF0IHRoZXJlIGFyZSBtYW55IGNvbmRpdGlvbnMgdGhhdCBtYXkgdHJhcCBpbmRpdmlkdWFscywgZ3JvdXBzLCBhbmQgd2hvbGUgZWNvbm9taWVzIGluIGludHJhY3RhYmxlIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZXBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSIsIkFtb25nIHRoZSBzb3VyY2VzIG9mIHRoZSBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2Vwb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2Ugb2YgbmF0aW9ucywgdGhlIGF1dGhvcnMgYXNzaWduIGEgcHJpbWFyeSByb2xlIHRvIHNvY2lhbCBhbmQgcG9saXRpY2FsIl19LHsibWF0Y2hlZEZpZWxkIjoiY29udGVudHMiLCJtYXRjaGVkUGhyYXNlcyI6WyJUaGUgVGhlb3J5IG9mIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBUcmFwcy4gV2hhdCBIYXZlIFdlIExlYXJuZWQ/IiwiVGhlIFBlcnNpc3RlbmNlIG9mIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBpbiBUaGUgQW1lcmljYXM6IFRoZSBSb2xlIG9mIEluc3RpdHV0aW9ucyIsIlRoZSBLaW4gU3lzdGVtIGFzIGEgXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIFRyYXA/IiwiSW5zdGl0dXRpb25hbCBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgVHJhcHMiLCJEdXJhYmxlIEluZXF1YWxpdHk6IFNwYXRpYWwgRHluYW1pY3MsIFNvY2lhbCBQcm9jZXNzZXMsIGFuZCB0aGUgUGVyc2lzdGVuY2Ugb2YgXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIGluIENoaWNhZ28gTmVpZ2hib3Job29kcyJdfSx7Im1hdGNoZWRGaWVsZCI6ImNpdGF0aW9uIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIHRyYXBzLiAyMDA2LiJdfSx7Im1hdGNoZWRGaWVsZCI6InRpdGxlLmV4YWN0X3ZhbHVlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eSB0cmFwc1x1MDAzYy9zcGFuXHUwMDNlIl19LHsibWF0Y2hlZEZpZWxkIjoidGl0bGUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgdHJhcHMiXX0seyJtYXRjaGVkRmllbGQiOiJzdWJqZWN0cy52YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSJdfV0sInByb3ZpZGVyIjpudWxsLCJyaWdodHMiOm51bGwsInNvdXJjZUxpbmsiOiJodHRwczovL21pdC5wcmltby5leGxpYnJpc2dyb3VwLmNvbS9kaXNjb3ZlcnkvZnVsbGRpc3BsYXk/dmlkPTAxTUlUX0lOU1Q6TUlUXHUwMDI2ZG9jaWQ9YWxtYTk5MzUxNzM1MzUwMDY3NjEiLCJzdW1tYXJ5IjpbIk11Y2ggcG9wdWxhciBiZWxpZWYtLWFuZCBwdWJsaWMgcG9saWN5LS1yZXN0cyBvbiB0aGUgaWRlYSB0aGF0IHRob3NlIGJvcm4gaW50byBwb3ZlcnR5IGhhdmUgaXQgaW4gdGhlaXIgcG93ZXIgdG8gZXNjYXBlLiBCdXQgdGhlIHBlcnNpc3RlbmNlIG9mIHBvdmVydHkgYW5kIGV2ZXItZ3Jvd2luZyBlY29ub21pYyBpbmVxdWFsaXR5IGFyb3VuZCB0aGUgd29ybGQgaGF2ZSBsZWQgbWFueSBlY29ub21pc3RzIHRvIHNlcmlvdXNseSBxdWVzdGlvbiB0aGUgbW9kZWwgb2YgaW5kaXZpZHVhbCBlY29ub21pYyBzZWxmLWRldGVybWluYXRpb24gd2hlbiBpdCBjb21lcyB0byB0aGUgcG9vci4gSW4gUG92ZXJ0eSBUcmFwcywgU2FtdWVsIEJvd2xlcywgU3RldmVuIER1cmxhdWYsIEthcmxhIEhvZmYsIGFuZCB0aGUgYm9vaydzIG90aGVyIGNvbnRyaWJ1dG9ycyBhcmd1ZSB0aGF0IHRoZXJlIGFyZSBtYW55IGNvbmRpdGlvbnMgdGhhdCBtYXkgdHJhcCBpbmRpdmlkdWFscywgZ3JvdXBzLCBhbmQgd2hvbGUgZWNvbm9taWVzIGluIGludHJhY3RhYmxlIHBvdmVydHkuIEZvciB0aGUgZmlyc3QgdGltZSB0aGUgZWRpdG9ycyBoYXZlIGJyb3VnaHQgdG9nZXRoZXIgdGhlIHBlcnNwZWN0aXZlcyBvZiBlY29ub21pY3MsIGVjb25vbWljIGhpc3RvcnksIGFuZCBzb2Npb2xvZ3kgdG8gYXNzZXNzIHdoYXQgd2Uga25vdy0tYW5kIGRvbid0IGtub3ctLWFib3V0IHN1Y2ggdHJhcHMuIEFtb25nIHRoZSBzb3VyY2VzIG9mIHRoZSBwb3ZlcnR5IG9mIG5hdGlvbnMsIHRoZSBhdXRob3JzIGFzc2lnbiBhIHByaW1hcnkgcm9sZSB0byBzb2NpYWwgYW5kIHBvbGl0aWNhbCBpbnN0aXR1dGlvbnMsIHJhbmdpbmcgZnJvbSBjb3JydXB0aW9uIHRvIHNlZW1pbmdseSBiZW5pZ24gc29jaWFsIGN1c3RvbXMgc3VjaCBhcyBraW4gc3lzdGVtcy4gTWFueSBvZiB0aGUgaW5zdGl0dXRpb25zIHRoYXQga2VlcCBuYXRpb25zIHBvb3IgaGF2ZSBkZWVwIHJvb3RzIGluIGNvbG9uaWFsIGhpc3RvcnkgYW5kIHBlcnNpc3QgbG9uZyBhZnRlciB0aGVpciBpbml0aWFsIGNhdXNlcyBhcmUgZ29uZS4gTmVpZ2hib3Job29kIGVmZmVjdHMtLWluZmx1ZW5jZXMgc3VjaCBhcyBuZXR3b3Jrcywgcm9sZSBtb2RlbHMsIGFuZCBhc3BpcmF0aW9ucy0tY2FuIGNyZWF0ZSBoYXJkLXRvLWVzY2FwZSBwb2NrZXRzIG9mIHBvdmVydHkgZXZlbiBpbiByaWNoIGNvdW50cmllcy4gU2ltaWxhciBpbmRpdmlkdWFscyBpbiBkaXNzaW1pbGFyIHNvY2lvZWNvbm9taWMgZW52aXJvbm1lbnRzIGRldmVsb3AgZGlmZmVyZW50IHByZWZlcmVuY2VzIGFuZCBiZWxpZWZzIHRoYXQgY2FuIHRyYW5zbWl0IHBvdmVydHkgb3IgYWZmbHVlbmNlIGZyb20gZ2VuZXJhdGlvbiB0byBnZW5lcmF0aW9uLiBUaGUgYm9vayBwcmVzZW50cyBldmlkZW5jZSBvZiBoYXJtZnVsIG5laWdoYm9yaG9vZCBlZmZlY3RzIGFuZCBkaXNjdXNzZXMgcG9saWNpZXMgdG8gb3ZlcmNvbWUgdGhlbSwgd2l0aCBhdHRlbnRpb24gdG8gdGhlIHVuY2VydGFpbnR5IHRoYXQgZXhpc3RzIGluIGV2YWx1YXRpbmcgc3VjaCBwb2xpY2llcy4iXX0seyJ0aW1kZXhSZWNvcmRJZCI6ImFsbWE6OTkwMDEzNjYxODkwMTA2NzYxIiwidGl0bGUiOiJQb3ZlcnR5IHRyYXBzIiwiY29udGVudFR5cGUiOlsiTGFuZ3VhZ2UgbWF0ZXJpYWwiXSwiY29udHJpYnV0b3JzIjpbeyJraW5kIjoiTm90IHNwZWNpZmllZCIsInZhbHVlIjoiQm93bGVzLCBTYW11ZWwifSx7ImtpbmQiOiJOb3Qgc3BlY2lmaWVkIiwidmFsdWUiOiJEdXJsYXVmLCBTdGV2ZW4gTiJ9LHsia2luZCI6Ik5vdCBzcGVjaWZpZWQiLCJ2YWx1ZSI6IkhvZmYsIEthcmxhIn0seyJraW5kIjoiTm90IHNwZWNpZmllZCIsInZhbHVlIjoiUnVzc2VsbCBTYWdlIEZvdW5kYXRpb24ifV0sInB1YmxpY2F0aW9uSW5mb3JtYXRpb24iOlsiTmV3IFlvcmsgOiBSdXNzZWxsIFNhZ2UgRm91bmRhdGlvbiA7IFByaW5jZXRvbiA6IFByaW5jZXRvbiBVbml2ZXJzaXR5IFByZXNzLCBjMjAwNiJdLCJkYXRlcyI6W3sia2luZCI6IlB1YmxpY2F0aW9uIGRhdGUiLCJ2YWx1ZSI6IjIwMDYifV0sImxpbmtzIjpudWxsLCJub3RlcyI6W3sia2luZCI6IlRpdGxlIFN0YXRlbWVudCBvZiBSZXNwb25zaWJpbGl0eSIsInZhbHVlIjpbImVkaXRlZCBieSBTYW11ZWwgQm93bGVzLCBTdGV2ZW4gTi4gRHVybGF1ZiwgYW5kIEthcmxhIEhvZmYiXX0seyJraW5kIjoiQmlibGlvZ3JhcGh5IE5vdGUiLCJ2YWx1ZSI6WyJJbmNsdWRlcyBiaWJsaW9ncmFwaGljYWwgcmVmZXJlbmNlcyBhbmQgaW5kZXgiXX1dLCJoaWdobGlnaHQiOlt7Im1hdGNoZWRGaWVsZCI6ImNvbnRlbnRzIiwibWF0Y2hlZFBocmFzZXMiOlsiVGhlIHRoZW9yeSBvZiBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2Vwb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgdHJhcHMgOiB3aGF0IGhhdmUgd2UgbGVhcm5lZD8iLCJUaGUgcGVyc2lzdGVuY2Ugb2YgXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlcG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIGluIHRoZSBBbWVyaWNhcyA6IHRoZSByb2xlIG9mIGluc3RpdHV0aW9ucyIsIlRoZSBraW4gc3lzdGVtIGFzIGEgXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlcG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIHRyYXA/IiwiSW5zdGl0dXRpb25hbCBcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2Vwb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgdHJhcHMiLCJEdXJhYmxlIGluZXF1YWxpdHkgOiBzcGF0aWFsIGR5bmFtaWNzLCBzb2NpYWwgcHJvY2Vzc2VzLCBhbmQgdGhlIHBlcnNpc3RlbmNlIG9mIFx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZXBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSBpbiBDaGljYWdvIG5laWdoYm9yaG9vZHMiXX0seyJtYXRjaGVkRmllbGQiOiJjaXRhdGlvbiIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSB0cmFwcy4gMjAwNi4iXX0seyJtYXRjaGVkRmllbGQiOiJ0aXRsZS5leGFjdF92YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHkgdHJhcHNcdTAwM2Mvc3Bhblx1MDAzZSJdfSx7Im1hdGNoZWRGaWVsZCI6InRpdGxlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlIHRyYXBzIl19XSwicHJvdmlkZXIiOm51bGwsInJpZ2h0cyI6bnVsbCwic291cmNlTGluayI6Imh0dHBzOi8vbWl0LnByaW1vLmV4bGlicmlzZ3JvdXAuY29tL2Rpc2NvdmVyeS9mdWxsZGlzcGxheT92aWQ9MDFNSVRfSU5TVDpNSVRcdTAwMjZkb2NpZD1hbG1hOTkwMDEzNjYxODkwMTA2NzYxIiwic3VtbWFyeSI6bnVsbH0seyJ0aW1kZXhSZWNvcmRJZCI6ImFsbWE6OTkwMDEzMTA2NDcwMTA2NzYxIiwidGl0bGUiOiJQb3ZlcnR5LCAxOTk5IiwiY29udGVudFR5cGUiOlsiTGFuZ3VhZ2UgbWF0ZXJpYWwiXSwiY29udHJpYnV0b3JzIjpbeyJraW5kIjoiTm90IHNwZWNpZmllZCIsInZhbHVlIjoiQmlzaGF3LCBBbGVtYXllaHUifSx7ImtpbmQiOiJOb3Qgc3BlY2lmaWVkIiwidmFsdWUiOiJJY2VsYW5kLCBKb2huIn0seyJraW5kIjoiTm90IHNwZWNpZmllZCIsInZhbHVlIjoiVW5pdGVkIFN0YXRlcy4gQnVyZWF1IG9mIHRoZSBDZW5zdXMifV0sInB1YmxpY2F0aW9uSW5mb3JtYXRpb24iOlsiW1dhc2hpbmd0b24sIEQuQy5dIDogVS5TLiBEZXB0LiBvZiBDb21tZXJjZSwgRWNvbm9taWNzIGFuZCBTdGF0aXN0aWNzIEFkbWluaXN0cmF0aW9uLCBVLlMuIENlbnN1cyBCdXJlYXUsIFsyMDAzXSJdLCJkYXRlcyI6W3sia2luZCI6IlB1YmxpY2F0aW9uIGRhdGUiLCJ2YWx1ZSI6IjIwMDMifV0sImxpbmtzIjpbeyJraW5kIjoiRGlnaXRhbCBvYmplY3QgVVJMIiwicmVzdHJpY3Rpb25zIjpudWxsLCJ0ZXh0IjoiVVMgR292ZXJubWVudCBEb2N1bWVudHMgQ29sbGVjdGlvbiIsInVybCI6Imh0dHA6Ly9wdXJsLmFjY2Vzcy5ncG8uZ292L0dQTy9MUFMzNjI2NCJ9LHsia2luZCI6IkRpZ2l0YWwgb2JqZWN0IFVSTCIsInJlc3RyaWN0aW9ucyI6bnVsbCwidGV4dCI6bnVsbCwidXJsIjoiaHR0cDovL3B1cmwuYWNjZXNzLmdwby5nb3YvR1BPL0xQUzM2MjY0In1dLCJub3RlcyI6W3sia2luZCI6IlRpdGxlIFN0YXRlbWVudCBvZiBSZXNwb25zaWJpbGl0eSIsInZhbHVlIjpbImJ5IEFsZW1heWVodSBCaXNoYXcgYW5kIEpvaG4gSWNlbGFuZCJdfSx7ImtpbmQiOiJHZW5lcmFsIE5vdGUiLCJ2YWx1ZSI6WyJUaXRsZSBmcm9tIHRpdGxlIHNjcmVlbiAodmlld2VkIG9uIFNlcHQuIDE3LCAyMDAzKSJdfSx7ImtpbmQiOiJHZW5lcmFsIE5vdGUiLCJ2YWx1ZSI6WyJcIklzc3VlZCBNYXkgMjAwMy5cIiJdfV0sImhpZ2hsaWdodCI6W3sibWF0Y2hlZEZpZWxkIjoiY2l0YXRpb24iLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UsIDE5OTkuIDIwMDMuIFtXYXNoaW5ndG9uLCBELkMuXSA6IFUuUy4iXX0seyJtYXRjaGVkRmllbGQiOiJ0aXRsZS5leGFjdF92YWx1ZSIsIm1hdGNoZWRQaHJhc2VzIjpbIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHksIDE5OTlcdTAwM2Mvc3Bhblx1MDAzZSJdfSx7Im1hdGNoZWRGaWVsZCI6InRpdGxlIiwibWF0Y2hlZFBocmFzZXMiOlsiXHUwMDNjc3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiXHUwMDNlUG92ZXJ0eVx1MDAzYy9zcGFuXHUwMDNlLCAxOTk5Il19LHsibWF0Y2hlZEZpZWxkIjoic3ViamVjdHMudmFsdWUiLCJtYXRjaGVkUGhyYXNlcyI6WyJcdTAwM2NzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCJcdTAwM2VQb3ZlcnR5XHUwMDNjL3NwYW5cdTAwM2UgLSBVbml0ZWQgU3RhdGVzIC0gU3RhdGlzdGljcyIsIlx1MDAzY3NwYW4gY2xhc3M9XCJoaWdobGlnaHRcIlx1MDAzZVBvdmVydHlcdTAwM2Mvc3Bhblx1MDAzZSJdfV0sInByb3ZpZGVyIjpudWxsLCJyaWdodHMiOm51bGwsInNvdXJjZUxpbmsiOiJodHRwczovL21pdC5wcmltby5leGxpYnJpc2dyb3VwLmNvbS9kaXNjb3ZlcnkvZnVsbGRpc3BsYXk/dmlkPTAxTUlUX0lOU1Q6TUlUXHUwMDI2ZG9jaWQ9YWxtYTk5MDAxMzEwNjQ3MDEwNjc2MSIsInN1bW1hcnkiOm51bGx9XSwiYWdncmVnYXRpb25zIjp7ImFjY2Vzc1RvRmlsZXMiOlt7ImtleSI6Ik5vdCBvd25lZCBieSBNSVQiLCJkb2NDb3VudCI6NDN9XSwiY29udGVudFR5cGUiOlt7ImtleSI6Imxhbmd1YWdlIG1hdGVyaWFsIiwiZG9jQ291bnQiOjIxNjgyfSx7ImtleSI6InByb2plY3RlZCBtZWRpdW0iLCJkb2NDb3VudCI6NTk2fSx7ImtleSI6InRoZXNpcyIsImRvY0NvdW50IjoxNjZ9LHsia2V5IjoibWFudXNjcmlwdCBsYW5ndWFnZSBtYXRlcmlhbCIsImRvY0NvdW50IjoxNTh9LHsia2V5IjoiYXJ0aWNsZSIsImRvY0NvdW50Ijo2MH0seyJrZXkiOiJtdXNpY2FsIHNvdW5kIHJlY29yZGluZyIsImRvY0NvdW50IjozOX0seyJrZXkiOiJwb2x5Z29uIGRhdGEiLCJkb2NDb3VudCI6Mzh9LHsia2V5Ijoibm90IHNwZWNpZmllZCIsImRvY0NvdW50IjozMX0seyJrZXkiOiJkYXRhc2V0IiwiZG9jQ291bnQiOjI3fSx7ImtleSI6ImNhcnRvZ3JhcGhpYyBtYXRlcmlhbCIsImRvY0NvdW50IjoyMn1dLCJjb250cmlidXRvcnMiOlt7ImtleSI6ImludGVybmF0aW9uYWwgbW9uZXRhcnkgZnVuZCIsImRvY0NvdW50IjoyNDc0fSx7ImtleSI6IndvcmxkIGJhbmsiLCJkb2NDb3VudCI6MTE0N30seyJrZXkiOiJ3b3JsZCBiYW5rIGdyb3VwIiwiZG9jQ291bnQiOjEwNDd9LHsia2V5IjoibmF0aW9uYWwgYnVyZWF1IG9mIGVjb25vbWljIHJlc2VhcmNoIiwiZG9jQ291bnQiOjgwOH0seyJrZXkiOiJvcmdhbmlzYXRpb24gZm9yIGVjb25vbWljIGNvLW9wZXJhdGlvbiBhbmQgZGV2ZWxvcG1lbnQiLCJkb2NDb3VudCI6MzMxfSx7ImtleSI6ImludGVybmF0aW9uYWwgbW9uZXRhcnkgZnVuZC4gZXh0ZXJuYWwgcmVsYXRpb25zIGRlcHQiLCJkb2NDb3VudCI6MjM2fSx7ImtleSI6ImludGVybmF0aW9uYWwgbW9uZXRhcnkgZnVuZC4gYWZyaWNhbiBkZXB0IiwiZG9jQ291bnQiOjE5MH0seyJrZXkiOiJyYXZhbGxpb24sIG1hcnRpbiIsImRvY0NvdW50IjoxNjN9LHsia2V5IjoiYXNpYW4gZGV2ZWxvcG1lbnQgYmFuayIsImRvY0NvdW50IjoxMDh9LHsia2V5IjoibWFzc2FjaHVzZXR0cyBpbnN0aXR1dGUgb2YgdGVjaG5vbG9neS4gZGVwYXJ0bWVudCBvZiB1cmJhbiBzdHVkaWVzIGFuZCBwbGFubmluZyIsImRvY0NvdW50IjoxMDR9XSwiZm9ybWF0IjpbeyJrZXkiOiJlbGVjdHJvbmljIHJlc291cmNlIiwiZG9jQ291bnQiOjI4OX0seyJrZXkiOiJzaGFwZWZpbGUiLCJkb2NDb3VudCI6Mzl9LHsia2V5IjoidGlmZiIsImRvY0NvdW50IjoyfSx7ImtleSI6ImpwZWciLCJkb2NDb3VudCI6MX1dLCJsYW5ndWFnZXMiOlt7ImtleSI6ImVuZ2xpc2giLCJkb2NDb3VudCI6MjIyNDR9LHsia2V5IjoiaW4gZW5nbGlzaCIsImRvY0NvdW50Ijo2OTl9LHsia2V5Ijoib3JpZ2luYWwgbGFuZ3VhZ2UgaW4gZW5nbGlzaCIsImRvY0NvdW50IjoxODB9LHsia2V5IjoiZnJlbmNoIiwiZG9jQ291bnQiOjE2NX0seyJrZXkiOiJlbmciLCJkb2NDb3VudCI6MTU3fSx7ImtleSI6InNwYW5pc2giLCJkb2NDb3VudCI6MTIxfSx7ImtleSI6Imdlcm1hbiIsImRvY0NvdW50Ijo2N30seyJrZXkiOiJlbl91cyIsImRvY0NvdW50IjozOX0seyJrZXkiOiJydXNzaWFuIiwiZG9jQ291bnQiOjM3fSx7ImtleSI6ImNoaW5lc2UiLCJkb2NDb3VudCI6Mjd9XSwibGl0ZXJhcnlGb3JtIjpbeyJrZXkiOiJub25maWN0aW9uIiwiZG9jQ291bnQiOjIwNDE3fSx7ImtleSI6ImZpY3Rpb24iLCJkb2NDb3VudCI6MTMxMH1dLCJwbGFjZXMiOlt7ImtleSI6InVydWd1YXkiLCJkb2NDb3VudCI6MTN9LHsia2V5IjoidW5pdGVkIHN0YXRlcyIsImRvY0NvdW50IjoxMn0seyJrZXkiOiJjYWxpZm9ybmlhIiwiZG9jQ291bnQiOjV9LHsia2V5Ijoia2VueWEiLCJkb2NDb3VudCI6M30seyJrZXkiOiJ1LnMuIiwiZG9jQ291bnQiOjN9LHsia2V5Ijoic2FuIG1hdGVvIGNvdW50eSAoY2FsaWYuKSIsImRvY0NvdW50IjoyfSx7ImtleSI6ImFsYW1lZGEgY291bnR5IChjYWxpZi4pIiwiZG9jQ291bnQiOjF9LHsia2V5IjoiYXNpYSIsImRvY0NvdW50IjoxfSx7ImtleSI6ImF0bGFudGEiLCJkb2NDb3VudCI6MX0seyJrZXkiOiJjb250cmEgY29zdGEgY291bnR5IChjYWxpZi4pIiwiZG9jQ291bnQiOjF9XSwic291cmNlIjpbeyJrZXkiOiJtaXQgYWxtYSIsImRvY0NvdW50IjoyMjUzNX0seyJrZXkiOiJkc3BhY2VAbWl0IiwiZG9jQ291bnQiOjI2MX0seyJrZXkiOiJvcGVuZ2VvbWV0YWRhdGEgZ2lzIHJlc291cmNlcyIsImRvY0NvdW50Ijo0M30seyJrZXkiOiJhYmR1bCBsYXRpZiBqYW1lZWwgcG92ZXJ0eSBhY3Rpb24gbGFiIGRhdGF2ZXJzZSIsImRvY0NvdW50IjoyN30seyJrZXkiOiJtaXQgYXJjaGl2ZXNzcGFjZSIsImRvY0NvdW50Ijo0fSx7ImtleSI6InJlc2VhcmNoIGRhdGFiYXNlcyIsImRvY0NvdW50IjoxfV0sInN1YmplY3RzIjpbeyJrZXkiOiJwb3ZlcnR5IiwiZG9jQ291bnQiOjQzODN9LHsia2V5IjoicG92ZXJ0eSByZWR1Y3Rpb24iLCJkb2NDb3VudCI6Mjk3Nn0seyJrZXkiOiJ1bml0ZWQgc3RhdGVzIiwiZG9jQ291bnQiOjE2Nzl9LHsia2V5IjoibWFjcm9lY29ub21pY3MgYW5kIGVjb25vbWljIGdyb3d0aCIsImRvY0NvdW50IjoxNTg3fSx7ImtleSI6Im1hY3JvZWNvbm9taWNzIiwiZG9jQ291bnQiOjE1NTh9LHsia2V5IjoicHVibGljIGZpbmFuY2UiLCJkb2NDb3VudCI6MTQ1OX0seyJrZXkiOiJwdWJsaWMgZmluYW5jZSBcdTAwMjYgdGF4YXRpb24iLCJkb2NDb3VudCI6MTM3Mn0seyJrZXkiOiJiYW5rcyBhbmQgYmFua2luZyIsImRvY0NvdW50IjoxMzQ4fSx7ImtleSI6ImludGVybmF0aW9uYWwgZWNvbm9taWNzIiwiZG9jQ291bnQiOjExODZ9LHsia2V5IjoiZWNvbm9taWMgZGV2ZWxvcG1lbnQiLCJkb2NDb3VudCI6MTEyMn1dfX19fQ== - recorded_at: Wed, 20 Mar 2024 15:53:37 GMT -recorded_with: VCR 6.2.0 + encoding: UTF-8 + string: '{"status":500,"error":"Internal Server Error"}' + recorded_at: Tue, 10 Mar 2026 20:28:57 GMT +recorded_with: VCR 6.4.0 diff --git a/test/vcr_cassettes/timdex_no_results.yml b/test/vcr_cassettes/timdex_no_results.yml index 061b0cb7..e9138a19 100644 --- a/test/vcr_cassettes/timdex_no_results.yml +++ b/test/vcr_cassettes/timdex_no_results.yml @@ -31,7 +31,7 @@ http_interactions: {\n key\n docCount\n }\n contributors {\n key\n docCount\n }\n format {\n key\n docCount\n }\n languages {\n key\n docCount\n }\n literaryForm {\n key\n docCount\n }\n places {\n key\n docCount\n }\n source - {\n key\n docCount\n }\n subjects {\n key\n docCount\n }\n }\n }\n}","variables":{"from":"0","q":"asdfiouwenlasd","booleanType":"AND","index":"FAKE_TIMDEX_INDEX","fulltext":true},"operationName":"TimdexSearch__BaseQuery"}' + {\n key\n docCount\n }\n subjects {\n key\n docCount\n }\n }\n }\n}","variables":{"from":"0","q":"asdfiouwenlasd","booleanType":"AND","index":"FAKE_TIMDEX_INDEX","perPage":20,"fulltext":true},"operationName":"TimdexSearch__BaseQuery"}' headers: Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 @@ -59,9 +59,9 @@ http_interactions: Referrer-Policy: - strict-origin-when-cross-origin Report-To: - - '{"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=qhei8g%2BNZQIPawqNjaZAZh2CTCodvsPyM7xo8UMX6f8%3D\u0026sid=67ff5de4-ad2b-4112-9289-cf96be89efed\u0026ts=1769551431"}],"max_age":3600}' + - '{"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=yT46harZFkpM%2BNqOMI%2BrsKHg%2FdslDX5DlwMwK5maapY%3D\u0026sid=67ff5de4-ad2b-4112-9289-cf96be89efed\u0026ts=1773174801"}],"max_age":3600}' Reporting-Endpoints: - - heroku-nel="https://nel.heroku.com/reports?s=qhei8g%2BNZQIPawqNjaZAZh2CTCodvsPyM7xo8UMX6f8%3D&sid=67ff5de4-ad2b-4112-9289-cf96be89efed&ts=1769551431" + - heroku-nel="https://nel.heroku.com/reports?s=yT46harZFkpM%2BNqOMI%2BrsKHg%2FdslDX5DlwMwK5maapY%3D&sid=67ff5de4-ad2b-4112-9289-cf96be89efed&ts=1773174801" Server: - Heroku Strict-Transport-Security: @@ -77,15 +77,15 @@ http_interactions: X-Permitted-Cross-Domain-Policies: - none X-Request-Id: - - 1b2c6369-5346-9fe1-2095-4b3571e38c4f + - 501f46ff-02d1-0c59-4056-e4561fffe0fe X-Runtime: - - '0.130609' + - '0.071096' X-Xss-Protection: - '0' Date: - - Tue, 27 Jan 2026 22:03:52 GMT + - Tue, 10 Mar 2026 20:33:21 GMT body: encoding: UTF-8 string: '{"data":{"search":{"hits":0,"records":[],"aggregations":{"accessToFiles":[],"contentType":[],"contributors":[],"format":[],"languages":[],"literaryForm":[],"places":[],"source":[],"subjects":[]}}}}' - recorded_at: Tue, 27 Jan 2026 22:03:52 GMT -recorded_with: VCR 6.3.1 + recorded_at: Tue, 10 Mar 2026 20:33:21 GMT +recorded_with: VCR 6.4.0