diff --git a/pkg/nnbd_migration/lib/nnbd_migration.dart b/pkg/nnbd_migration/lib/nnbd_migration.dart index 191a1e5b213..bad670e4b4c 100644 --- a/pkg/nnbd_migration/lib/nnbd_migration.dart +++ b/pkg/nnbd_migration/lib/nnbd_migration.dart @@ -151,8 +151,8 @@ class NullabilityFixDescription { /// An unnecessary downcast has been discarded. static const removeLanguageVersionComment = NullabilityFixDescription._( - appliedMessage: 'Removed language version comment so that NNBD features ' - 'will be allowed in this file', + appliedMessage: 'Removed language version comment so that null safety ' + 'features will be allowed in this file', kind: NullabilityFixKind.removeLanguageVersionComment, ); diff --git a/pkg/nnbd_migration/lib/src/front_end/resources/resources.g.dart b/pkg/nnbd_migration/lib/src/front_end/resources/resources.g.dart index 6a797ba7ddb..60672048d43 100644 --- a/pkg/nnbd_migration/lib/src/front_end/resources/resources.g.dart +++ b/pkg/nnbd_migration/lib/src/front_end/resources/resources.g.dart @@ -7708,7 +7708,7 @@ bGpzLW1ldGEgewogIGNvbG9yOiAjNjI3OTc4Owp9Cg== '''; String? _migration_js; -// migration_dart md5 is '42841af2334a9a190414f66dc4e8098b' +// migration_dart md5 is '358ff21ba0b18687adae31d00e4667d8' String _migration_js_base64 = ''' KGZ1bmN0aW9uIGRhcnRQcm9ncmFtKCl7ZnVuY3Rpb24gY29weVByb3BlcnRpZXMoYSxiKXt2YXIgcz1P YmplY3Qua2V5cyhhKQpmb3IodmFyIHI9MDtyPHMubGVuZ3RoO3IrKyl7dmFyIHE9c1tyXQpiW3FdPWFb @@ -9062,2565 +9062,2565 @@ cXVlcnlTZWxlY3RvcigicCIpCm8udG9TdHJpbmcKci50b1N0cmluZwpvLmlubmVyVGV4dD1yCm89cC5x dWVyeVNlbGVjdG9yKCJwcmUiKQpvLnRvU3RyaW5nCm8uaW5uZXJUZXh0PUouWVMocSkKbj10LmJxLmEo cC5xdWVyeVNlbGVjdG9yKCJhLmJvdHRvbSIpKQpCLnhuLnNMVShuLEEuWGQoImh0dHBzIiwiZ2l0aHVi LmNvbSIsImRhcnQtbGFuZy9zZGsvaXNzdWVzL25ldyIsQS5FRihbInRpdGxlIiwiQ3VzdG9tZXItcmVw -b3J0ZWQgaXNzdWUgd2l0aCBOTkJEIG1pZ3JhdGlvbiB0b29sOiAiK2EsImxhYmVscyIsdS5kLCJib2R5 -IixhKyJcblxuRXJyb3I6ICIrcisiXG5cblBsZWFzZSBmaWxsIGluIHRoZSBmb2xsb3dpbmc6XG5cbioq -TmFtZSBvZiBwYWNrYWdlIGJlaW5nIG1pZ3JhdGVkIChpZiBwdWJsaWMpKio6XG4qKldoYXQgSSB3YXMg -ZG9pbmcgd2hlbiB0aGlzIGlzc3VlIG9jY3VycmVkKio6XG4qKklzIGl0IHBvc3NpYmxlIHRvIHdvcmsg -YXJvdW5kIHRoaXMgaXNzdWUqKjpcbioqSGFzIHRoaXMgaXNzdWUgaGFwcGVuZWQgYmVmb3JlLCBhbmQg -aWYgc28sIGhvdyBvZnRlbioqOlxuKipEYXJ0IFNESyB2ZXJzaW9uKio6ICIrQS5FaihzLmdldEVsZW1l -bnRCeUlkKCJzZGstdmVyc2lvbiIpLnRleHRDb250ZW50KSsiXG4qKkFkZGl0aW9uYWwgZGV0YWlscyoq -OlxuXG5UaGFua3MgZm9yIGZpbGluZyFcblxuU3RhY2t0cmFjZTogX2F1dG8gcG9wdWxhdGVkIGJ5IG1p -Z3JhdGlvbiBwcmV2aWV3IHRvb2wuX1xuXG5gYGBcbiIrQS5FaihjKSsiXG5gYGBcbiJdLHQuTix0Lnop -KS5nbkQoKSkKcz1uLnN0eWxlCnMuZGlzcGxheT0iaW5pdGlhbCIKcz1wLnN0eWxlCnMuZGlzcGxheT0i -aW5pdGlhbCIKcz1BLkVqKGIpCndpbmRvdwppZih0eXBlb2YgY29uc29sZSE9InVuZGVmaW5lZCIpd2lu -ZG93LmNvbnNvbGUuZXJyb3IoYSsiOiAiK3MpCndpbmRvdwpzPUEuRWooYykKaWYodHlwZW9mIGNvbnNv -bGUhPSJ1bmRlZmluZWQiKXdpbmRvdy5jb25zb2xlLmVycm9yKHMpfSwKdDIoYSxiKXt2YXIgcyxyLHEs -cCxvPXQuaC5hKEEucWMoYS5jdXJyZW50VGFyZ2V0KSkKYS5wcmV2ZW50RGVmYXVsdCgpCnM9by5nZXRB -dHRyaWJ1dGUoImhyZWYiKQpzLnRvU3RyaW5nCnI9QS5VcyhzKQpxPUEuRzYocykKcD1BLmFLKHMpCmlm -KHEhPW51bGwpQS5hZihyLHEscCxiLG5ldyBBLm5UKHIscSxwKSkKZWxzZSBBLmFmKHIsbnVsbCxudWxs -LGIsbmV3IEEuTlkocikpfSwKSzAoYSl7dmFyIHMscixxLHA9ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigi -LnBvcHVwLXBhbmUiKQpwLnF1ZXJ5U2VsZWN0b3IoImgyIikuaW5uZXJUZXh0PSJGYWlsZWQgdG8gcmVy -dW4gZnJvbSBzb3VyY2VzIgpwLnF1ZXJ5U2VsZWN0b3IoInAiKS5pbm5lclRleHQ9IlNvdXJjZXMgY29u -dGFpbiBzdGF0aWMgYW5hbHlzaXMgZXJyb3JzOiIKcz1wLnF1ZXJ5U2VsZWN0b3IoInByZSIpCnMudG9T -dHJpbmcKcj1KLkVsKGEsdC5mKQpxPUEuTGgocikKcy5pbm5lclRleHQ9bmV3IEEubEoocixxLkMoInFV -KGxELkUpIikuYShuZXcgQS51ZSgpKSxxLkMoImxKPGxELkUscVU+IikpLkgoMCwiXG4iKQpxPXAucXVl -cnlTZWxlY3RvcigiYS5ib3R0b20iKS5zdHlsZQpxLmRpc3BsYXk9Im5vbmUiCnM9cC5zdHlsZQpzLmRp -c3BsYXk9ImluaXRpYWwifSwKR2coKXt2YXIgcz1kb2N1bWVudCxyPXQuaApBLkRoKHIsciwiVCIsInF1 -ZXJ5U2VsZWN0b3JBbGwiKQpzPW5ldyBBLnd6KHMucXVlcnlTZWxlY3RvckFsbCgiLmNvZGUiKSx0LlIp -CnMuSyhzLG5ldyBBLkdIKCkpfSwKaFgoYSxiLGMpe3JldHVybiBBLll3KGEsYixjKX0sCll3KGEsYixj -KXt2YXIgcz0wLHI9QS5GWCh0LnopLHE9MSxwLG8sbixtLGwsayxqLGksaCxnCnZhciAkYXN5bmMkaFg9 -QS5seihmdW5jdGlvbihkLGUpe2lmKGQ9PT0xKXtwPWUKcz1xfXdoaWxlKHRydWUpc3dpdGNoKHMpe2Nh -c2UgMDpxPTMKaz10Lk4Kcz02CnJldHVybiBBLmpRKEEuUTYoYSxBLkVGKFsicmVnaW9uIiwicmVnaW9u -Iiwib2Zmc2V0IixBLkVqKGIpXSxrLGspLHQuRyksJGFzeW5jJGhYKQpjYXNlIDY6bz1lCms9bwpqPUou -VTYoaykKaT10LmdxCm49bmV3IEEuZDIoQS5qZihpLmEoai5xKGssImVkaXRzIikpKSxBLmsoai5xKGss -ImV4cGxhbmF0aW9uIikpLEEuVWMoai5xKGssImxpbmUiKSksQS5rKGoucShrLCJkaXNwbGF5UGF0aCIp -KSxBLmsoai5xKGssInVyaVBhdGgiKSksQS5OZChpLmEoai5xKGssInRyYWNlcyIpKSkpCkEuVDEobikK -QS5GcihhLGIsYykKQS55WCgiLmVkaXQtcGFuZWwgLnBhbmVsLWNvbnRlbnQiLCExKQpxPTEKcz01CmJy -ZWFrCmNhc2UgMzpxPTIKZz1wCm09QS5SdShnKQpsPUEudHMoZykKQS5DMigiY291bGRuJ3QgbG9hZCBl -ZGl0IGRldGFpbHMiLG0sbCkKcz01CmJyZWFrCmNhc2UgMjpzPTEKYnJlYWsKY2FzZSA1OnJldHVybiBB -LnlDKG51bGwscikKY2FzZSAxOnJldHVybiBBLmYzKHAscil9fSkKcmV0dXJuIEEuREkoJGFzeW5jJGhY -LHIpfSwKRzcoYSxiLGMsZCxlKXtyZXR1cm4gQS5MNShhLGIsYyxkLGUpfSwKTDUoYSxiLGMsZCxlKXt2 -YXIgcz0wLHI9QS5GWCh0LkgpLHEscD0yLG8sbixtLGwsayxqLGksaAp2YXIgJGFzeW5jJEc3PUEubHoo -ZnVuY3Rpb24oZixnKXtpZihmPT09MSl7bz1nCnM9cH13aGlsZSh0cnVlKXN3aXRjaChzKXtjYXNlIDA6 -aWYoIUIueEIuVGMoYSwiLmRhcnQiKSl7QS5CRShhLEEud1IoKSxkKQpBLkJYKGEsbnVsbCkKaWYoZSE9 -bnVsbCllLiQwKCkKcz0xCmJyZWFrfXA9NApqPXQuTgpzPTcKcmV0dXJuIEEualEoQS5RNihhLEEuRUYo -WyJpbmxpbmUiLCJ0cnVlIl0saixqKSx0LkcpLCRhc3luYyRHNykKY2FzZSA3Om49ZwpBLkJFKGEsQS5Z -ZihuKSxkKQpBLmZHKGIsYykKbT1BLlVzKGEpCkEuQlgobSxiKQppZihlIT1udWxsKWUuJDAoKQpwPTIK -cz02CmJyZWFrCmNhc2UgNDpwPTMKaD1vCmw9QS5SdShoKQprPUEudHMoaCkKQS5DMigiY291bGRuJ3Qg -bG9hZCBkYXJ0IGZpbGUgIithLGwsaykKcz02CmJyZWFrCmNhc2UgMzpzPTIKYnJlYWsKY2FzZSA2OmNh -c2UgMTpyZXR1cm4gQS55QyhxLHIpCmNhc2UgMjpyZXR1cm4gQS5mMyhvLHIpfX0pCnJldHVybiBBLkRJ -KCRhc3luYyRHNyxyKX0sCkdlKCl7dmFyIHM9MCxyPUEuRlgodC56KSxxPTEscCxvLG4sbSxsLGssaixp -LGgKdmFyICRhc3luYyRHZT1BLmx6KGZ1bmN0aW9uKGEsYil7aWYoYT09PTEpe3A9YgpzPXF9d2hpbGUo -dHJ1ZSlzd2l0Y2gocyl7Y2FzZSAwOmk9Ii9fcHJldmlldy9uYXZpZ2F0aW9uVHJlZS5qc29uIgpxPTMK -cz02CnJldHVybiBBLmpRKEEuUTYoaSxCLkNNLHQuVyksJGFzeW5jJEdlKQpjYXNlIDY6az1iCmsudG9T -dHJpbmcKbz1rCms9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLm5hdi10cmVlIikKay50b1N0cmluZwpu -PWsKSi5sNShuLCIiKQprPUEubUsobykKJC5JUj1rCkEudFgobixrLCEwKQpxPTEKcz01CmJyZWFrCmNh -c2UgMzpxPTIKaD1wCm09QS5SdShoKQpsPUEudHMoaCkKQS5DMigiY291bGRuJ3QgbG9hZCBuYXZpZ2F0 -aW9uIHRyZWUiLG0sbCkKcz01CmJyZWFrCmNhc2UgMjpzPTEKYnJlYWsKY2FzZSA1OnJldHVybiBBLnlD -KG51bGwscikKY2FzZSAxOnJldHVybiBBLmYzKHAscil9fSkKcmV0dXJuIEEuREkoJGFzeW5jJEdlLHIp -fSwKcU8oYSl7dmFyIHMscixxPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscD1CLkNELnpRKCQuZmko -KS5vZmZzZXRIZWlnaHQpLG89d2luZG93LmlubmVySGVpZ2h0Cm8udG9TdHJpbmcKcz1CLkNELnpRKCQu -RFcoKS5vZmZzZXRIZWlnaHQpCnI9cS5ib3R0b20Kci50b1N0cmluZwppZihyPm8tKHMrMTQpKUouZGgo -YSkKZWxzZXtvPXEudG9wCm8udG9TdHJpbmcKaWYobzxwKzE0KUouZGgoYSl9fSwKZkcoYSxiKXt2YXIg -cyxyLHEscCxvCmlmKGEhPW51bGwpe3M9ZG9jdW1lbnQKcj1zLmdldEVsZW1lbnRCeUlkKCJvIitBLkVq -KGEpKQpxPXMucXVlcnlTZWxlY3RvcigiLmxpbmUtIitBLkVqKGIpKQppZihyIT1udWxsKXtBLnFPKHIp -CkouZFIocikuaSgwLCJ0YXJnZXQiKX1lbHNlIGlmKHEhPW51bGwpe3M9cS5wYXJlbnRFbGVtZW50CnMu -dG9TdHJpbmcKQS5xTyhzKX1pZihxIT1udWxsKUouZFIodC5oLmEocS5wYXJlbnROb2RlKSkuaSgwLCJo -aWdobGlnaHQiKX1lbHNle3M9ZG9jdW1lbnQKcD10LmgKQS5EaChwLHAsIlQiLCJxdWVyeVNlbGVjdG9y -QWxsIikKcz1zLnF1ZXJ5U2VsZWN0b3JBbGwoIi5saW5lLW5vIikKbz1uZXcgQS53eihzLHQuUikKaWYo -by5nayhvKT09PTApcmV0dXJuCkEucU8ocC5hKEIudDUuZ3RIKHMpKSl9fSwKYWYoYSxiLGMsZCxlKXt2 -YXIgcyxyLHEscD10LkYsbz1BLkc2KHAuYSh3aW5kb3cubG9jYXRpb24pLmhyZWYpLG49QS5hSyhwLmEo -d2luZG93LmxvY2F0aW9uKS5ocmVmKQppZihvIT1udWxsKXtzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlk -KCJvIitBLkVqKG8pKQppZihzIT1udWxsKUouZFIocykuUigwLCJ0YXJnZXQiKX1pZihuIT1udWxsKXty -PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5saW5lLSIrQS5FaihuKSkKaWYociE9bnVsbCl7cT1yLnBh -cmVudEVsZW1lbnQKcS50b1N0cmluZwpKLmRSKHEpLlIoMCwiaGlnaGxpZ2h0Iil9fWlmKGE9PXAuYSh3 -aW5kb3cubG9jYXRpb24pLnBhdGhuYW1lKXtBLmZHKGIsYykKZS4kMCgpfWVsc2V7YS50b1N0cmluZwpB -Lkc3KGEsYixjLGQsZSl9fSwKUTQoYSxiKXt2YXIgcyxyLHE9QS5oSyhhKSxwPUEuRmwodC5OLHQuZGsp -CmZvcihzPXEuZ2hZKCkscz1zLmdQdShzKSxzPXMuZ0Eocyk7cy5HKCk7KXtyPXMuZ2woKQpwLlk1KDAs -ci5hLHIuYil9Zm9yKHM9Yi5nUHUoYikscz1zLmdBKHMpO3MuRygpOyl7cj1zLmdsKCkKcC5ZNSgwLHIu -YSxyLmIpfXAuWTUoMCwiYXV0aFRva2VuIiwkLlVFKCkpCnJldHVybiBxLm5tKDAscCkuZ25EKCl9LApU -MShhKXt2YXIgcyxyLHEscCxvLG4sbSxsLGssaixpPSQuaEwoKQppLnRvU3RyaW5nCkoubDUoaSwiIikK -aWYoYT09bnVsbCl7cz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIikKQi5MdC5zYTQocywiU2VlIGRl -dGFpbHMgYWJvdXQgYSBwcm9wb3NlZCBlZGl0LiIpCkIuTHQuc1AocyxBLlFJKFsicGxhY2Vob2xkZXIi -XSx0LnMpKQppLmFwcGVuZENoaWxkKHMpCkIuTHQuRkYocykKcmV0dXJufXI9YS5kCnIudG9TdHJpbmcK -cT0kLm5VKCkKcD1xLnpmKHIpCm89YS5iCm49ZG9jdW1lbnQKbT1uLnF1ZXJ5U2VsZWN0b3IoIi5yb290 -IikudGV4dENvbnRlbnQKbS50b1N0cmluZwpsPXEuSFAocixCLnhCLmJTKG0pKQprPWEuYwpqPW4uY3Jl -YXRlRWxlbWVudCgicCIpCmkuYXBwZW5kQ2hpbGQoaikKai5hcHBlbmRDaGlsZChuLmNyZWF0ZVRleHRO -b2RlKEEuRWoobykrIiBhdCAiKSkKcj1hLmUKci50b1N0cmluZwpxPXQuTgpxPUEuSjYoQS5RNChyLEEu -RUYoWyJsaW5lIixKLllTKGspXSxxLHEpKSkKcS5hcHBlbmRDaGlsZChuLmNyZWF0ZVRleHROb2RlKGwr -IjoiK0EuRWooaykrIi4iKSkKai5hcHBlbmRDaGlsZChxKQpKLmRoKGopCkEuQ0MoYSxpLHApCkEuRnoo -YSxpKX0sCkxIKGExLGEyLGEzKXt2YXIgcyxyLHEscCxvLG4sbSxsLGssaixpLGgsZyxmLGUsZCxjLGIs -YSxhMD0kLnlQKCkKYTAudG9TdHJpbmcKSi5sNShhMCwiIikKcz1hMi5nayhhMikKaWYoczwyKSQuRFoo -KS5pbm5lclRleHQ9IlByb3Bvc2VkIEVkaXRzIgplbHNle3I9YTIuZ1B1KGEyKS5OMCgwLDAsbmV3IEEu -RUUoKSx0LlMpCiQuRFooKS5pbm5lclRleHQ9QS5FaihyKSsiIFByb3Bvc2VkIEVkaXRzIn1pZihzPT09 -MCl7cT1kb2N1bWVudApwPXEuY3JlYXRlRWxlbWVudCgicCIpCmEwLmFwcGVuZENoaWxkKHApCnAuYXBw -ZW5kQ2hpbGQocS5jcmVhdGVUZXh0Tm9kZSgiTm8gcHJvcG9zZWQgZWRpdHMiKSl9ZWxzZSBmb3IoYTA9 -YTIuZ1B1KGEyKSxhMD1hMC5nQShhMCkscT10LkYsbz10Lk4sbj10LlEsbT1uLkMoIn4oMSk/IiksbD10 -Llosbj1uLmM7YTAuRygpOyl7az1hMC5nbCgpCmo9ZG9jdW1lbnQKcD1qLmNyZWF0ZUVsZW1lbnQoInAi -KQppPSQueVAoKQppLmFwcGVuZENoaWxkKHApCnAuYXBwZW5kQ2hpbGQoai5jcmVhdGVUZXh0Tm9kZShB -LkVqKGsuYSkrIjoiKSkKaD1qLmNyZWF0ZUVsZW1lbnQoInVsIikKaS5hcHBlbmRDaGlsZChoKQpmb3Io -az1KLklUKGsuYik7ay5HKCk7KXtpPWsuZ2woKQpnPWouY3JlYXRlRWxlbWVudCgibGkiKQpoLmFwcGVu -ZENoaWxkKGcpCkouZFIoZykuaSgwLCJlZGl0IikKZj1qLmNyZWF0ZUVsZW1lbnQoImEiKQpnLmFwcGVu -ZENoaWxkKGYpCmYuY2xhc3NMaXN0LmFkZCgiZWRpdC1saW5rIikKZT1pLmMKZD1BLkVqKGUpCmYuc2V0 -QXR0cmlidXRlKCJkYXRhLSIrbmV3IEEuU3kobmV3IEEuaTcoZikpLk9VKCJvZmZzZXQiKSxkKQpjPWku -YQpiPUEuRWooYykKZi5zZXRBdHRyaWJ1dGUoImRhdGEtIituZXcgQS5TeShuZXcgQS5pNyhmKSkuT1Uo -ImxpbmUiKSxiKQpmLmFwcGVuZENoaWxkKGouY3JlYXRlVGV4dE5vZGUoImxpbmUgIitiKSkKYT1xLmEo -d2luZG93LmxvY2F0aW9uKS5wYXRobmFtZQphLnRvU3RyaW5nCmYuc2V0QXR0cmlidXRlKCJocmVmIixB -LlE0KGEsQS5FRihbImxpbmUiLGIsIm9mZnNldCIsZF0sbyxvKSkpCmQ9bS5hKG5ldyBBLlBOKGUsYyxh -MSkpCmwuYShudWxsKQpBLkpFKGYsImNsaWNrIixkLCExLG4pCmcuYXBwZW5kQ2hpbGQoai5jcmVhdGVU -ZXh0Tm9kZSgiOiAiK0EuRWooaS5iKSkpfX1pZihhMylBLlQxKG51bGwpfSwKRnIoYSxiLGMpe3ZhciBz -LHIscT1BLmhLKEIuRXguZ0RyKHQuRi5hKHdpbmRvdy5sb2NhdGlvbikpK0EuRWooYSkpLHA9QS5GbCh0 -Lk4sdC5kaykKaWYoYiE9bnVsbClwLlk1KDAsIm9mZnNldCIsQS5FaihiKSkKaWYoYyE9bnVsbClwLlk1 -KDAsImxpbmUiLEEuRWooYykpCnAuWTUoMCwiYXV0aFRva2VuIiwkLlVFKCkpCnE9cS5ubSgwLHApCnA9 -d2luZG93Lmhpc3RvcnkKcz10LnoKcj1xLmduRCgpCnAucHVzaFN0YXRlKG5ldyBBLkJmKFtdLFtdKS5Q -dihBLkZsKHMscykpLCIiLHIpfSwKRW4oYSl7dmFyIHMscj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIu -cm9vdCIpLnRleHRDb250ZW50CnIudG9TdHJpbmcKcz1yKyIvIgppZihCLnhCLm4oYSxzKSlyZXR1cm4g -Qi54Qi55bihhLHMubGVuZ3RoKQplbHNlIHJldHVybiBhfSwKT3QoYSl7c3dpdGNoKGEucil7Y2FzZSBC -LmN3OmJyZWFrCmNhc2UgQi5XRDphLnI9Qi5YagpicmVhawpjYXNlIEIuWGo6YS5yPUIuV0QKYnJlYWsK -Y2FzZSBCLmRjOnRocm93IEEuYihBLlBWKCJGaWxlICIrQS5FaihhLmMpKyIgc2hvdWxkIG5vdCBoYXZl -IGluZGV0ZXJtaW5hdGUgbWlncmF0aW9uIHN0YXR1cyIpKQpkZWZhdWx0OmJyZWFrfX0sCnRhKGEsYil7 -dmFyIHMscj0iY2hlY2tfYm94IixxPSJ0aXRsZSIscD0ib3B0ZWQtb3V0IixvPSJtaWdyYXRpbmciCnN3 -aXRjaChiKXtjYXNlIEIuY3c6YS5pbm5lclRleHQ9cgpzPUouWUUoYSkKcy5nUChhKS5pKDAsImFscmVh -ZHktbWlncmF0ZWQiKQpzLmdQKGEpLmkoMCwiZGlzYWJsZWQiKQphLnNldEF0dHJpYnV0ZShxLCJBbHJl -YWR5IG1pZ3JhdGVkIikKYnJlYWsKY2FzZSBCLldEOmEuaW5uZXJUZXh0PXIKcz1KLllFKGEpCnMuZ1Ao -YSkuUigwLHApCnMuZ1AoYSkuaSgwLG8pCmEuc2V0QXR0cmlidXRlKHEsIk1pZ3JhdGluZyB0byBudWxs -IHNhZmV0eSIpCmJyZWFrCmNhc2UgQi5YajphLmlubmVyVGV4dD0iY2hlY2tfYm94X291dGxpbmVfYmxh -bmsiCnM9Si5ZRShhKQpzLmdQKGEpLlIoMCxvKQpzLmdQKGEpLmkoMCxwKQphLnNldEF0dHJpYnV0ZShx -LCJPcHRpbmcgb3V0IG9mIG51bGwgc2FmZXR5IikKYnJlYWsKZGVmYXVsdDphLmlubmVyVGV4dD0iaW5k -ZXRlcm1pbmF0ZV9jaGVja19ib3giCnM9Si5ZRShhKQpzLmdQKGEpLlIoMCxvKQpzLmdQKGEpLmkoMCxw -KQphLnNldEF0dHJpYnV0ZShxLCJNaXhlZCBzdGF0dXNlcyBvZiAnbWlncmF0aW5nJyBhbmQgJ29wdGlu -ZyBvdXQnIikKYnJlYWt9fSwKeG4oYSxiKXt2YXIgcyxyPSJkaXNhYmxlZCIscT1iLmdMKCkKQS50YShh -LHEpCmlmKGIuYz09PSQuRDkoKS5pbm5lclRleHQpe2lmKGIgaW5zdGFuY2VvZiBBLmNEKXtzPWIudwpz -LnRvU3RyaW5nCnM9IXN9ZWxzZSBzPSExCmlmKHMpe2EudG9TdHJpbmcKSi5kUihhKS5pKDAscil9ZWxz -ZXthLnRvU3RyaW5nCkouZFIoYSkuUigwLHIpfUEudGEoJC5jMCgpLHEpfX0sCkJYKGEsYil7dmFyIHMs -cixxLHA9e30KcC5hPWEKYT1BLkVuKGEpCnAuYT1hCnM9JC5EOSgpCnMudG9TdHJpbmcKSi5kcihzLGEp -CnM9ZG9jdW1lbnQKcj10LmgKQS5EaChyLHIsIlQiLCJxdWVyeVNlbGVjdG9yQWxsIikKcz1uZXcgQS53 -eihzLnF1ZXJ5U2VsZWN0b3JBbGwoIi5uYXYtcGFuZWwgLm5hdi1saW5rIiksdC5SKQpzLksocyxuZXcg -QS5WUyhwKSkKcz0kLklSCnE9cz09bnVsbD9udWxsOkEueXcocyxwLmEpCmlmKHE9PW51bGwpe3A9JC5i -TigpCnAudG9TdHJpbmcKSi5kUihwKS5SKDAsInZpc2libGUiKX1lbHNle3A9JC5iTigpCnAudG9TdHJp -bmcKSi5kUihwKS5pKDAsInZpc2libGUiKQpBLnRhKCQuYzAoKSxxLmdMKCkpfX0sCkFSKGEsYil7dmFy -IHMscixxPWIuYgppZihxPT09JClBLnlrKCJwYXJlbnQiKQpzPXQuaApyPXMuYShzLmEoYS5wYXJlbnRO -b2RlKS5wYXJlbnROb2RlKQpBLnhuKHIucXVlcnlTZWxlY3RvcigiOnNjb3BlID4gLnN0YXR1cy1pY29u -IikscSkKQS5BUihyLHEpfSwKYkwoYSxiKXt2YXIgcyxyLHEscCxvLG4sbSxsPSI6c2NvcGUgPiAuc3Rh -dHVzLWljb24iCmZvcihzPWIuZCxyPXMubGVuZ3RoLHE9dC5oLHA9MDtwPHMubGVuZ3RoO3MubGVuZ3Ro -PT09cnx8KDAsQS5saykocyksKytwKXtvPXNbcF0KYS50b1N0cmluZwpuPW8uYwpuLnRvU3RyaW5nCm09 -YS5xdWVyeVNlbGVjdG9yKCdbZGF0YS1uYW1lKj0iJytBLkxqKG4pKyciXScpCmlmKG8gaW5zdGFuY2Vv -ZiBBLnZ0KXtBLmJMKG0sbykKQS54bihtLnF1ZXJ5U2VsZWN0b3IobCksYil9ZWxzZSBBLnhuKHEuYSht -LnBhcmVudE5vZGUpLnF1ZXJ5U2VsZWN0b3IobCksbyl9fSwKQkUoYSxiLGMpe3ZhciBzPSIucmVnaW9u -cyIscj1kb2N1bWVudCxxPXIucXVlcnlTZWxlY3RvcihzKQpxLnRvU3RyaW5nCnI9ci5xdWVyeVNlbGVj -dG9yKCIuY29kZSIpCnIudG9TdHJpbmcKSi50SChxLGIuYSwkLktHKCkpCkoudEgocixiLmIsJC5LRygp -KQpBLkxIKGEsYi5kLGMpCmlmKGIuYy5sZW5ndGg8MmU1KUEuR2coKQpBLnlYKCIuY29kZSIsITApCkEu -eVgocywhMCl9LAp0WChhMCxhMSxhMil7dmFyIHMscixxLHAsbyxuLG0sbCxrLGosaSxoLGcsZixlLGQ9 -Im1hdGVyaWFsLWljb25zIixjPSJzdGF0dXMtaWNvbiIsYj1kb2N1bWVudCxhPWIuY3JlYXRlRWxlbWVu -dCgidWwiKQphMC5hcHBlbmRDaGlsZChhKQpmb3Iocz1hMS5sZW5ndGgscj10Lk4scT10LloscD0wO3A8 -YTEubGVuZ3RoO2ExLmxlbmd0aD09PXN8fCgwLEEubGspKGExKSwrK3Ape289YTFbcF0Kbj1iLmNyZWF0 -ZUVsZW1lbnQoImxpIikKYS5hcHBlbmRDaGlsZChuKQppZihvIGluc3RhbmNlb2YgQS52dCl7bT1KLllF -KG4pCm0uZ1AobikuaSgwLCJkaXIiKQpsPW8uYwpsLnRvU3RyaW5nCm4uc2V0QXR0cmlidXRlKCJkYXRh -LSIrbmV3IEEuU3kobmV3IEEuaTcobikpLk9VKCJuYW1lIiksbCkKaz1iLmNyZWF0ZUVsZW1lbnQoInNw -YW4iKQpuLmFwcGVuZENoaWxkKGspCmw9Si5ZRShrKQpsLmdQKGspLmkoMCwiYXJyb3ciKQpsLnNoZihr -LCImI3gyNUJDOyIpCmo9Yi5jcmVhdGVFbGVtZW50KCJzcGFuIikKSi5kUihqKS5pKDAsZCkKai5pbm5l -clRleHQ9ImZvbGRlcl9vcGVuIgpuLmFwcGVuZENoaWxkKGopCmw9by5hCmwudG9TdHJpbmcKbi5hcHBl -bmRDaGlsZChiLmNyZWF0ZVRleHROb2RlKGwpKQpsPW8uZApsLnRvU3RyaW5nCkEudFgobixsLCEwKQpp -PWIuY3JlYXRlRWxlbWVudCgic3BhbiIpCmw9Si5ZRShpKQpsLmdQKGkpLmkoMCxkKQppLmlubmVyVGV4 -dD0iaW5kZXRlcm1pbmF0ZV9jaGVja19ib3giCmwuZ1AoaSkuaSgwLGMpCkEueG4oaSxvKQpsPWwuZ1Zs -KGkpCmg9bC4kdGkKZz1oLkMoIn4oMSk/IikuYShuZXcgQS5URChvLG4saSkpCnEuYShudWxsKQpBLkpF -KGwuYSxsLmIsZywhMSxoLmMpCm0ubUsobixpLGopCkEua3ooayl9ZWxzZSBpZihvIGluc3RhbmNlb2Yg -QS5jRCl7aT1iLmNyZWF0ZUVsZW1lbnQoInNwYW4iKQptPUouWUUoaSkKbS5nUChpKS5pKDAsZCkKaS5p -bm5lclRleHQ9IiIKbS5nUChpKS5pKDAsYykKbD1vLncKbC50b1N0cmluZwppZighbCltLmdQKGkpLmko -MCwiZGlzYWJsZWQiKQpBLnhuKGksbykKaWYobCl7bT1tLmdWbChpKQpsPW0uJHRpCmg9bC5DKCJ+KDEp -PyIpLmEobmV3IEEuSWYobyxpLG4pKQpxLmEobnVsbCkKQS5KRShtLmEsbS5iLGgsITEsbC5jKX1uLmFw -cGVuZENoaWxkKGkpCm09Yi5jcmVhdGVFbGVtZW50KCJzcGFuIikKSi5kUihtKS5pKDAsZCkKbS5pbm5l -clRleHQ9Imluc2VydF9kcml2ZV9maWxlIgpuLmFwcGVuZENoaWxkKG0pCmY9Yi5jcmVhdGVFbGVtZW50 -KCJhIikKbi5hcHBlbmRDaGlsZChmKQptPUouWUUoZikKbS5nUChmKS5pKDAsIm5hdi1saW5rIikKbD1v -LmMKbC50b1N0cmluZwpmLnNldEF0dHJpYnV0ZSgiZGF0YS0iK25ldyBBLlN5KG5ldyBBLmk3KGYpKS5P -VSgibmFtZSIpLGwpCmw9by5kCmwudG9TdHJpbmcKZi5zZXRBdHRyaWJ1dGUoImhyZWYiLEEuUTQobCxB -LkZsKHIscikpKQpsPW8uYQpsLnRvU3RyaW5nCmYuYXBwZW5kQ2hpbGQoYi5jcmVhdGVUZXh0Tm9kZShs -KSkKbT1tLmdWbChmKQpsPW0uJHRpCmg9bC5DKCJ+KDEpPyIpLmEobmV3IEEudEIoKSkKcS5hKG51bGwp -CkEuSkUobS5hLG0uYixoLCExLGwuYykKbD1vLmUKbC50b1N0cmluZwppZihsPjApe2U9Yi5jcmVhdGVF -bGVtZW50KCJzcGFuIikKbi5hcHBlbmRDaGlsZChlKQpKLmRSKGUpLmkoMCwiZWRpdC1jb3VudCIpCmlm -KGw9PT0xKW09InByb3Bvc2VkIGVkaXQiCmVsc2UgbT0icHJvcG9zZWQgZWRpdHMiCmUuc2V0QXR0cmli -dXRlKCJ0aXRsZSIsIiIrbCsiICIrbSkKZS5hcHBlbmRDaGlsZChiLmNyZWF0ZVRleHROb2RlKEIuam5b -IlsiXShsKSkpfX19fSwKdXooYSxiLGMpe3ZhciBzPWRvY3VtZW50LHI9cy5jcmVhdGVFbGVtZW50KCJi -dXR0b24iKSxxPXQuUSxwPXEuQygifigxKT8iKS5hKG5ldyBBLm0yKGEsYykpCnQuWi5hKG51bGwpCkEu -SkUociwiY2xpY2siLHAsITEscS5jKQpxPUEuT1goYS5hKQpxLnRvU3RyaW5nCnIuYXBwZW5kQ2hpbGQo -cy5jcmVhdGVUZXh0Tm9kZShxKSkKYi5hcHBlbmRDaGlsZChyKX0sCkZ6KGEsYil7dmFyIHMscixxLHAs -byxuLG0sbCxrLGosaSxoPWEuYQppZihoPT1udWxsKXJldHVybgpiLnRvU3RyaW5nCnM9ZG9jdW1lbnQK -cj1zLmNyZWF0ZUVsZW1lbnQoInAiKQpxPWIuYXBwZW5kQ2hpbGQocikKcj1zLmNyZWF0ZUVsZW1lbnQo -InNwYW4iKQpwPXQucwpKLk11KHIsQS5RSShbInR5cGUtZGVzY3JpcHRpb24iXSxwKSkKci5hcHBlbmRD -aGlsZChzLmNyZWF0ZVRleHROb2RlKCJBY3Rpb25zIikpCnEuYXBwZW5kQ2hpbGQocikKcS5hcHBlbmRD -aGlsZChzLmNyZWF0ZVRleHROb2RlKCI6IikpCm89cy5jcmVhdGVFbGVtZW50KCJwIikKYi5hcHBlbmRD -aGlsZChvKQpmb3Iocj1oLmxlbmd0aCxuPXQuTyxtPTA7bTxoLmxlbmd0aDtoLmxlbmd0aD09PXJ8fCgw -LEEubGspKGgpLCsrbSl7bD1oW21dCms9cy5jcmVhdGVFbGVtZW50KCJhIikKby5hcHBlbmRDaGlsZChr -KQpqPWwuYQpqLnRvU3RyaW5nCmsuYXBwZW5kQ2hpbGQocy5jcmVhdGVUZXh0Tm9kZShqKSkKaj1sLmIK -ai50b1N0cmluZwprLnNldEF0dHJpYnV0ZSgiaHJlZiIsaikKaj1uLmEoQS5RSShbImFkZC1oaW50LWxp -bmsiLCJiZWZvcmUtYXBwbHkiLCJidXR0b24iXSxwKSkKaT1KLmRSKGspCmkuVjEoMCkKaS5GVigwLGop -fX0sCkNDKGE0LGE1LGE2KXt2YXIgcyxyLHEscCxvLG4sbSxsLGssaixpLGgsZyxmLGUsZCxjLGIsYSxh -MCxhMSxhMixhMwpmb3Iocz1hNC5mLHI9cy5sZW5ndGgscT10LnMscD10Lk8sbz0wO288cy5sZW5ndGg7 -cy5sZW5ndGg9PT1yfHwoMCxBLmxrKShzKSwrK28pe249c1tvXQphNS50b1N0cmluZwptPWRvY3VtZW50 -Cmw9bS5jcmVhdGVFbGVtZW50KCJwIikKaz1wLmEoQS5RSShbInRyYWNlIl0scSkpCmo9Si5kUihsKQpq -LlYxKDApCmouRlYoMCxrKQppPWE1LmFwcGVuZENoaWxkKGwpCmw9bS5jcmVhdGVFbGVtZW50KCJzcGFu -IikKaz1wLmEoQS5RSShbInR5cGUtZGVzY3JpcHRpb24iXSxxKSkKaj1KLmRSKGwpCmouVjEoMCkKai5G -VigwLGspCms9bi5hCmsudG9TdHJpbmcKbC5hcHBlbmRDaGlsZChtLmNyZWF0ZVRleHROb2RlKGspKQpp -LmFwcGVuZENoaWxkKGwpCmkuYXBwZW5kQ2hpbGQobS5jcmVhdGVUZXh0Tm9kZSgiOiIpKQpsPW0uY3Jl -YXRlRWxlbWVudCgidWwiKQprPXAuYShBLlFJKFsidHJhY2UiXSxxKSkKaj1KLmRSKGwpCmouVjEoMCkK -ai5GVigwLGspCmg9aS5hcHBlbmRDaGlsZChsKQpmb3IobD1uLmIsaz1sLmxlbmd0aCxnPTA7ZzxsLmxl -bmd0aDtsLmxlbmd0aD09PWt8fCgwLEEubGspKGwpLCsrZyl7Zj1sW2ddCmU9bS5jcmVhdGVFbGVtZW50 -KCJsaSIpCmguYXBwZW5kQ2hpbGQoZSkKZD1tLmNyZWF0ZUVsZW1lbnQoInNwYW4iKQpjPXAuYShBLlFJ -KFsiZnVuY3Rpb24iXSxxKSkKaj1KLmRSKGQpCmouVjEoMCkKai5GVigwLGMpCmM9Zi5iCkEuV2ooZCxj -PT1udWxsPyJ1bmtub3duIjpjKQplLmFwcGVuZENoaWxkKGQpCmI9Zi5jCmlmKGIhPW51bGwpe2UuYXBw -ZW5kQ2hpbGQobS5jcmVhdGVUZXh0Tm9kZSgiICgiKSkKYT1iLmIKYTA9bS5jcmVhdGVFbGVtZW50KCJh -IikKYTAuYXBwZW5kQ2hpbGQobS5jcmVhdGVUZXh0Tm9kZShBLkVqKGIuYykrIjoiK0EuRWooYSkpKQpk -PWIuYQpkLnRvU3RyaW5nCmEwLnNldEF0dHJpYnV0ZSgiaHJlZiIsZCkKYTAuY2xhc3NMaXN0LmFkZCgi -bmF2LWxpbmsiKQplLmFwcGVuZENoaWxkKGEwKQplLmFwcGVuZENoaWxkKG0uY3JlYXRlVGV4dE5vZGUo -IikiKSl9ZS5hcHBlbmRDaGlsZChtLmNyZWF0ZVRleHROb2RlKCI6ICIpKQpkPWYuYQpBLldqKGUsZD09 -bnVsbD8idW5rbm93biI6ZCkKZD1mLmQKaWYoZC5sZW5ndGghPT0wKXtjPW0uY3JlYXRlRWxlbWVudCgi -cCIpCmExPXAuYShBLlFJKFsiZHJhd2VyIiwiYmVmb3JlLWFwcGx5Il0scSkpCmo9Si5kUihjKQpqLlYx -KDApCmouRlYoMCxhMSkKYTI9ZS5hcHBlbmRDaGlsZChjKQpmb3IoYz1kLmxlbmd0aCxhMz0wO2EzPGQu -bGVuZ3RoO2QubGVuZ3RoPT09Y3x8KDAsQS5saykoZCksKythMylBLnV6KGRbYTNdLGEyLGIpfX19fSwK -VXMoYSl7cmV0dXJuIEIueEIudGcoYSwiPyIpP0IueEIuTmooYSwwLEIueEIuT1koYSwiPyIpKTphfSwK -VEcoYSxiKXtyZXR1cm4gbmV3IEEuUVcoYSxiKX0sCnl3KGEsYil7dmFyIHMscixxLHAsbwpmb3Iocz1h -Lmxlbmd0aCxyPTA7cjxhLmxlbmd0aDthLmxlbmd0aD09PXN8fCgwLEEubGspKGEpLCsrcil7cT1hW3Jd -CmlmKHEgaW5zdGFuY2VvZiBBLnZ0KXtwPXEuZApwLnRvU3RyaW5nCm89QS55dyhwLGIpCmlmKG8hPW51 -bGwpcmV0dXJuIG99ZWxzZSBpZihxLmM9PT1iKXJldHVybiBxfXJldHVybiBudWxsfSwKV2ooYSxiKXt2 -YXIgcyxyLHEscD1BLlFJKGIuc3BsaXQoIi4iKSx0LnMpLG89Qi5ObS5ndEgocCksbj1kb2N1bWVudAph -LmFwcGVuZENoaWxkKG4uY3JlYXRlVGV4dE5vZGUobykpCmZvcihvPUEucUMocCwxLG51bGwsdC5OKSxz -PW8uJHRpLG89bmV3IEEuYTcobyxvLmdrKG8pLHMuQygiYTc8YUwuRT4iKSkscj1KLllFKGEpLHM9cy5D -KCJhTC5FIik7by5HKCk7KXtxPW8uZAppZihxPT1udWxsKXE9cy5hKHEpCnIubnooYSwiYmVmb3JlZW5k -IiwiJiM4MjAzOy4iLG51bGwsbnVsbCkKYS5hcHBlbmRDaGlsZChuLmNyZWF0ZVRleHROb2RlKHEpKX19 -LAplOmZ1bmN0aW9uIGUoKXt9LApWVzpmdW5jdGlvbiBWVyhhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIK -dGhpcy5jPWN9LApvWjpmdW5jdGlvbiBvWigpe30sCmpyOmZ1bmN0aW9uIGpyKCl7fSwKcWw6ZnVuY3Rp -b24gcWwoKXt9LAp5ODpmdW5jdGlvbiB5OCgpe30sCkhpOmZ1bmN0aW9uIEhpKCl7fSwKQlQ6ZnVuY3Rp -b24gQlQoKXt9LApQWTpmdW5jdGlvbiBQWSgpe30sCkw6ZnVuY3Rpb24gTCgpe30sCld4OmZ1bmN0aW9u -IFd4KGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApIbzpmdW5jdGlvbiBIbyhhKXt0aGlzLmE9YX0sCklD -OmZ1bmN0aW9uIElDKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApmQzpmdW5jdGlvbiBmQyhhLGIpe3Ro -aXMuYT1hCnRoaXMuYj1ifSwKVG06ZnVuY3Rpb24gVG0oKXt9LApuVDpmdW5jdGlvbiBuVChhLGIsYyl7 -dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApOWTpmdW5jdGlvbiBOWShhKXt0aGlzLmE9YX0sCnVl -OmZ1bmN0aW9uIHVlKCl7fSwKR0g6ZnVuY3Rpb24gR0goKXt9LApFRTpmdW5jdGlvbiBFRSgpe30sClBO -OmZ1bmN0aW9uIFBOKGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLmM9Y30sClFMOmZ1bmN0aW9u -IFFMKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApWUzpmdW5jdGlvbiBWUyhhKXt0aGlzLmE9YX0sClRE -OmZ1bmN0aW9uIFREKGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLmM9Y30sCklmOmZ1bmN0aW9u -IElmKGEsYixjKXt0aGlzLmE9YQp0aGlzLmI9Ygp0aGlzLmM9Y30sCnRCOmZ1bmN0aW9uIHRCKCl7fSwK -bTI6ZnVuY3Rpb24gbTIoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sClFXOmZ1bmN0aW9uIFFXKGEsYil7 -dGhpcy5hPWEKdGhpcy5iPWJ9LApYQTpmdW5jdGlvbiBYQSgpe30sClpzKGEpe3ZhciBzLHIscT1KLlU2 -KGEpCmlmKEEucDIoQS5rKHEucShhLCJ0eXBlIikpKT09PUIuWTIpe3M9QS5rKHEucShhLCJuYW1lIikp -CnI9QS5rKHEucShhLCJwYXRoIikpCnE9cS5xKGEsInN1YnRyZWUiKQpxPW5ldyBBLnZ0KHE9PW51bGw/ -bnVsbDpBLm1LKHQuVy5hKHEpKSxzLHIpCnEuTFYoKQpyZXR1cm4gcX1lbHNle3M9QS5rKHEucShhLCJu -YW1lIikpCnI9QS5rKHEucShhLCJwYXRoIikpCnJldHVybiBuZXcgQS5jRChBLmsocS5xKGEsImhyZWYi -KSksQS5VYyhxLnEoYSwiZWRpdENvdW50IikpLEEuTTQocS5xKGEsIndhc0V4cGxpY2l0bHlPcHRlZE91 -dCIpKSxBLnZCKEEuVWMocS5xKGEsIm1pZ3JhdGlvblN0YXR1cyIpKSksQS5NNChxLnEoYSwibWlncmF0 -aW9uU3RhdHVzQ2FuQmVDaGFuZ2VkIikpLHMscil9fSwKbUsoYSl7dmFyIHMscj1BLlFJKFtdLHQuZmgp -CmZvcihzPUouSVQoYSk7cy5HKCk7KXIucHVzaChBLlpzKHMuZ2woKSkpCnJldHVybiByfSwKVkQoYSl7 -dmFyIHMscixxPUEuUUkoW10sdC5kKQpmb3Iocz1hLmxlbmd0aCxyPTA7cjxhLmxlbmd0aDthLmxlbmd0 -aD09PXN8fCgwLEEubGspKGEpLCsrcilxLnB1c2goYVtyXS5MdCgpKQpyZXR1cm4gcX0sCnZCKGEpe2lm -KGE9PW51bGwpcmV0dXJuIG51bGwKaWYoYT4+PjAhPT1hfHxhPj00KXJldHVybiBBLk9IKEIuV0csYSkK -cmV0dXJuIEIuV0dbYV19LApwMihhKXtzd2l0Y2goYSl7Y2FzZSJkaXJlY3RvcnkiOnJldHVybiBCLlky -CmNhc2UiZmlsZSI6cmV0dXJuIEIucmYKZGVmYXVsdDp0aHJvdyBBLmIoQS5QVigiVW5yZWNvZ25pemVk -IG5hdmlnYXRpb24gdHJlZSBub2RlIHR5cGU6ICIrQS5FaihhKSkpfX0sCnZ0OmZ1bmN0aW9uIHZ0KGEs -YixjKXt2YXIgXz10aGlzCl8uZD1hCl8uYT1iCl8uYj0kCl8uYz1jfSwKY0Q6ZnVuY3Rpb24gY0QoYSxi -LGMsZCxlLGYsZyl7dmFyIF89dGhpcwpfLmQ9YQpfLmU9YgpfLmY9YwpfLnI9ZApfLnc9ZQpfLmE9Zgpf -LmI9JApfLmM9Z30sCkQ4OmZ1bmN0aW9uIEQ4KCl7fSwKTzk6ZnVuY3Rpb24gTzkoYSxiKXt0aGlzLmE9 -YQp0aGlzLmI9Yn0sCkdiOmZ1bmN0aW9uIEdiKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApueihhKXt2 -YXIgcz1BLlVjKGEucSgwLCJub2RlSWQiKSkKcmV0dXJuIG5ldyBBLkxMKEIuTm0uSHQoQi5NbSxuZXcg -QS5NRChhKSkscyl9LApPWChhKXtzd2l0Y2goYS5hKXtjYXNlIDA6cmV0dXJuIkFkZCAvKj8qLyBoaW50 -IgpjYXNlIDE6cmV0dXJuIkFkZCAvKiEqLyBoaW50IgpjYXNlIDQ6cmV0dXJuIlJlbW92ZSAvKj8qLyBo -aW50IgpjYXNlIDU6cmV0dXJuIlJlbW92ZSAvKiEqLyBoaW50IgpjYXNlIDI6cmV0dXJuIkNoYW5nZSB0 -byAvKj8qLyBoaW50IgpjYXNlIDM6cmV0dXJuIkNoYW5nZSB0byAvKiEqLyBoaW50In19LApMTDpmdW5j -dGlvbiBMTChhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKTUQ6ZnVuY3Rpb24gTUQoYSl7dGhpcy5hPWF9 -LApINzpmdW5jdGlvbiBINyhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKWUYoYSxiKXt2YXIgcyxyLHEs -cCxvLG4sbSxsCmZvcihzPWIubGVuZ3RoLHI9MTtyPHM7KytyKXtpZihiW3JdPT1udWxsfHxiW3ItMV0h -PW51bGwpY29udGludWUKZm9yKDtzPj0xO3M9cSl7cT1zLTEKaWYoYltxXSE9bnVsbClicmVha31wPW5l -dyBBLk0oIiIpCm89IiIrKGErIigiKQpwLmE9bwpuPUEudDYoYikKbT1uLkMoIm5IPDE+IikKbD1uZXcg -QS5uSChiLDAscyxtKQpsLkhkKGIsMCxzLG4uYykKbT1vK25ldyBBLmxKKGwsbS5DKCJxVShhTC5FKSIp -LmEobmV3IEEuTm8oKSksbS5DKCJsSjxhTC5FLHFVPiIpKS5IKDAsIiwgIikKcC5hPW0KcC5hPW0rKCIp -OiBwYXJ0ICIrKHItMSkrIiB3YXMgbnVsbCwgYnV0IHBhcnQgIityKyIgd2FzIG5vdC4iKQp0aHJvdyBB -LmIoQS54WShwWyJbIl0oMCksbnVsbCkpfX0sCmxJOmZ1bmN0aW9uIGxJKGEpe3RoaXMuYT1hfSwKcTc6 -ZnVuY3Rpb24gcTcoKXt9LApObzpmdW5jdGlvbiBObygpe30sCmZ2OmZ1bmN0aW9uIGZ2KCl7fSwKQ0wo -YSxiKXt2YXIgcyxyLHEscCxvLG49Yi54WihhKQpiLmhLKGEpCmlmKG4hPW51bGwpYT1CLnhCLnluKGEs -bi5sZW5ndGgpCnM9dC5zCnI9QS5RSShbXSxzKQpxPUEuUUkoW10scykKcz1hLmxlbmd0aAppZihzIT09 -MCYmYi5yNChCLnhCLlcoYSwwKSkpe2lmKDA+PXMpcmV0dXJuIEEuT0goYSwwKQpCLk5tLmkocSxhWzBd -KQpwPTF9ZWxzZXtCLk5tLmkocSwiIikKcD0wfWZvcihvPXA7bzxzOysrbylpZihiLnI0KEIueEIuVyhh -LG8pKSl7Qi5ObS5pKHIsQi54Qi5OaihhLHAsbykpCkIuTm0uaShxLGFbb10pCnA9bysxfWlmKHA8cyl7 -Qi5ObS5pKHIsQi54Qi55bihhLHApKQpCLk5tLmkocSwiIil9cmV0dXJuIG5ldyBBLldEKGIsbixyLHEp -fSwKV0Q6ZnVuY3Rpb24gV0QoYSxiLGMsZCl7dmFyIF89dGhpcwpfLmE9YQpfLmI9YgpfLmQ9YwpfLmU9 -ZH0sCkk3KGEpe3JldHVybiBuZXcgQS5kdihhKX0sCmR2OmZ1bmN0aW9uIGR2KGEpe3RoaXMuYT1hfSwK -UmgoKXt2YXIgcyxyPW51bGwKaWYoQS51bygpLmdGaSgpIT09ImZpbGUiKXJldHVybiAkLkViKCkKcz1B -LnVvKCkKaWYoIUIueEIuVGMocy5nSWkocyksIi8iKSlyZXR1cm4gJC5FYigpCmlmKEEuS0wociwiYS9i -IixyLHIscixyLHIpLnQ0KCk9PT0iYVxcYiIpcmV0dXJuICQuS2soKQpyZXR1cm4gJC5iRCgpfSwKekw6 -ZnVuY3Rpb24gekwoKXt9LApPRjpmdW5jdGlvbiBPRihhLGIsYyl7dGhpcy5kPWEKdGhpcy5lPWIKdGhp -cy5mPWN9LApydTpmdW5jdGlvbiBydShhLGIsYyxkKXt2YXIgXz10aGlzCl8uZD1hCl8uZT1iCl8uZj1j -Cl8ucj1kfSwKSVY6ZnVuY3Rpb24gSVYoYSxiLGMsZCl7dmFyIF89dGhpcwpfLmQ9YQpfLmU9YgpfLmY9 -YwpfLnI9ZH0sClI5KGEpe3JldHVybiB0LncuYihhKXx8dC5CLmIoYSl8fHQuZHouYihhKXx8dC54LmIo -YSl8fHQuQS5iKGEpfHx0Lmc0LmIoYSl8fHQuZzIuYihhKX0sCnlrKGEpe3JldHVybiBBLnYoQS5sYShh -KSl9LApidChhKXtyZXR1cm4gQS52KEEuUkkoYSkpfSwKcFIoYSl7cmV0dXJuIEEudihBLmooYSkpfSwK -YWIoKXt2YXIgcyxyLHEscCxvPW51bGwKdHJ5e289QS51bygpfWNhdGNoKHMpe2lmKHQuZzguYihBLlJ1 -KHMpKSl7cj0kLkZmCmlmKHIhPW51bGwpcmV0dXJuIHIKdGhyb3cgc31lbHNlIHRocm93IHN9aWYoSi5S -TShvLCQuSTYpKXtyPSQuRmYKci50b1N0cmluZwpyZXR1cm4gcn0kLkk2PW8KaWYoJC5IaygpPT0kLkVi -KCkpcj0kLkZmPW8uWkkoIi4iKVsiWyJdKDApCmVsc2V7cT1vLnQ0KCkKcD1xLmxlbmd0aC0xCnI9JC5G -Zj1wPT09MD9xOkIueEIuTmoocSwwLHApfXJldHVybiByfSwKT1MoYSl7dmFyIHMKaWYoIShhPj02NSYm -YTw9OTApKXM9YT49OTcmJmE8PTEyMgplbHNlIHM9ITAKcmV0dXJuIHN9LApZdShhLGIpe3ZhciBzPWEu -bGVuZ3RoLHI9YisyCmlmKHM8cilyZXR1cm4hMQppZighQS5PUyhCLnhCLk8oYSxiKSkpcmV0dXJuITEK -aWYoQi54Qi5PKGEsYisxKSE9PTU4KXJldHVybiExCmlmKHM9PT1yKXJldHVybiEwCnJldHVybiBCLnhC -Lk8oYSxyKT09PTQ3fX0sSj17ClF1KGEsYixjLGQpe3JldHVybntpOmEscDpiLGU6Yyx4OmR9fSwKa3Mo -YSl7dmFyIHMscixxLHAsbyxuPWFbdi5kaXNwYXRjaFByb3BlcnR5TmFtZV0KaWYobj09bnVsbClpZigk -LkJ2PT1udWxsKXtBLlhEKCkKbj1hW3YuZGlzcGF0Y2hQcm9wZXJ0eU5hbWVdfWlmKG4hPW51bGwpe3M9 -bi5wCmlmKCExPT09cylyZXR1cm4gbi5pCmlmKCEwPT09cylyZXR1cm4gYQpyPU9iamVjdC5nZXRQcm90 -b3R5cGVPZihhKQppZihzPT09cilyZXR1cm4gbi5pCmlmKG4uZT09PXIpdGhyb3cgQS5iKEEuU1koIlJl -dHVybiBpbnRlcmNlcHRvciBmb3IgIitBLkVqKHMoYSxuKSkpKX1xPWEuY29uc3RydWN0b3IKaWYocT09 -bnVsbClwPW51bGwKZWxzZXtvPSQuem0KaWYobz09bnVsbClvPSQuem09di5nZXRJc29sYXRlVGFnKCJf -JGRhcnRfanMiKQpwPXFbb119aWYocCE9bnVsbClyZXR1cm4gcApwPUEudzMoYSkKaWYocCE9bnVsbCly -ZXR1cm4gcAppZih0eXBlb2YgYT09ImZ1bmN0aW9uIilyZXR1cm4gQi5ERwpzPU9iamVjdC5nZXRQcm90 -b3R5cGVPZihhKQppZihzPT1udWxsKXJldHVybiBCLlpRCmlmKHM9PT1PYmplY3QucHJvdG90eXBlKXJl -dHVybiBCLlpRCmlmKHR5cGVvZiBxPT0iZnVuY3Rpb24iKXtvPSQuem0KaWYobz09bnVsbClvPSQuem09 -di5nZXRJc29sYXRlVGFnKCJfJGRhcnRfanMiKQpPYmplY3QuZGVmaW5lUHJvcGVydHkocSxvLHt2YWx1 -ZTpCLnZCLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1ZX0pCnJl -dHVybiBCLnZCfXJldHVybiBCLnZCfSwKUWkoYSxiKXtpZihhPDB8fGE+NDI5NDk2NzI5NSl0aHJvdyBB -LmIoQS5URShhLDAsNDI5NDk2NzI5NSwibGVuZ3RoIixudWxsKSkKcmV0dXJuIEoucHkobmV3IEFycmF5 -KGEpLGIpfSwKS2goYSxiKXtpZihhPDApdGhyb3cgQS5iKEEueFkoIkxlbmd0aCBtdXN0IGJlIGEgbm9u -LW5lZ2F0aXZlIGludGVnZXI6ICIrYSxudWxsKSkKcmV0dXJuIEEuUUkobmV3IEFycmF5KGEpLGIuQygi -amQ8MD4iKSl9LApweShhLGIpe3JldHVybiBKLkVwKEEuUUkoYSxiLkMoImpkPDA+IikpLGIpfSwKRXAo -YSxiKXthLmZpeGVkJGxlbmd0aD1BcnJheQpyZXR1cm4gYX0sCnpDKGEpe2EuZml4ZWQkbGVuZ3RoPUFy -cmF5CmEuaW1tdXRhYmxlJGxpc3Q9QXJyYXkKcmV0dXJuIGF9LApHYShhKXtpZihhPDI1Nilzd2l0Y2go -YSl7Y2FzZSA5OmNhc2UgMTA6Y2FzZSAxMTpjYXNlIDEyOmNhc2UgMTM6Y2FzZSAzMjpjYXNlIDEzMzpj -YXNlIDE2MDpyZXR1cm4hMApkZWZhdWx0OnJldHVybiExfXN3aXRjaChhKXtjYXNlIDU3NjA6Y2FzZSA4 -MTkyOmNhc2UgODE5MzpjYXNlIDgxOTQ6Y2FzZSA4MTk1OmNhc2UgODE5NjpjYXNlIDgxOTc6Y2FzZSA4 -MTk4OmNhc2UgODE5OTpjYXNlIDgyMDA6Y2FzZSA4MjAxOmNhc2UgODIwMjpjYXNlIDgyMzI6Y2FzZSA4 -MjMzOmNhc2UgODIzOTpjYXNlIDgyODc6Y2FzZSAxMjI4ODpjYXNlIDY1Mjc5OnJldHVybiEwCmRlZmF1 -bHQ6cmV0dXJuITF9fSwKbW0oYSxiKXt2YXIgcyxyCmZvcihzPWEubGVuZ3RoO2I8czspe3I9Qi54Qi5X -KGEsYikKaWYociE9PTMyJiZyIT09MTMmJiFKLkdhKHIpKWJyZWFrOysrYn1yZXR1cm4gYn0sCmMxKGEs -Yil7dmFyIHMscgpmb3IoO2I+MDtiPXMpe3M9Yi0xCnI9Qi54Qi5PKGEscykKaWYociE9PTMyJiZyIT09 -MTMmJiFKLkdhKHIpKWJyZWFrfXJldHVybiBifSwKVTYoYSl7aWYodHlwZW9mIGE9PSJzdHJpbmciKXJl -dHVybiBKLkRyLnByb3RvdHlwZQppZihhPT1udWxsKXJldHVybiBhCmlmKGEuY29uc3RydWN0b3I9PUFy -cmF5KXJldHVybiBKLmpkLnByb3RvdHlwZQppZih0eXBlb2YgYSE9Im9iamVjdCIpe2lmKHR5cGVvZiBh -PT0iZnVuY3Rpb24iKXJldHVybiBKLmM1LnByb3RvdHlwZQpyZXR1cm4gYX1pZihhIGluc3RhbmNlb2Yg -QS5NaClyZXR1cm4gYQpyZXR1cm4gSi5rcyhhKX0sCllFKGEpe2lmKGE9PW51bGwpcmV0dXJuIGEKaWYo -dHlwZW9mIGEhPSJvYmplY3QiKXtpZih0eXBlb2YgYT09ImZ1bmN0aW9uIilyZXR1cm4gSi5jNS5wcm90 -b3R5cGUKcmV0dXJuIGF9aWYoYSBpbnN0YW5jZW9mIEEuTWgpcmV0dXJuIGEKcmV0dXJuIEoua3MoYSl9 -LAppYShhKXtpZih0eXBlb2YgYT09Im51bWJlciIpe2lmKE1hdGguZmxvb3IoYSk9PWEpcmV0dXJuIEou -TDcucHJvdG90eXBlCnJldHVybiBKLmtELnByb3RvdHlwZX1pZih0eXBlb2YgYT09InN0cmluZyIpcmV0 -dXJuIEouRHIucHJvdG90eXBlCmlmKGE9PW51bGwpcmV0dXJuIEoud2UucHJvdG90eXBlCmlmKHR5cGVv -ZiBhPT0iYm9vbGVhbiIpcmV0dXJuIEoueUUucHJvdG90eXBlCmlmKGEuY29uc3RydWN0b3I9PUFycmF5 -KXJldHVybiBKLmpkLnByb3RvdHlwZQppZih0eXBlb2YgYSE9Im9iamVjdCIpe2lmKHR5cGVvZiBhPT0i -ZnVuY3Rpb24iKXJldHVybiBKLmM1LnByb3RvdHlwZQpyZXR1cm4gYX1pZihhIGluc3RhbmNlb2YgQS5N -aClyZXR1cm4gYQpyZXR1cm4gSi5rcyhhKX0sCnJZKGEpe2lmKHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1 -cm4gSi5Eci5wcm90b3R5cGUKaWYoYT09bnVsbClyZXR1cm4gYQppZighKGEgaW5zdGFuY2VvZiBBLk1o -KSlyZXR1cm4gSi5rZC5wcm90b3R5cGUKcmV0dXJuIGF9LAp3MShhKXtpZihhPT1udWxsKXJldHVybiBh -CmlmKGEuY29uc3RydWN0b3I9PUFycmF5KXJldHVybiBKLmpkLnByb3RvdHlwZQppZih0eXBlb2YgYSE9 -Im9iamVjdCIpe2lmKHR5cGVvZiBhPT0iZnVuY3Rpb24iKXJldHVybiBKLmM1LnByb3RvdHlwZQpyZXR1 -cm4gYX1pZihhIGluc3RhbmNlb2YgQS5NaClyZXR1cm4gYQpyZXR1cm4gSi5rcyhhKX0sCkE1KGEsYil7 -cmV0dXJuIEoudzEoYSkuZVIoYSxiKX0sCkVoKGEsYixjKXtyZXR1cm4gSi5ZRShhKS5tSyhhLGIsYyl9 -LApFbChhLGIpe3JldHVybiBKLncxKGEpLmRyKGEsYil9LApGNyhhKXtyZXR1cm4gSi5VNihhKS5nb3Io -YSl9LApGTChhLGIpe3JldHVybiBKLnJZKGEpLmRkKGEsYil9LApHQShhLGIpe3JldHVybiBKLncxKGEp -LkUoYSxiKX0sCkhtKGEpe3JldHVybiBKLlU2KGEpLmdrKGEpfSwKSVQoYSl7cmV0dXJuIEoudzEoYSku -Z0EoYSl9LApKeShhLGIpe3JldHVybiBKLmlhKGEpLmU3KGEsYil9LApMdChhKXtyZXR1cm4gSi5ZRShh -KS53ZyhhKX0sCk0xKGEsYixjKXtyZXR1cm4gSi53MShhKS5FMihhLGIsYyl9LApNdShhLGIpe3JldHVy -biBKLllFKGEpLnNQKGEsYil9LApSTShhLGIpe2lmKGE9PW51bGwpcmV0dXJuIGI9PW51bGwKaWYodHlw -ZW9mIGEhPSJvYmplY3QiKXJldHVybiBiIT1udWxsJiZhPT09YgpyZXR1cm4gSi5pYShhKS5ETihhLGIp -fSwKUlgoYSl7cmV0dXJuIEoudzEoYSkuYnIoYSl9LApUMChhKXtyZXR1cm4gSi5yWShhKS5iUyhhKX0s -ClUzKGEpe3JldHVybiBKLmlhKGEpLmdtKGEpfSwKWVMoYSl7cmV0dXJuIEouaWEoYSlbIlsiXShhKX0s -CmE2KGEsYil7cmV0dXJuIEouclkoYSkuTyhhLGIpfSwKYlQoYSl7cmV0dXJuIEouWUUoYSkuRDQoYSl9 -LApjSChhKXtyZXR1cm4gSi5yWShhKS5oYyhhKX0sCmRSKGEpe3JldHVybiBKLllFKGEpLmdQKGEpfSwK -ZFooYSxiLGMsZCl7cmV0dXJuIEouWUUoYSkuT24oYSxiLGMsZCl9LApkaChhKXtyZXR1cm4gSi5ZRShh -KS5GRihhKX0sCmRyKGEsYil7cmV0dXJuIEouWUUoYSkuc2E0KGEsYil9LAppZyhhKXtyZXR1cm4gSi5Z -RShhKS5nUWcoYSl9LApsNShhLGIpe3JldHVybiBKLllFKGEpLnNoZihhLGIpfSwKcUYoYSl7cmV0dXJu -IEouWUUoYSkuZ1ZsKGEpfSwKdEgoYSxiLGMpe3JldHVybiBKLllFKGEpLnBrKGEsYixjKX0sCnU5KGEs -YixjKXtyZXR1cm4gSi53MShhKS5ZNShhLGIsYyl9LAp1VShhKXtyZXR1cm4gSi5VNihhKS5nbDAoYSl9 -LAp3ZihhLGIpe3JldHVybiBKLllFKGEpLnNSTihhLGIpfSwKeDkoYSxiKXtpZih0eXBlb2YgYj09PSJu -dW1iZXIiKWlmKGEuY29uc3RydWN0b3I9PUFycmF5fHx0eXBlb2YgYT09InN0cmluZyJ8fEEud1YoYSxh -W3YuZGlzcGF0Y2hQcm9wZXJ0eU5hbWVdKSlpZihiPj4+MD09PWImJmI8YS5sZW5ndGgpcmV0dXJuIGFb -Yl0KcmV0dXJuIEouVTYoYSkucShhLGIpfSwKemwoYSxiKXtyZXR1cm4gSi5VNihhKS50ZyhhLGIpfSwK -R3Y6ZnVuY3Rpb24gR3YoKXt9LAp5RTpmdW5jdGlvbiB5RSgpe30sCndlOmZ1bmN0aW9uIHdlKCl7fSwK -TUY6ZnVuY3Rpb24gTUYoKXt9LAp1MDpmdW5jdGlvbiB1MCgpe30sCmlDOmZ1bmN0aW9uIGlDKCl7fSwK -a2Q6ZnVuY3Rpb24ga2QoKXt9LApjNTpmdW5jdGlvbiBjNSgpe30sCmpkOmZ1bmN0aW9uIGpkKGEpe3Ro -aXMuJHRpPWF9LApQbzpmdW5jdGlvbiBQbyhhKXt0aGlzLiR0aT1hfSwKbTE6ZnVuY3Rpb24gbTEoYSxi -LGMpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5jPTAKXy5kPW51bGwKXy4kdGk9Y30sCnFJOmZ1bmN0 -aW9uIHFJKCl7fSwKTDc6ZnVuY3Rpb24gTDcoKXt9LAprRDpmdW5jdGlvbiBrRCgpe30sCkRyOmZ1bmN0 -aW9uIERyKCl7fX0sQj17fQp2YXIgdz1bQSxKLEJdCnZhciAkPXt9CkEuRksucHJvdG90eXBlPXt9Ckou -R3YucHJvdG90eXBlPXsKRE4oYSxiKXtyZXR1cm4gYT09PWJ9LApnbShhKXtyZXR1cm4gQS5lUShhKX0s -CiJbIihhKXtyZXR1cm4iSW5zdGFuY2Ugb2YgJyIrQS5saChhKSsiJyJ9LAplNyhhLGIpe3Quby5hKGIp -CnRocm93IEEuYihBLmxyKGEsYi5nV2EoKSxiLmduZCgpLGIuZ1ZtKCkpKX19CkoueUUucHJvdG90eXBl -PXsKIlsiKGEpe3JldHVybiBTdHJpbmcoYSl9LApnbShhKXtyZXR1cm4gYT81MTkwMTg6MjE4MTU5fSwK -JGlhMjoxfQpKLndlLnByb3RvdHlwZT17CkROKGEsYil7cmV0dXJuIG51bGw9PWJ9LAoiWyIoYSl7cmV0 -dXJuIm51bGwifSwKZ20oYSl7cmV0dXJuIDB9LAokaWM4OjF9CkouTUYucHJvdG90eXBlPXt9CkoudTAu -cHJvdG90eXBlPXsKZ20oYSl7cmV0dXJuIDB9LAoiWyIoYSl7cmV0dXJuIFN0cmluZyhhKX0sCiRpdm06 -MX0KSi5pQy5wcm90b3R5cGU9e30KSi5rZC5wcm90b3R5cGU9e30KSi5jNS5wcm90b3R5cGU9ewoiWyIo -YSl7dmFyIHM9YVskLncoKV0KaWYocz09bnVsbClyZXR1cm4gdGhpcy51KGEpCnJldHVybiJKYXZhU2Ny -aXB0IGZ1bmN0aW9uIGZvciAiK0EuRWooSi5ZUyhzKSl9LAokaUVIOjF9CkouamQucHJvdG90eXBlPXsK -ZHIoYSxiKXtyZXR1cm4gbmV3IEEualYoYSxBLnQ2KGEpLkMoIkA8MT4iKS5LcShiKS5DKCJqVjwxLDI+ -IikpfSwKaShhLGIpe0EudDYoYSkuYy5hKGIpCmlmKCEhYS5maXhlZCRsZW5ndGgpQS52KEEuTDQoImFk -ZCIpKQphLnB1c2goYil9LApXNChhLGIpe3ZhciBzCmlmKCEhYS5maXhlZCRsZW5ndGgpQS52KEEuTDQo -InJlbW92ZUF0IikpCnM9YS5sZW5ndGgKaWYoYj49cyl0aHJvdyBBLmIoQS5PNyhiLG51bGwpKQpyZXR1 -cm4gYS5zcGxpY2UoYiwxKVswXX0sClVHKGEsYixjKXt2YXIgcyxyCkEudDYoYSkuQygiY1g8MT4iKS5h -KGMpCmlmKCEhYS5maXhlZCRsZW5ndGgpQS52KEEuTDQoImluc2VydEFsbCIpKQpBLndBKGIsMCxhLmxl -bmd0aCwiaW5kZXgiKQppZighdC5VLmIoYykpYz1KLlJYKGMpCnM9Si5IbShjKQphLmxlbmd0aD1hLmxl -bmd0aCtzCnI9YitzCnRoaXMuWVcoYSxyLGEubGVuZ3RoLGEsYikKdGhpcy52ZyhhLGIscixjKX0sCkZW -KGEsYil7dmFyIHMKQS50NihhKS5DKCJjWDwxPiIpLmEoYikKaWYoISFhLmZpeGVkJGxlbmd0aClBLnYo -QS5MNCgiYWRkQWxsIikpCmlmKEFycmF5LmlzQXJyYXkoYikpe3RoaXMuS2goYSxiKQpyZXR1cm59Zm9y -KHM9Si5JVChiKTtzLkcoKTspYS5wdXNoKHMuZ2woKSl9LApLaChhLGIpe3ZhciBzLHIKdC5iLmEoYikK -cz1iLmxlbmd0aAppZihzPT09MClyZXR1cm4KaWYoYT09PWIpdGhyb3cgQS5iKEEuYTQoYSkpCmZvcihy -PTA7cjxzOysrcilhLnB1c2goYltyXSl9LApWMShhKXtpZighIWEuZml4ZWQkbGVuZ3RoKUEudihBLkw0 -KCJjbGVhciIpKQphLmxlbmd0aD0wfSwKRTIoYSxiLGMpe3ZhciBzPUEudDYoYSkKcmV0dXJuIG5ldyBB -LmxKKGEscy5LcShjKS5DKCIxKDIpIikuYShiKSxzLkMoIkA8MT4iKS5LcShjKS5DKCJsSjwxLDI+Iikp -fSwKSChhLGIpe3ZhciBzLHI9QS5POChhLmxlbmd0aCwiIiwhMSx0Lk4pCmZvcihzPTA7czxhLmxlbmd0 -aDsrK3MpdGhpcy5ZNShyLHMsQS5FaihhW3NdKSkKcmV0dXJuIHIuam9pbihiKX0sCmVSKGEsYil7cmV0 -dXJuIEEucUMoYSxiLG51bGwsQS50NihhKS5jKX0sCk4wKGEsYixjLGQpe3ZhciBzLHIscQpkLmEoYikK -QS50NihhKS5LcShkKS5DKCIxKDEsMikiKS5hKGMpCnM9YS5sZW5ndGgKZm9yKHI9YixxPTA7cTxzOysr -cSl7cj1jLiQyKHIsYVtxXSkKaWYoYS5sZW5ndGghPT1zKXRocm93IEEuYihBLmE0KGEpKX1yZXR1cm4g -cn0sCkh0KGEsYil7dmFyIHMscixxLHAsbyxuPUEudDYoYSkKbi5DKCJhMigxKSIpLmEoYikKcz1hLmxl -bmd0aApmb3Iocj1udWxsLHE9ITEscD0wO3A8czsrK3Ape289YVtwXQppZihBLm9UKGIuJDEobykpKXtp -ZihxKXRocm93IEEuYihBLkFtKCkpCnI9bwpxPSEwfWlmKHMhPT1hLmxlbmd0aCl0aHJvdyBBLmIoQS5h -NChhKSl9aWYocSlyZXR1cm4gcj09bnVsbD9uLmMuYShyKTpyCnRocm93IEEuYihBLldwKCkpfSwKRShh -LGIpe2lmKCEoYj49MCYmYjxhLmxlbmd0aCkpcmV0dXJuIEEuT0goYSxiKQpyZXR1cm4gYVtiXX0sCmd0 -SChhKXtpZihhLmxlbmd0aD4wKXJldHVybiBhWzBdCnRocm93IEEuYihBLldwKCkpfSwKZ3JaKGEpe3Zh -ciBzPWEubGVuZ3RoCmlmKHM+MClyZXR1cm4gYVtzLTFdCnRocm93IEEuYihBLldwKCkpfSwKWVcoYSxi -LGMsZCxlKXt2YXIgcyxyLHEscCxvCkEudDYoYSkuQygiY1g8MT4iKS5hKGQpCmlmKCEhYS5pbW11dGFi -bGUkbGlzdClBLnYoQS5MNCgic2V0UmFuZ2UiKSkKQS5qQihiLGMsYS5sZW5ndGgpCnM9Yy1iCmlmKHM9 -PT0wKXJldHVybgpBLmsxKGUsInNraXBDb3VudCIpCmlmKHQuai5iKGQpKXtyPWQKcT1lfWVsc2V7cj1K -LkE1KGQsZSkudHQoMCwhMSkKcT0wfXA9Si5VNihyKQppZihxK3M+cC5nayhyKSl0aHJvdyBBLmIoQS5h -cigpKQppZihxPGIpZm9yKG89cy0xO28+PTA7LS1vKWFbYitvXT1wLnEocixxK28pCmVsc2UgZm9yKG89 -MDtvPHM7KytvKWFbYitvXT1wLnEocixxK28pfSwKdmcoYSxiLGMsZCl7cmV0dXJuIHRoaXMuWVcoYSxi -LGMsZCwwKX0sClZyKGEsYil7dmFyIHMscgpBLnQ2KGEpLkMoImEyKDEpIikuYShiKQpzPWEubGVuZ3Ro -CmZvcihyPTA7cjxzOysrcil7aWYoQS5vVChiLiQxKGFbcl0pKSlyZXR1cm4hMAppZihhLmxlbmd0aCE9 -PXMpdGhyb3cgQS5iKEEuYTQoYSkpfXJldHVybiExfSwKdGcoYSxiKXt2YXIgcwpmb3Iocz0wO3M8YS5s -ZW5ndGg7KytzKWlmKEouUk0oYVtzXSxiKSlyZXR1cm4hMApyZXR1cm4hMX0sCmdsMChhKXtyZXR1cm4g -YS5sZW5ndGg9PT0wfSwKZ29yKGEpe3JldHVybiBhLmxlbmd0aCE9PTB9LAoiWyIoYSl7cmV0dXJuIEEu -eChhLCJbIiwiXSIpfSwKdHQoYSxiKXt2YXIgcz1BLlFJKGEuc2xpY2UoMCksQS50NihhKSkKcmV0dXJu -IHN9LApicihhKXtyZXR1cm4gdGhpcy50dChhLCEwKX0sCmdBKGEpe3JldHVybiBuZXcgSi5tMShhLGEu -bGVuZ3RoLEEudDYoYSkuQygibTE8MT4iKSl9LApnbShhKXtyZXR1cm4gQS5lUShhKX0sCmdrKGEpe3Jl -dHVybiBhLmxlbmd0aH0sCnEoYSxiKXtBLklaKGIpCmlmKCEoYj49MCYmYjxhLmxlbmd0aCkpdGhyb3cg -QS5iKEEudShhLGIpKQpyZXR1cm4gYVtiXX0sClk1KGEsYixjKXtBLnQ2KGEpLmMuYShjKQppZighIWEu -aW1tdXRhYmxlJGxpc3QpQS52KEEuTDQoImluZGV4ZWQgc2V0IikpCmlmKCEoYj49MCYmYjxhLmxlbmd0 -aCkpdGhyb3cgQS5iKEEudShhLGIpKQphW2JdPWN9LAokaWJROjEsCiRpY1g6MSwKJGl6TToxfQpKLlBv -LnByb3RvdHlwZT17fQpKLm0xLnByb3RvdHlwZT17CmdsKCl7dmFyIHM9dGhpcy5kCnJldHVybiBzPT1u -dWxsP3RoaXMuJHRpLmMuYShzKTpzfSwKRygpe3ZhciBzLHI9dGhpcyxxPXIuYSxwPXEubGVuZ3RoCmlm -KHIuYiE9PXApdGhyb3cgQS5iKEEubGsocSkpCnM9ci5jCmlmKHM+PXApe3Iuc0YobnVsbCkKcmV0dXJu -ITF9ci5zRihxW3NdKTsrK3IuYwpyZXR1cm4hMH0sCnNGKGEpe3RoaXMuZD10aGlzLiR0aS5DKCIxPyIp -LmEoYSl9LAokaUFuOjF9CkoucUkucHJvdG90eXBlPXsKelEoYSl7aWYoYT4wKXtpZihhIT09MS8wKXJl -dHVybiBNYXRoLnJvdW5kKGEpfWVsc2UgaWYoYT4tMS8wKXJldHVybiAwLU1hdGgucm91bmQoMC1hKQp0 -aHJvdyBBLmIoQS5MNCgiIithKyIucm91bmQoKSIpKX0sCiJbIihhKXtpZihhPT09MCYmMS9hPDApcmV0 -dXJuIi0wLjAiCmVsc2UgcmV0dXJuIiIrYX0sCmdtKGEpe3ZhciBzLHIscSxwLG89YXwwCmlmKGE9PT1v -KXJldHVybiBvJjUzNjg3MDkxMQpzPU1hdGguYWJzKGEpCnI9TWF0aC5sb2cocykvMC42OTMxNDcxODA1 -NTk5NDUzfDAKcT1NYXRoLnBvdygyLHIpCnA9czwxP3MvcTpxL3MKcmV0dXJuKChwKjkwMDcxOTkyNTQ3 -NDA5OTJ8MCkrKHAqMzU0MjI0MzE4MTE3NjUyMXwwKSkqNTk5MTk3K3IqMTI1OSY1MzY4NzA5MTF9LAp6 -WShhLGIpe3ZhciBzPWElYgppZihzPT09MClyZXR1cm4gMAppZihzPjApcmV0dXJuIHMKcmV0dXJuIHMr -Yn0sCkJVKGEsYil7cmV0dXJuKGF8MCk9PT1hP2EvYnwwOnRoaXMuREooYSxiKX0sCkRKKGEsYil7dmFy -IHM9YS9iCmlmKHM+PS0yMTQ3NDgzNjQ4JiZzPD0yMTQ3NDgzNjQ3KXJldHVybiBzfDAKaWYocz4wKXtp -ZihzIT09MS8wKXJldHVybiBNYXRoLmZsb29yKHMpfWVsc2UgaWYocz4tMS8wKXJldHVybiBNYXRoLmNl -aWwocykKdGhyb3cgQS5iKEEuTDQoIlJlc3VsdCBvZiB0cnVuY2F0aW5nIGRpdmlzaW9uIGlzICIrQS5F -aihzKSsiOiAiK0EuRWooYSkrIiB+LyAiK2IpKX0sCndHKGEsYil7dmFyIHMKaWYoYT4wKXM9dGhpcy5V -aChhLGIpCmVsc2V7cz1iPjMxPzMxOmIKcz1hPj5zPj4+MH1yZXR1cm4gc30sCmJmKGEsYil7aWYoMD5i -KXRocm93IEEuYihBLnRMKGIpKQpyZXR1cm4gdGhpcy5VaChhLGIpfSwKVWgoYSxiKXtyZXR1cm4gYj4z -MT8wOmE+Pj5ifSwKJGlDUDoxLAokaVpaOjF9CkouTDcucHJvdG90eXBlPXskaUlqOjF9Ckoua0QucHJv -dG90eXBlPXt9CkouRHIucHJvdG90eXBlPXsKTyhhLGIpe2lmKGI8MCl0aHJvdyBBLmIoQS51KGEsYikp -CmlmKGI+PWEubGVuZ3RoKUEudihBLnUoYSxiKSkKcmV0dXJuIGEuY2hhckNvZGVBdChiKX0sClcoYSxi -KXtpZihiPj1hLmxlbmd0aCl0aHJvdyBBLmIoQS51KGEsYikpCnJldHVybiBhLmNoYXJDb2RlQXQoYil9 -LApkZChhLGIpe3JldHVybiBuZXcgQS51bihiLGEsMCl9LApoKGEsYil7cmV0dXJuIGErYn0sClRjKGEs -Yil7dmFyIHM9Yi5sZW5ndGgscj1hLmxlbmd0aAppZihzPnIpcmV0dXJuITEKcmV0dXJuIGI9PT10aGlz -LnluKGEsci1zKX0sCmk3KGEsYixjLGQpe3ZhciBzPUEuakIoYixjLGEubGVuZ3RoKQpyZXR1cm4gYS5z -dWJzdHJpbmcoMCxiKStkK2Euc3Vic3RyaW5nKHMpfSwKUWkoYSxiLGMpe3ZhciBzCmlmKGM8MHx8Yz5h -Lmxlbmd0aCl0aHJvdyBBLmIoQS5URShjLDAsYS5sZW5ndGgsbnVsbCxudWxsKSkKcz1jK2IubGVuZ3Ro -CmlmKHM+YS5sZW5ndGgpcmV0dXJuITEKcmV0dXJuIGI9PT1hLnN1YnN0cmluZyhjLHMpfSwKbihhLGIp -e3JldHVybiB0aGlzLlFpKGEsYiwwKX0sCk5qKGEsYixjKXtyZXR1cm4gYS5zdWJzdHJpbmcoYixBLmpC -KGIsYyxhLmxlbmd0aCkpfSwKeW4oYSxiKXtyZXR1cm4gdGhpcy5OaihhLGIsbnVsbCl9LApoYyhhKXty -ZXR1cm4gYS50b0xvd2VyQ2FzZSgpfSwKYlMoYSl7dmFyIHMscixxLHA9YS50cmltKCksbz1wLmxlbmd0 -aAppZihvPT09MClyZXR1cm4gcAppZih0aGlzLlcocCwwKT09PTEzMyl7cz1KLm1tKHAsMSkKaWYocz09 -PW8pcmV0dXJuIiJ9ZWxzZSBzPTAKcj1vLTEKcT10aGlzLk8ocCxyKT09PTEzMz9KLmMxKHAscik6bwpp -ZihzPT09MCYmcT09PW8pcmV0dXJuIHAKcmV0dXJuIHAuc3Vic3RyaW5nKHMscSl9LApJeChhLGIpe3Zh -ciBzLHIKaWYoMD49YilyZXR1cm4iIgppZihiPT09MXx8YS5sZW5ndGg9PT0wKXJldHVybiBhCmlmKGIh -PT1iPj4+MCl0aHJvdyBBLmIoQi5FcSkKZm9yKHM9YSxyPSIiOyEwOyl7aWYoKGImMSk9PT0xKXI9cyty -CmI9Yj4+PjEKaWYoYj09PTApYnJlYWsKcys9c31yZXR1cm4gcn0sClhVKGEsYixjKXt2YXIgcwppZihj -PDB8fGM+YS5sZW5ndGgpdGhyb3cgQS5iKEEuVEUoYywwLGEubGVuZ3RoLG51bGwsbnVsbCkpCnM9YS5p -bmRleE9mKGIsYykKcmV0dXJuIHN9LApPWShhLGIpe3JldHVybiB0aGlzLlhVKGEsYiwwKX0sClBrKGEs -YixjKXt2YXIgcyxyCmlmKGM9PW51bGwpYz1hLmxlbmd0aAplbHNlIGlmKGM8MHx8Yz5hLmxlbmd0aCl0 -aHJvdyBBLmIoQS5URShjLDAsYS5sZW5ndGgsbnVsbCxudWxsKSkKcz1iLmxlbmd0aApyPWEubGVuZ3Ro -CmlmKGMrcz5yKWM9ci1zCnJldHVybiBhLmxhc3RJbmRleE9mKGIsYyl9LApjbihhLGIpe3JldHVybiB0 -aGlzLlBrKGEsYixudWxsKX0sCklzKGEsYixjKXt2YXIgcz1hLmxlbmd0aAppZihjPnMpdGhyb3cgQS5i -KEEuVEUoYywwLHMsbnVsbCxudWxsKSkKcmV0dXJuIEEuU1EoYSxiLGMpfSwKdGcoYSxiKXtyZXR1cm4g -dGhpcy5JcyhhLGIsMCl9LAoiWyIoYSl7cmV0dXJuIGF9LApnbShhKXt2YXIgcyxyLHEKZm9yKHM9YS5s -ZW5ndGgscj0wLHE9MDtxPHM7KytxKXtyPXIrYS5jaGFyQ29kZUF0KHEpJjUzNjg3MDkxMQpyPXIrKChy -JjUyNDI4Nyk8PDEwKSY1MzY4NzA5MTEKcl49cj4+Nn1yPXIrKChyJjY3MTA4ODYzKTw8MykmNTM2ODcw -OTExCnJePXI+PjExCnJldHVybiByKygociYxNjM4Myk8PDE1KSY1MzY4NzA5MTF9LApnayhhKXtyZXR1 -cm4gYS5sZW5ndGh9LApxKGEsYil7QS5JWihiKQppZihiPj1hLmxlbmd0aCl0aHJvdyBBLmIoQS51KGEs -YikpCnJldHVybiBhW2JdfSwKJGl2WDoxLAokaXFVOjF9CkEuQlIucHJvdG90eXBlPXsKZ0EoYSl7dmFy -IHM9QS5MaCh0aGlzKQpyZXR1cm4gbmV3IEEuZVQoSi5JVCh0aGlzLmdPTigpKSxzLkMoIkA8MT4iKS5L -cShzLnpbMV0pLkMoImVUPDEsMj4iKSl9LApnayhhKXtyZXR1cm4gSi5IbSh0aGlzLmdPTigpKX0sCmds -MChhKXtyZXR1cm4gSi51VSh0aGlzLmdPTigpKX0sCmdvcihhKXtyZXR1cm4gSi5GNyh0aGlzLmdPTigp -KX0sCmVSKGEsYil7dmFyIHM9QS5MaCh0aGlzKQpyZXR1cm4gQS5HSihKLkE1KHRoaXMuZ09OKCksYiks -cy5jLHMuelsxXSl9LApFKGEsYil7cmV0dXJuIEEuTGgodGhpcykuelsxXS5hKEouR0EodGhpcy5nT04o -KSxiKSl9LAoiWyIoYSl7cmV0dXJuIEouWVModGhpcy5nT04oKSl9fQpBLmVULnByb3RvdHlwZT17Ckco -KXtyZXR1cm4gdGhpcy5hLkcoKX0sCmdsKCl7cmV0dXJuIHRoaXMuJHRpLnpbMV0uYSh0aGlzLmEuZ2wo -KSl9LAokaUFuOjF9CkEuWnkucHJvdG90eXBlPXsKZ09OKCl7cmV0dXJuIHRoaXMuYX19CkEub2wucHJv -dG90eXBlPXskaWJROjF9CkEuVXEucHJvdG90eXBlPXsKcShhLGIpe3JldHVybiB0aGlzLiR0aS56WzFd -LmEoSi54OSh0aGlzLmEsQS5JWihiKSkpfSwKWTUoYSxiLGMpe3ZhciBzPXRoaXMuJHRpCkoudTkodGhp -cy5hLGIscy5jLmEocy56WzFdLmEoYykpKX0sCiRpYlE6MSwKJGl6TToxfQpBLmpWLnByb3RvdHlwZT17 -CmRyKGEsYil7cmV0dXJuIG5ldyBBLmpWKHRoaXMuYSx0aGlzLiR0aS5DKCJAPDE+IikuS3EoYikuQygi -alY8MSwyPiIpKX0sCmdPTigpe3JldHVybiB0aGlzLmF9fQpBLmMucHJvdG90eXBlPXsKIlsiKGEpe3Jl -dHVybiJMYXRlSW5pdGlhbGl6YXRpb25FcnJvcjogIit0aGlzLmF9fQpBLnFqLnByb3RvdHlwZT17Cmdr -KGEpe3JldHVybiB0aGlzLmEubGVuZ3RofSwKcShhLGIpe3JldHVybiBCLnhCLk8odGhpcy5hLEEuSVoo -YikpfX0KQS5IYi5wcm90b3R5cGU9e30KQS5iUS5wcm90b3R5cGU9e30KQS5hTC5wcm90b3R5cGU9ewpn -QShhKXt2YXIgcz10aGlzCnJldHVybiBuZXcgQS5hNyhzLHMuZ2socyksQS5MaChzKS5DKCJhNzxhTC5F -PiIpKX0sCmdsMChhKXtyZXR1cm4gdGhpcy5nayh0aGlzKT09PTB9LApIKGEsYil7dmFyIHMscixxLHA9 -dGhpcyxvPXAuZ2socCkKaWYoYi5sZW5ndGghPT0wKXtpZihvPT09MClyZXR1cm4iIgpzPUEuRWoocC5F -KDAsMCkpCmlmKG8hPT1wLmdrKHApKXRocm93IEEuYihBLmE0KHApKQpmb3Iocj1zLHE9MTtxPG87Kytx -KXtyPXIrYitBLkVqKHAuRSgwLHEpKQppZihvIT09cC5nayhwKSl0aHJvdyBBLmIoQS5hNChwKSl9cmV0 -dXJuIHIuY2hhckNvZGVBdCgwKT09MD9yOnJ9ZWxzZXtmb3IocT0wLHI9IiI7cTxvOysrcSl7cis9QS5F -aihwLkUoMCxxKSkKaWYobyE9PXAuZ2socCkpdGhyb3cgQS5iKEEuYTQocCkpfXJldHVybiByLmNoYXJD -b2RlQXQoMCk9PTA/cjpyfX0sCmV2KGEsYil7cmV0dXJuIHRoaXMuR0coMCxBLkxoKHRoaXMpLkMoImEy -KGFMLkUpIikuYShiKSl9LApFMihhLGIsYyl7dmFyIHM9QS5MaCh0aGlzKQpyZXR1cm4gbmV3IEEubEoo -dGhpcyxzLktxKGMpLkMoIjEoYUwuRSkiKS5hKGIpLHMuQygiQDxhTC5FPiIpLktxKGMpLkMoImxKPDEs -Mj4iKSl9LApOMChhLGIsYyxkKXt2YXIgcyxyLHEscD10aGlzCmQuYShiKQpBLkxoKHApLktxKGQpLkMo -IjEoMSxhTC5FKSIpLmEoYykKcz1wLmdrKHApCmZvcihyPWIscT0wO3E8czsrK3Epe3I9Yy4kMihyLHAu -RSgwLHEpKQppZihzIT09cC5nayhwKSl0aHJvdyBBLmIoQS5hNChwKSl9cmV0dXJuIHJ9LAplUihhLGIp -e3JldHVybiBBLnFDKHRoaXMsYixudWxsLEEuTGgodGhpcykuQygiYUwuRSIpKX0sCnR0KGEsYil7cmV0 -dXJuIEEuWTEodGhpcywhMCxBLkxoKHRoaXMpLkMoImFMLkUiKSl9LApicihhKXtyZXR1cm4gdGhpcy50 -dChhLCEwKX19CkEubkgucHJvdG90eXBlPXsKSGQoYSxiLGMsZCl7dmFyIHMscj10aGlzLmIKQS5rMShy -LCJzdGFydCIpCnM9dGhpcy5jCmlmKHMhPW51bGwpe0EuazEocywiZW5kIikKaWYocj5zKXRocm93IEEu -YihBLlRFKHIsMCxzLCJzdGFydCIsbnVsbCkpfX0sCmdVRCgpe3ZhciBzPUouSG0odGhpcy5hKSxyPXRo -aXMuYwppZihyPT1udWxsfHxyPnMpcmV0dXJuIHMKcmV0dXJuIHJ9LApnQXMoKXt2YXIgcz1KLkhtKHRo -aXMuYSkscj10aGlzLmIKaWYocj5zKXJldHVybiBzCnJldHVybiByfSwKZ2soYSl7dmFyIHMscj1KLkht -KHRoaXMuYSkscT10aGlzLmIKaWYocT49cilyZXR1cm4gMApzPXRoaXMuYwppZihzPT1udWxsfHxzPj1y -KXJldHVybiByLXEKaWYodHlwZW9mIHMhPT0ibnVtYmVyIilyZXR1cm4gcy5ITigpCnJldHVybiBzLXF9 -LApFKGEsYil7dmFyIHM9dGhpcyxyPXMuZ0FzKCkrYgppZihiPDB8fHI+PXMuZ1VEKCkpdGhyb3cgQS5i -KEEuQ2YoYixzLCJpbmRleCIsbnVsbCxudWxsKSkKcmV0dXJuIEouR0Eocy5hLHIpfSwKZVIoYSxiKXt2 -YXIgcyxyLHE9dGhpcwpBLmsxKGIsImNvdW50IikKcz1xLmIrYgpyPXEuYwppZihyIT1udWxsJiZzPj1y -KXJldHVybiBuZXcgQS5NQihxLiR0aS5DKCJNQjwxPiIpKQpyZXR1cm4gQS5xQyhxLmEscyxyLHEuJHRp -LmMpfSwKdHQoYSxiKXt2YXIgcyxyLHEscD10aGlzLG89cC5iLG49cC5hLG09Si5VNihuKSxsPW0uZ2so -biksaz1wLmMKaWYoayE9bnVsbCYmazxsKWw9awpzPWwtbwppZihzPD0wKXtuPUouUWkoMCxwLiR0aS5j -KQpyZXR1cm4gbn1yPUEuTzgocyxtLkUobixvKSwhMSxwLiR0aS5jKQpmb3IocT0xO3E8czsrK3Epe0Iu -Tm0uWTUocixxLG0uRShuLG8rcSkpCmlmKG0uZ2sobik8bCl0aHJvdyBBLmIoQS5hNChwKSl9cmV0dXJu -IHJ9fQpBLmE3LnByb3RvdHlwZT17CmdsKCl7dmFyIHM9dGhpcy5kCnJldHVybiBzPT1udWxsP3RoaXMu -JHRpLmMuYShzKTpzfSwKRygpe3ZhciBzLHI9dGhpcyxxPXIuYSxwPUouVTYocSksbz1wLmdrKHEpCmlm -KHIuYiE9PW8pdGhyb3cgQS5iKEEuYTQocSkpCnM9ci5jCmlmKHM+PW8pe3Iuc0kobnVsbCkKcmV0dXJu -ITF9ci5zSShwLkUocSxzKSk7KytyLmMKcmV0dXJuITB9LApzSShhKXt0aGlzLmQ9dGhpcy4kdGkuQygi -MT8iKS5hKGEpfSwKJGlBbjoxfQpBLmkxLnByb3RvdHlwZT17CmdBKGEpe3ZhciBzPUEuTGgodGhpcykK -cmV0dXJuIG5ldyBBLk1IKEouSVQodGhpcy5hKSx0aGlzLmIscy5DKCJAPDE+IikuS3Eocy56WzFdKS5D -KCJNSDwxLDI+IikpfSwKZ2soYSl7cmV0dXJuIEouSG0odGhpcy5hKX0sCmdsMChhKXtyZXR1cm4gSi51 -VSh0aGlzLmEpfSwKRShhLGIpe3JldHVybiB0aGlzLmIuJDEoSi5HQSh0aGlzLmEsYikpfX0KQS54eS5w -cm90b3R5cGU9eyRpYlE6MX0KQS5NSC5wcm90b3R5cGU9ewpHKCl7dmFyIHM9dGhpcyxyPXMuYgppZihy -LkcoKSl7cy5zSShzLmMuJDEoci5nbCgpKSkKcmV0dXJuITB9cy5zSShudWxsKQpyZXR1cm4hMX0sCmds -KCl7dmFyIHM9dGhpcy5hCnJldHVybiBzPT1udWxsP3RoaXMuJHRpLnpbMV0uYShzKTpzfSwKc0koYSl7 -dGhpcy5hPXRoaXMuJHRpLkMoIjI/IikuYShhKX19CkEubEoucHJvdG90eXBlPXsKZ2soYSl7cmV0dXJu -IEouSG0odGhpcy5hKX0sCkUoYSxiKXtyZXR1cm4gdGhpcy5iLiQxKEouR0EodGhpcy5hLGIpKX19CkEu -VTUucHJvdG90eXBlPXsKZ0EoYSl7cmV0dXJuIG5ldyBBLlNPKEouSVQodGhpcy5hKSx0aGlzLmIsdGhp -cy4kdGkuQygiU088MT4iKSl9fQpBLlNPLnByb3RvdHlwZT17CkcoKXt2YXIgcyxyCmZvcihzPXRoaXMu -YSxyPXRoaXMuYjtzLkcoKTspaWYoQS5vVChyLiQxKHMuZ2woKSkpKXJldHVybiEwCnJldHVybiExfSwK -Z2woKXtyZXR1cm4gdGhpcy5hLmdsKCl9fQpBLkFNLnByb3RvdHlwZT17CmVSKGEsYil7QS5NUihiLCJj -b3VudCIsdC5TKQpBLmsxKGIsImNvdW50IikKcmV0dXJuIG5ldyBBLkFNKHRoaXMuYSx0aGlzLmIrYixB -LkxoKHRoaXMpLkMoIkFNPDE+IikpfSwKZ0EoYSl7cmV0dXJuIG5ldyBBLlUxKEouSVQodGhpcy5hKSx0 -aGlzLmIsQS5MaCh0aGlzKS5DKCJVMTwxPiIpKX19CkEuZDUucHJvdG90eXBlPXsKZ2soYSl7dmFyIHM9 -Si5IbSh0aGlzLmEpLXRoaXMuYgppZihzPj0wKXJldHVybiBzCnJldHVybiAwfSwKZVIoYSxiKXtBLk1S -KGIsImNvdW50Iix0LlMpCkEuazEoYiwiY291bnQiKQpyZXR1cm4gbmV3IEEuZDUodGhpcy5hLHRoaXMu -YitiLHRoaXMuJHRpKX0sCiRpYlE6MX0KQS5VMS5wcm90b3R5cGU9ewpHKCl7dmFyIHMscgpmb3Iocz10 -aGlzLmEscj0wO3I8dGhpcy5iOysrcilzLkcoKQp0aGlzLmI9MApyZXR1cm4gcy5HKCl9LApnbCgpe3Jl -dHVybiB0aGlzLmEuZ2woKX19CkEuTUIucHJvdG90eXBlPXsKZ0EoYSl7cmV0dXJuIEIuR3d9LApnbDAo -YSl7cmV0dXJuITB9LApnayhhKXtyZXR1cm4gMH0sCkUoYSxiKXt0aHJvdyBBLmIoQS5URShiLDAsMCwi -aW5kZXgiLG51bGwpKX0sCmVSKGEsYil7QS5rMShiLCJjb3VudCIpCnJldHVybiB0aGlzfX0KQS5GdS5w -cm90b3R5cGU9ewpHKCl7cmV0dXJuITF9LApnbCgpe3Rocm93IEEuYihBLldwKCkpfSwKJGlBbjoxfQpB -LnU2LnByb3RvdHlwZT17CmdBKGEpe3JldHVybiBuZXcgQS5KQihKLklUKHRoaXMuYSksdGhpcy4kdGku -QygiSkI8MT4iKSl9fQpBLkpCLnByb3RvdHlwZT17CkcoKXt2YXIgcyxyCmZvcihzPXRoaXMuYSxyPXRo -aXMuJHRpLmM7cy5HKCk7KWlmKHIuYihzLmdsKCkpKXJldHVybiEwCnJldHVybiExfSwKZ2woKXtyZXR1 -cm4gdGhpcy4kdGkuYy5hKHRoaXMuYS5nbCgpKX0sCiRpQW46MX0KQS5TVS5wcm90b3R5cGU9e30KQS5S -ZS5wcm90b3R5cGU9ewpZNShhLGIsYyl7QS5MaCh0aGlzKS5DKCJSZS5FIikuYShjKQp0aHJvdyBBLmIo -QS5MNCgiQ2Fubm90IG1vZGlmeSBhbiB1bm1vZGlmaWFibGUgbGlzdCIpKX19CkEudzIucHJvdG90eXBl -PXt9CkEud3YucHJvdG90eXBlPXsKZ20oYSl7dmFyIHM9dGhpcy5faGFzaENvZGUKaWYocyE9bnVsbCly -ZXR1cm4gcwpzPTY2NDU5NypKLlUzKHRoaXMuYSkmNTM2ODcwOTExCnRoaXMuX2hhc2hDb2RlPXMKcmV0 -dXJuIHN9LAoiWyIoYSl7cmV0dXJuJ1N5bWJvbCgiJytBLkVqKHRoaXMuYSkrJyIpJ30sCkROKGEsYil7 -aWYoYj09bnVsbClyZXR1cm4hMQpyZXR1cm4gYiBpbnN0YW5jZW9mIEEud3YmJnRoaXMuYT09Yi5hfSwK -JGlHRDoxfQpBLlFDLnByb3RvdHlwZT17fQpBLlBELnByb3RvdHlwZT17fQpBLldVLnByb3RvdHlwZT17 -CmdsMChhKXtyZXR1cm4gdGhpcy5nayh0aGlzKT09PTB9LAoiWyIoYSl7cmV0dXJuIEEubk8odGhpcyl9 -LApZNShhLGIsYyl7dmFyIHM9QS5MaCh0aGlzKQpzLmMuYShiKQpzLnpbMV0uYShjKQpBLmRjKCl9LApn -UHUoYSl7cmV0dXJuIHRoaXMucTQoMCxBLkxoKHRoaXMpLkMoIk4zPDEsMj4iKSl9LApxNChhLGIpe3Zh -ciBzPXRoaXMKcmV0dXJuIEEubDAoZnVuY3Rpb24oKXt2YXIgcj1hCnZhciBxPTAscD0xLG8sbixtLGws -ayxqCnJldHVybiBmdW5jdGlvbiAkYXN5bmMkZ1B1KGMsZCl7aWYoYz09PTEpe289ZApxPXB9d2hpbGUo -dHJ1ZSlzd2l0Y2gocSl7Y2FzZSAwOm49cy5ndmMoKSxuPW4uZ0EobiksbT1BLkxoKHMpLGw9bS56WzFd -LG09bS5DKCJAPDE+IikuS3EobCkuQygiTjM8MSwyPiIpCmNhc2UgMjppZighbi5HKCkpe3E9MwpicmVh -a31rPW4uZ2woKQpqPXMucSgwLGspCnE9NApyZXR1cm4gbmV3IEEuTjMoayxqPT1udWxsP2wuYShqKTpq -LG0pCmNhc2UgNDpxPTIKYnJlYWsKY2FzZSAzOnJldHVybiBBLlRoKCkKY2FzZSAxOnJldHVybiBBLllt -KG8pfX19LGIpfSwKJGlaMDoxfQpBLkxQLnByb3RvdHlwZT17CmdrKGEpe3JldHVybiB0aGlzLmF9LAp4 -NChhKXtpZih0eXBlb2YgYSE9InN0cmluZyIpcmV0dXJuITEKaWYoIl9fcHJvdG9fXyI9PT1hKXJldHVy -biExCnJldHVybiB0aGlzLmIuaGFzT3duUHJvcGVydHkoYSl9LApxKGEsYil7aWYoIXRoaXMueDQoYikp -cmV0dXJuIG51bGwKcmV0dXJuIHRoaXMuYltBLm4oYildfSwKSyhhLGIpe3ZhciBzLHIscSxwLG8sbj10 -aGlzLiR0aQpuLkMoIn4oMSwyKSIpLmEoYikKcz10aGlzLmMKZm9yKHI9cy5sZW5ndGgscT10aGlzLmIs -bj1uLnpbMV0scD0wO3A8cjsrK3Ape289QS5uKHNbcF0pCmIuJDIobyxuLmEocVtvXSkpfX0sCmd2Yygp -e3JldHVybiBuZXcgQS5YUih0aGlzLHRoaXMuJHRpLkMoIlhSPDE+IikpfX0KQS5YUi5wcm90b3R5cGU9 -ewpnQShhKXt2YXIgcz10aGlzLmEuYwpyZXR1cm4gbmV3IEoubTEocyxzLmxlbmd0aCxBLnQ2KHMpLkMo -Im0xPDE+IikpfSwKZ2soYSl7cmV0dXJuIHRoaXMuYS5jLmxlbmd0aH19CkEuTEkucHJvdG90eXBlPXsK -Z1dhKCl7dmFyIHM9dGhpcy5hCnJldHVybiBzfSwKZ25kKCl7dmFyIHMscixxLHAsbz10aGlzCmlmKG8u -Yz09PTEpcmV0dXJuIEIuaFUKcz1vLmQKcj1zLmxlbmd0aC1vLmUubGVuZ3RoLW8uZgppZihyPT09MCly -ZXR1cm4gQi5oVQpxPVtdCmZvcihwPTA7cDxyOysrcCl7aWYoIShwPHMubGVuZ3RoKSlyZXR1cm4gQS5P -SChzLHApCnEucHVzaChzW3BdKX1yZXR1cm4gSi56QyhxKX0sCmdWbSgpe3ZhciBzLHIscSxwLG8sbixt -LGwsaz10aGlzCmlmKGsuYyE9PTApcmV0dXJuIEIuV08Kcz1rLmUKcj1zLmxlbmd0aApxPWsuZApwPXEu -bGVuZ3RoLXItay5mCmlmKHI9PT0wKXJldHVybiBCLldPCm89bmV3IEEuTjUodC5lbykKZm9yKG49MDtu -PHI7KytuKXtpZighKG48cy5sZW5ndGgpKXJldHVybiBBLk9IKHMsbikKbT1zW25dCmw9cCtuCmlmKCEo -bD49MCYmbDxxLmxlbmd0aCkpcmV0dXJuIEEuT0gocSxsKQpvLlk1KDAsbmV3IEEud3YobSkscVtsXSl9 -cmV0dXJuIG5ldyBBLlBEKG8sdC5nRil9LAokaXZROjF9CkEuQ2oucHJvdG90eXBlPXsKJDIoYSxiKXt2 -YXIgcwpBLm4oYSkKcz10aGlzLmEKcy5iPXMuYisiJCIrYQpCLk5tLmkodGhpcy5iLGEpCkIuTm0uaSh0 -aGlzLmMsYik7KytzLmF9LAokUzoxMX0KQS5mOS5wcm90b3R5cGU9ewpxUyhhKXt2YXIgcyxyLHE9dGhp -cyxwPW5ldyBSZWdFeHAocS5hKS5leGVjKGEpCmlmKHA9PW51bGwpcmV0dXJuIG51bGwKcz1PYmplY3Qu -Y3JlYXRlKG51bGwpCnI9cS5iCmlmKHIhPT0tMSlzLmFyZ3VtZW50cz1wW3IrMV0Kcj1xLmMKaWYociE9 -PS0xKXMuYXJndW1lbnRzRXhwcj1wW3IrMV0Kcj1xLmQKaWYociE9PS0xKXMuZXhwcj1wW3IrMV0Kcj1x -LmUKaWYociE9PS0xKXMubWV0aG9kPXBbcisxXQpyPXEuZgppZihyIT09LTEpcy5yZWNlaXZlcj1wW3Ir -MV0KcmV0dXJuIHN9fQpBLlcwLnByb3RvdHlwZT17CiJbIihhKXt2YXIgcz10aGlzLmIKaWYocz09bnVs -bClyZXR1cm4iTm9TdWNoTWV0aG9kRXJyb3I6ICIrdGhpcy5hCnJldHVybiJOb1N1Y2hNZXRob2RFcnJv -cjogbWV0aG9kIG5vdCBmb3VuZDogJyIrcysiJyBvbiBudWxsIn19CkEuYXoucHJvdG90eXBlPXsKIlsi -KGEpe3ZhciBzLHI9dGhpcyxxPSJOb1N1Y2hNZXRob2RFcnJvcjogbWV0aG9kIG5vdCBmb3VuZDogJyIs -cD1yLmIKaWYocD09bnVsbClyZXR1cm4iTm9TdWNoTWV0aG9kRXJyb3I6ICIrci5hCnM9ci5jCmlmKHM9 -PW51bGwpcmV0dXJuIHErcCsiJyAoIityLmErIikiCnJldHVybiBxK3ArIicgb24gJyIrcysiJyAoIity -LmErIikifX0KQS52Vi5wcm90b3R5cGU9ewoiWyIoYSl7dmFyIHM9dGhpcy5hCnJldHVybiBzLmxlbmd0 -aD09PTA/IkVycm9yIjoiRXJyb3I6ICIrc319CkEudGUucHJvdG90eXBlPXsKIlsiKGEpe3JldHVybiJU -aHJvdyBvZiBudWxsICgnIisodGhpcy5hPT09bnVsbD8ibnVsbCI6InVuZGVmaW5lZCIpKyInIGZyb20g -SmF2YVNjcmlwdCkifSwKJGlSejoxfQpBLmJxLnByb3RvdHlwZT17fQpBLlhPLnByb3RvdHlwZT17CiJb -IihhKXt2YXIgcyxyPXRoaXMuYgppZihyIT1udWxsKXJldHVybiByCnI9dGhpcy5hCnM9ciE9PW51bGwm -JnR5cGVvZiByPT09Im9iamVjdCI/ci5zdGFjazpudWxsCnJldHVybiB0aGlzLmI9cz09bnVsbD8iIjpz -fSwKJGlHejoxfQpBLlRwLnByb3RvdHlwZT17CiJbIihhKXt2YXIgcz10aGlzLmNvbnN0cnVjdG9yLHI9 -cz09bnVsbD9udWxsOnMubmFtZQpyZXR1cm4iQ2xvc3VyZSAnIitBLk5RKHI9PW51bGw/InVua25vd24i -OnIpKyInIn0sCiRpRUg6MSwKZ0t1KCl7cmV0dXJuIHRoaXN9LAokQzoiJDEiLAokUjoxLAokRDpudWxs -fQpBLkF5LnByb3RvdHlwZT17JEM6IiQwIiwkUjowfQpBLkUxLnByb3RvdHlwZT17JEM6IiQyIiwkUjoy -fQpBLmxjLnByb3RvdHlwZT17fQpBLnp4LnByb3RvdHlwZT17CiJbIihhKXt2YXIgcz10aGlzLiRzdGF0 -aWNfbmFtZQppZihzPT1udWxsKXJldHVybiJDbG9zdXJlIG9mIHVua25vd24gc3RhdGljIG1ldGhvZCIK -cmV0dXJuIkNsb3N1cmUgJyIrQS5OUShzKSsiJyJ9fQpBLnJULnByb3RvdHlwZT17CkROKGEsYil7aWYo -Yj09bnVsbClyZXR1cm4hMQppZih0aGlzPT09YilyZXR1cm4hMAppZighKGIgaW5zdGFuY2VvZiBBLnJU -KSlyZXR1cm4hMQpyZXR1cm4gdGhpcy4kX3RhcmdldD09PWIuJF90YXJnZXQmJnRoaXMuYT09PWIuYX0s -CmdtKGEpe3JldHVybihBLkNVKHRoaXMuYSleQS5lUSh0aGlzLiRfdGFyZ2V0KSk+Pj4wfSwKIlsiKGEp -e3JldHVybiJDbG9zdXJlICciK3RoaXMuJF9uYW1lKyInIG9mICIrKCJJbnN0YW5jZSBvZiAnIitBLmxo -KHRoaXMuYSkrIiciKX19CkEuRXEucHJvdG90eXBlPXsKIlsiKGEpe3JldHVybiJSdW50aW1lRXJyb3I6 -ICIrdGhpcy5hfX0KQS5rWS5wcm90b3R5cGU9ewoiWyIoYSl7cmV0dXJuIkFzc2VydGlvbiBmYWlsZWQ6 -ICIrQS5obCh0aGlzLmEpfX0KQS5rci5wcm90b3R5cGU9e30KQS5ONS5wcm90b3R5cGU9ewpnayhhKXty -ZXR1cm4gdGhpcy5hfSwKZ2wwKGEpe3JldHVybiB0aGlzLmE9PT0wfSwKZ3ZjKCl7cmV0dXJuIG5ldyBB -Lmk1KHRoaXMsQS5MaCh0aGlzKS5DKCJpNTwxPiIpKX0sCng0KGEpe3ZhciBzPXRoaXMuYgppZihzPT1u -dWxsKXJldHVybiExCnJldHVybiBzW2FdIT1udWxsfSwKcShhLGIpe3ZhciBzLHIscSxwLG89bnVsbApp -Zih0eXBlb2YgYj09InN0cmluZyIpe3M9dGhpcy5iCmlmKHM9PW51bGwpcmV0dXJuIG8Kcj1zW2JdCnE9 -cj09bnVsbD9vOnIuYgpyZXR1cm4gcX1lbHNlIGlmKHR5cGVvZiBiPT0ibnVtYmVyIiYmKGImMHgzZmZm -ZmZmZik9PT1iKXtwPXRoaXMuYwppZihwPT1udWxsKXJldHVybiBvCnI9cFtiXQpxPXI9PW51bGw/bzpy -LmIKcmV0dXJuIHF9ZWxzZSByZXR1cm4gdGhpcy5hYShiKX0sCmFhKGEpe3ZhciBzLHIscT10aGlzLmQK -aWYocT09bnVsbClyZXR1cm4gbnVsbApzPXFbdGhpcy54aShhKV0Kcj10aGlzLkZoKHMsYSkKaWYocjww -KXJldHVybiBudWxsCnJldHVybiBzW3JdLmJ9LApZNShhLGIsYyl7dmFyIHMscixxPXRoaXMscD1BLkxo -KHEpCnAuYy5hKGIpCnAuelsxXS5hKGMpCmlmKHR5cGVvZiBiPT0ic3RyaW5nIil7cz1xLmIKcS5FSChz -PT1udWxsP3EuYj1xLnpLKCk6cyxiLGMpfWVsc2UgaWYodHlwZW9mIGI9PSJudW1iZXIiJiYoYiYweDNm -ZmZmZmZmKT09PWIpe3I9cS5jCnEuRUgocj09bnVsbD9xLmM9cS56SygpOnIsYixjKX1lbHNlIHEueHco -YixjKX0sCnh3KGEsYil7dmFyIHMscixxLHAsbz10aGlzLG49QS5MaChvKQpuLmMuYShhKQpuLnpbMV0u -YShiKQpzPW8uZAppZihzPT1udWxsKXM9by5kPW8ueksoKQpyPW8ueGkoYSkKcT1zW3JdCmlmKHE9PW51 -bGwpc1tyXT1bby5IbihhLGIpXQplbHNle3A9by5GaChxLGEpCmlmKHA+PTApcVtwXS5iPWIKZWxzZSBx -LnB1c2goby5IbihhLGIpKX19LApLKGEsYil7dmFyIHMscixxPXRoaXMKQS5MaChxKS5DKCJ+KDEsMiki -KS5hKGIpCnM9cS5lCnI9cS5yCmZvcig7cyE9bnVsbDspe2IuJDIocy5hLHMuYikKaWYociE9PXEucil0 -aHJvdyBBLmIoQS5hNChxKSkKcz1zLmN9fSwKRUgoYSxiLGMpe3ZhciBzLHI9QS5MaCh0aGlzKQpyLmMu -YShiKQpyLnpbMV0uYShjKQpzPWFbYl0KaWYocz09bnVsbClhW2JdPXRoaXMuSG4oYixjKQplbHNlIHMu -Yj1jfSwKa3MoKXt0aGlzLnI9dGhpcy5yKzEmMTA3Mzc0MTgyM30sCkhuKGEsYil7dmFyIHM9dGhpcyxy -PUEuTGgocykscT1uZXcgQS52aChyLmMuYShhKSxyLnpbMV0uYShiKSkKaWYocy5lPT1udWxsKXMuZT1z -LmY9cQplbHNle3I9cy5mCnIudG9TdHJpbmcKcS5kPXIKcy5mPXIuYz1xfSsrcy5hCnMua3MoKQpyZXR1 -cm4gcX0sCnhpKGEpe3JldHVybiBKLlUzKGEpJjB4M2ZmZmZmZmZ9LApGaChhLGIpe3ZhciBzLHIKaWYo -YT09bnVsbClyZXR1cm4tMQpzPWEubGVuZ3RoCmZvcihyPTA7cjxzOysrcilpZihKLlJNKGFbcl0uYSxi -KSlyZXR1cm4gcgpyZXR1cm4tMX0sCiJbIihhKXtyZXR1cm4gQS5uTyh0aGlzKX0sCnpLKCl7dmFyIHM9 -T2JqZWN0LmNyZWF0ZShudWxsKQpzWyI8bm9uLWlkZW50aWZpZXIta2V5PiJdPXMKZGVsZXRlIHNbIjxu -b24taWRlbnRpZmllci1rZXk+Il0KcmV0dXJuIHN9LAokaUZvOjF9CkEudmgucHJvdG90eXBlPXt9CkEu -aTUucHJvdG90eXBlPXsKZ2soYSl7cmV0dXJuIHRoaXMuYS5hfSwKZ2wwKGEpe3JldHVybiB0aGlzLmEu -YT09PTB9LApnQShhKXt2YXIgcz10aGlzLmEscj1uZXcgQS5ONihzLHMucix0aGlzLiR0aS5DKCJONjwx -PiIpKQpyLmM9cy5lCnJldHVybiByfSwKdGcoYSxiKXtyZXR1cm4gdGhpcy5hLng0KGIpfX0KQS5ONi5w -cm90b3R5cGU9ewpnbCgpe3JldHVybiB0aGlzLmR9LApHKCl7dmFyIHMscj10aGlzLHE9ci5hCmlmKHIu -YiE9PXEucil0aHJvdyBBLmIoQS5hNChxKSkKcz1yLmMKaWYocz09bnVsbCl7ci5zcVkobnVsbCkKcmV0 -dXJuITF9ZWxzZXtyLnNxWShzLmEpCnIuYz1zLmMKcmV0dXJuITB9fSwKc3FZKGEpe3RoaXMuZD10aGlz -LiR0aS5DKCIxPyIpLmEoYSl9LAokaUFuOjF9CkEuZEMucHJvdG90eXBlPXsKJDEoYSl7cmV0dXJuIHRo -aXMuYShhKX0sCiRTOjN9CkEud04ucHJvdG90eXBlPXsKJDIoYSxiKXtyZXR1cm4gdGhpcy5hKGEsYil9 -LAokUzo1MX0KQS5WWC5wcm90b3R5cGU9ewokMShhKXtyZXR1cm4gdGhpcy5hKEEubihhKSl9LAokUzo0 -MX0KQS5WUi5wcm90b3R5cGU9ewoiWyIoYSl7cmV0dXJuIlJlZ0V4cC8iK3RoaXMuYSsiLyIrdGhpcy5i -LmZsYWdzfSwKZ0hjKCl7dmFyIHM9dGhpcyxyPXMuYwppZihyIT1udWxsKXJldHVybiByCnI9cy5iCnJl -dHVybiBzLmM9QS52NChzLmEsci5tdWx0aWxpbmUsIXIuaWdub3JlQ2FzZSxyLnVuaWNvZGUsci5kb3RB -bGwsITApfSwKZGQoYSxiKXtyZXR1cm4gbmV3IEEuS1codGhpcyxiLDApfSwKVVooYSxiKXt2YXIgcyxy -PXRoaXMuZ0hjKCkKaWYocj09bnVsbClyPXQuSy5hKHIpCnIubGFzdEluZGV4PWIKcz1yLmV4ZWMoYSkK -aWYocz09bnVsbClyZXR1cm4gbnVsbApyZXR1cm4gbmV3IEEuRUsocyl9LAokaXZYOjEsCiRpd0w6MX0K -QS5FSy5wcm90b3R5cGU9ewpxKGEsYil7dmFyIHMKQS5JWihiKQpzPXRoaXMuYgppZighKGI8cy5sZW5n -dGgpKXJldHVybiBBLk9IKHMsYikKcmV0dXJuIHNbYl19LAokaU9kOjEsCiRpaWI6MX0KQS5LVy5wcm90 -b3R5cGU9ewpnQShhKXtyZXR1cm4gbmV3IEEuUGIodGhpcy5hLHRoaXMuYix0aGlzLmMpfX0KQS5QYi5w -cm90b3R5cGU9ewpnbCgpe3ZhciBzPXRoaXMuZApyZXR1cm4gcz09bnVsbD90LmN6LmEocyk6c30sCkco -KXt2YXIgcyxyLHEscCxvLG4sbT10aGlzLGw9bS5iCmlmKGw9PW51bGwpcmV0dXJuITEKcz1tLmMKcj1s -Lmxlbmd0aAppZihzPD1yKXtxPW0uYQpwPXEuVVoobCxzKQppZihwIT1udWxsKXttLmQ9cApzPXAuYgpv -PXMuaW5kZXgKbj1vK3NbMF0ubGVuZ3RoCmlmKG89PT1uKXtpZihxLmIudW5pY29kZSl7cz1tLmMKcT1z -KzEKaWYocTxyKXtzPUIueEIuTyhsLHMpCmlmKHM+PTU1Mjk2JiZzPD01NjMxOSl7cz1CLnhCLk8obCxx -KQpzPXM+PTU2MzIwJiZzPD01NzM0M31lbHNlIHM9ITF9ZWxzZSBzPSExfWVsc2Ugcz0hMQpuPShzP24r -MTpuKSsxfW0uYz1uCnJldHVybiEwfX1tLmI9bS5kPW51bGwKcmV0dXJuITF9LAokaUFuOjF9CkEudFEu -cHJvdG90eXBlPXsKcShhLGIpe0EuSVooYikKaWYoYiE9PTApQS52KEEuTzcoYixudWxsKSkKcmV0dXJu -IHRoaXMuY30sCiRpT2Q6MX0KQS51bi5wcm90b3R5cGU9ewpnQShhKXtyZXR1cm4gbmV3IEEuU2QodGhp -cy5hLHRoaXMuYix0aGlzLmMpfX0KQS5TZC5wcm90b3R5cGU9ewpHKCl7dmFyIHMscixxPXRoaXMscD1x -LmMsbz1xLmIsbj1vLmxlbmd0aCxtPXEuYSxsPW0ubGVuZ3RoCmlmKHArbj5sKXtxLmQ9bnVsbApyZXR1 -cm4hMX1zPW0uaW5kZXhPZihvLHApCmlmKHM8MCl7cS5jPWwrMQpxLmQ9bnVsbApyZXR1cm4hMX1yPXMr -bgpxLmQ9bmV3IEEudFEocyxvKQpxLmM9cj09PXEuYz9yKzE6cgpyZXR1cm4hMH0sCmdsKCl7dmFyIHM9 -dGhpcy5kCnMudG9TdHJpbmcKcmV0dXJuIHN9LAokaUFuOjF9CkEuRVQucHJvdG90eXBlPXskaUVUOjEs -JGlBUzoxfQpBLkxaLnByb3RvdHlwZT17CmdrKGEpe3JldHVybiBhLmxlbmd0aH0sCiRpWGo6MX0KQS5E -Zy5wcm90b3R5cGU9ewpxKGEsYil7QS5JWihiKQpBLm9kKGIsYSxhLmxlbmd0aCkKcmV0dXJuIGFbYl19 -LApZNShhLGIsYyl7QS5yVihjKQpBLm9kKGIsYSxhLmxlbmd0aCkKYVtiXT1jfSwKJGliUToxLAokaWNY -OjEsCiRpek06MX0KQS5QZy5wcm90b3R5cGU9ewpZNShhLGIsYyl7QS5JWihjKQpBLm9kKGIsYSxhLmxl -bmd0aCkKYVtiXT1jfSwKJGliUToxLAokaWNYOjEsCiRpek06MX0KQS54ai5wcm90b3R5cGU9ewpxKGEs -Yil7QS5JWihiKQpBLm9kKGIsYSxhLmxlbmd0aCkKcmV0dXJuIGFbYl19fQpBLmRFLnByb3RvdHlwZT17 -CnEoYSxiKXtBLklaKGIpCkEub2QoYixhLGEubGVuZ3RoKQpyZXR1cm4gYVtiXX19CkEuWkEucHJvdG90 -eXBlPXsKcShhLGIpe0EuSVooYikKQS5vZChiLGEsYS5sZW5ndGgpCnJldHVybiBhW2JdfX0KQS5kVC5w -cm90b3R5cGU9ewpxKGEsYil7QS5JWihiKQpBLm9kKGIsYSxhLmxlbmd0aCkKcmV0dXJuIGFbYl19fQpB -LlBxLnByb3RvdHlwZT17CnEoYSxiKXtBLklaKGIpCkEub2QoYixhLGEubGVuZ3RoKQpyZXR1cm4gYVti -XX19CkEuZUUucHJvdG90eXBlPXsKZ2soYSl7cmV0dXJuIGEubGVuZ3RofSwKcShhLGIpe0EuSVooYikK -QS5vZChiLGEsYS5sZW5ndGgpCnJldHVybiBhW2JdfX0KQS5WNi5wcm90b3R5cGU9ewpnayhhKXtyZXR1 -cm4gYS5sZW5ndGh9LApxKGEsYil7QS5JWihiKQpBLm9kKGIsYSxhLmxlbmd0aCkKcmV0dXJuIGFbYl19 -LAokaW42OjF9CkEuUkcucHJvdG90eXBlPXt9CkEuVlAucHJvdG90eXBlPXt9CkEuV0IucHJvdG90eXBl -PXt9CkEuWkcucHJvdG90eXBlPXt9CkEuSmMucHJvdG90eXBlPXsKQyhhKXtyZXR1cm4gQS5jRSh2LnR5 -cGVVbml2ZXJzZSx0aGlzLGEpfSwKS3EoYSl7cmV0dXJuIEEudjUodi50eXBlVW5pdmVyc2UsdGhpcyxh -KX19CkEuRy5wcm90b3R5cGU9e30KQS5sWS5wcm90b3R5cGU9ewoiWyIoYSl7cmV0dXJuIEEuZG0odGhp -cy5hLG51bGwpfX0KQS5rUy5wcm90b3R5cGU9ewoiWyIoYSl7cmV0dXJuIHRoaXMuYX19CkEuaU0ucHJv -dG90eXBlPXskaUV6OjF9CkEudGgucHJvdG90eXBlPXsKJDEoYSl7dmFyIHM9dGhpcy5hLHI9cy5hCnMu -YT1udWxsCnIuJDAoKX0sCiRTOjd9CkEuaGEucHJvdG90eXBlPXsKJDEoYSl7dmFyIHMscgp0aGlzLmEu -YT10Lk0uYShhKQpzPXRoaXMuYgpyPXRoaXMuYwpzLmZpcnN0Q2hpbGQ/cy5yZW1vdmVDaGlsZChyKTpz -LmFwcGVuZENoaWxkKHIpfSwKJFM6NDB9CkEuVnMucHJvdG90eXBlPXsKJDAoKXt0aGlzLmEuJDAoKX0s -CiRTOjh9CkEuRnQucHJvdG90eXBlPXsKJDAoKXt0aGlzLmEuJDAoKX0sCiRTOjh9CkEuVzMucHJvdG90 -eXBlPXsKQ1koYSxiKXtpZihzZWxmLnNldFRpbWVvdXQhPW51bGwpc2VsZi5zZXRUaW1lb3V0KEEudFIo -bmV3IEEueUgodGhpcyxiKSwwKSxhKQplbHNlIHRocm93IEEuYihBLkw0KCJgc2V0VGltZW91dCgpYCBu -b3QgZm91bmQuIikpfX0KQS55SC5wcm90b3R5cGU9ewokMCgpe3RoaXMuYi4kMCgpfSwKJFM6MH0KQS5p -aC5wcm90b3R5cGU9ewphTShhLGIpe3ZhciBzLHI9dGhpcyxxPXIuJHRpCnEuQygiMS8/IikuYShiKQpp -ZihiPT1udWxsKXEuYy5hKGIpCmlmKCFyLmIpci5hLlhmKGIpCmVsc2V7cz1yLmEKaWYocS5DKCJiODwx -PiIpLmIoYikpcy5jVShiKQplbHNlIHMuWDIocS5jLmEoYikpfX0sCncwKGEsYil7dmFyIHM9dGhpcy5h -CmlmKHRoaXMuYilzLlpMKGEsYikKZWxzZSBzLk5rKGEsYil9fQpBLldNLnByb3RvdHlwZT17CiQxKGEp -e3JldHVybiB0aGlzLmEuJDIoMCxhKX0sCiRTOjIxfQpBLlNYLnByb3RvdHlwZT17CiQyKGEsYil7dGhp -cy5hLiQyKDEsbmV3IEEuYnEoYSx0LmwuYShiKSkpfSwKJFM6MjR9CkEuR3MucHJvdG90eXBlPXsKJDIo -YSxiKXt0aGlzLmEoQS5JWihhKSxiKX0sCiRTOjI2fQpBLkZ5LnByb3RvdHlwZT17CiJbIihhKXtyZXR1 -cm4iSXRlcmF0aW9uTWFya2VyKCIrdGhpcy5iKyIsICIrQS5Faih0aGlzLmEpKyIpIn19CkEuR1YucHJv -dG90eXBlPXsKZ2woKXt2YXIgcyxyPXRoaXMuYwppZihyPT1udWxsKXtzPXRoaXMuYgpyZXR1cm4gcz09 -bnVsbD90aGlzLiR0aS5jLmEocyk6c31yZXR1cm4gci5nbCgpfSwKRygpe3ZhciBzLHIscSxwLG8sbixt -PXRoaXMKZm9yKHM9bS4kdGkuQygiQW48MT4iKTshMDspe3I9bS5jCmlmKHIhPW51bGwpaWYoci5HKCkp -cmV0dXJuITAKZWxzZSBtLnNYOShudWxsKQpxPWZ1bmN0aW9uKGEsYixjKXt2YXIgbCxrPWIKd2hpbGUo -dHJ1ZSl0cnl7cmV0dXJuIGEoayxsKX1jYXRjaChqKXtsPWoKaz1jfX0obS5hLDAsMSkKaWYocSBpbnN0 -YW5jZW9mIEEuRnkpe3A9cS5iCmlmKHA9PT0yKXtvPW0uZAppZihvPT1udWxsfHxvLmxlbmd0aD09PTAp -e20uc0VDKG51bGwpCnJldHVybiExfWlmKDA+PW8ubGVuZ3RoKXJldHVybiBBLk9IKG8sLTEpCm0uYT1v -LnBvcCgpCmNvbnRpbnVlfWVsc2V7cj1xLmEKaWYocD09PTMpdGhyb3cgcgplbHNle249cy5hKEouSVQo -cikpCmlmKG4gaW5zdGFuY2VvZiBBLkdWKXtyPW0uZAppZihyPT1udWxsKXI9bS5kPVtdCkIuTm0uaShy -LG0uYSkKbS5hPW4uYQpjb250aW51ZX1lbHNle20uc1g5KG4pCmNvbnRpbnVlfX19fWVsc2V7bS5zRUMo -cSkKcmV0dXJuITB9fXJldHVybiExfSwKc0VDKGEpe3RoaXMuYj10aGlzLiR0aS5DKCIxPyIpLmEoYSl9 -LApzWDkoYSl7dGhpcy5jPXRoaXMuJHRpLkMoIkFuPDE+PyIpLmEoYSl9LAokaUFuOjF9CkEucTQucHJv -dG90eXBlPXsKZ0EoYSl7cmV0dXJuIG5ldyBBLkdWKHRoaXMuYSgpLHRoaXMuJHRpLkMoIkdWPDE+Iikp -fX0KQS5Ddy5wcm90b3R5cGU9ewoiWyIoYSl7cmV0dXJuIEEuRWoodGhpcy5hKX0sCiRpWFM6MSwKZ0lJ -KCl7cmV0dXJuIHRoaXMuYn19CkEuUGYucHJvdG90eXBlPXsKdzAoYSxiKXt2YXIgcwpBLmNiKGEsImVy -cm9yIix0LkspCnM9dGhpcy5hCmlmKChzLmEmMzApIT09MCl0aHJvdyBBLmIoQS5QVigiRnV0dXJlIGFs -cmVhZHkgY29tcGxldGVkIikpCmlmKGI9PW51bGwpYj1BLnYwKGEpCnMuTmsoYSxiKX0sCnBtKGEpe3Jl -dHVybiB0aGlzLncwKGEsbnVsbCl9fQpBLlpmLnByb3RvdHlwZT17CmFNKGEsYil7dmFyIHMscj10aGlz -LiR0aQpyLkMoIjEvPyIpLmEoYikKcz10aGlzLmEKaWYoKHMuYSYzMCkhPT0wKXRocm93IEEuYihBLlBW -KCJGdXR1cmUgYWxyZWFkeSBjb21wbGV0ZWQiKSkKcy5YZihyLkMoIjEvIikuYShiKSl9fQpBLkZlLnBy -b3RvdHlwZT17CkhSKGEpe2lmKCh0aGlzLmMmMTUpIT09NilyZXR1cm4hMApyZXR1cm4gdGhpcy5iLmIu -YnYodC5hbC5hKHRoaXMuZCksYS5hLHQueSx0LkspfSwKS3coYSl7dmFyIHMscj10aGlzLHE9ci5lLHA9 -bnVsbCxvPXQueixuPXQuSyxtPWEuYSxsPXIuYi5iCmlmKHQubS5iKHEpKXA9bC5ycChxLG0sYS5iLG8s -bix0LmwpCmVsc2UgcD1sLmJ2KHQudi5hKHEpLG0sbyxuKQp0cnl7bz1yLiR0aS5DKCIyLyIpLmEocCkK -cmV0dXJuIG99Y2F0Y2gocyl7aWYodC5lSy5iKEEuUnUocykpKXtpZigoci5jJjEpIT09MCl0aHJvdyBB -LmIoQS54WSgiVGhlIGVycm9yIGhhbmRsZXIgb2YgRnV0dXJlLnRoZW4gbXVzdCByZXR1cm4gYSB2YWx1 -ZSBvZiB0aGUgcmV0dXJuZWQgZnV0dXJlJ3MgdHlwZSIsIm9uRXJyb3IiKSkKdGhyb3cgQS5iKEEueFko -IlRoZSBlcnJvciBoYW5kbGVyIG9mIEZ1dHVyZS5jYXRjaEVycm9yIG11c3QgcmV0dXJuIGEgdmFsdWUg -b2YgdGhlIGZ1dHVyZSdzIHR5cGUiLCJvbkVycm9yIikpfWVsc2UgdGhyb3cgc319fQpBLnZzLnByb3Rv -dHlwZT17ClNxKGEsYixjKXt2YXIgcyxyLHEscD10aGlzLiR0aQpwLktxKGMpLkMoIjEvKDIpIikuYShh -KQpzPSQuWDMKaWYocz09PUIuTlUpe2lmKGIhPW51bGwmJiF0Lm0uYihiKSYmIXQudi5iKGIpKXRocm93 -IEEuYihBLkwzKGIsIm9uRXJyb3IiLHUuYykpfWVsc2V7Yy5DKCJAPDAvPiIpLktxKHAuYykuQygiMSgy -KSIpLmEoYSkKaWYoYiE9bnVsbCliPUEuVkgoYixzKX1yPW5ldyBBLnZzKHMsYy5DKCJ2czwwPiIpKQpx -PWI9PW51bGw/MTozCnRoaXMueGYobmV3IEEuRmUocixxLGEsYixwLkMoIkA8MT4iKS5LcShjKS5DKCJG -ZTwxLDI+IikpKQpyZXR1cm4gcn0sClc3KGEsYil7cmV0dXJuIHRoaXMuU3EoYSxudWxsLGIpfSwKUWQo -YSxiLGMpe3ZhciBzLHI9dGhpcy4kdGkKci5LcShjKS5DKCIxLygyKSIpLmEoYSkKcz1uZXcgQS52cygk -LlgzLGMuQygidnM8MD4iKSkKdGhpcy54ZihuZXcgQS5GZShzLDMsYSxiLHIuQygiQDwxPiIpLktxKGMp -LkMoIkZlPDEsMj4iKSkpCnJldHVybiBzfSwKUDkoYSl7dGhpcy5hPXRoaXMuYSYxfDE2CnRoaXMuYz1h -fSwKdWcoYSl7dGhpcy5hPWEuYSYzMHx0aGlzLmEmMQp0aGlzLmM9YS5jfSwKeGYoYSl7dmFyIHMscj10 -aGlzLHE9ci5hCmlmKHE8PTMpe2EuYT10LmUuYShyLmMpCnIuYz1hfWVsc2V7aWYoKHEmNCkhPT0wKXtz -PXQuYy5hKHIuYykKaWYoKHMuYSYyNCk9PT0wKXtzLnhmKGEpCnJldHVybn1yLnVnKHMpfUEuVGsobnVs -bCxudWxsLHIuYix0Lk0uYShuZXcgQS5kYShyLGEpKSl9fSwKalEoYSl7dmFyIHMscixxLHAsbyxuLG09 -dGhpcyxsPXt9CmwuYT1hCmlmKGE9PW51bGwpcmV0dXJuCnM9bS5hCmlmKHM8PTMpe3I9dC5lLmEobS5j -KQptLmM9YQppZihyIT1udWxsKXtxPWEuYQpmb3IocD1hO3EhPW51bGw7cD1xLHE9bylvPXEuYQpwLmE9 -cn19ZWxzZXtpZigocyY0KSE9PTApe249dC5jLmEobS5jKQppZigobi5hJjI0KT09PTApe24ualEoYSkK -cmV0dXJufW0udWcobil9bC5hPW0uTjgoYSkKQS5UayhudWxsLG51bGwsbS5iLHQuTS5hKG5ldyBBLm9R -KGwsbSkpKX19LAphaCgpe3ZhciBzPXQuZS5hKHRoaXMuYykKdGhpcy5jPW51bGwKcmV0dXJuIHRoaXMu -Tjgocyl9LApOOChhKXt2YXIgcyxyLHEKZm9yKHM9YSxyPW51bGw7cyE9bnVsbDtyPXMscz1xKXtxPXMu -YQpzLmE9cn1yZXR1cm4gcn0sCmVjKGEpe3ZhciBzLHIscSxwPXRoaXMKcC5hXj0yCnRyeXthLlNxKG5l -dyBBLnBWKHApLG5ldyBBLlU3KHApLHQuUCl9Y2F0Y2gocSl7cz1BLlJ1KHEpCnI9QS50cyhxKQpBLnJi -KG5ldyBBLnZyKHAscyxyKSl9fSwKWDIoYSl7dmFyIHMscj10aGlzCnIuJHRpLmMuYShhKQpzPXIuYWgo -KQpyLmE9OApyLmM9YQpBLkhaKHIscyl9LApaTChhLGIpe3ZhciBzCnQubC5hKGIpCnM9dGhpcy5haCgp -CnRoaXMuUDkoQS5UbChhLGIpKQpBLkhaKHRoaXMscyl9LApYZihhKXt2YXIgcz10aGlzLiR0aQpzLkMo -IjEvIikuYShhKQppZihzLkMoImI4PDE+IikuYihhKSl7dGhpcy5jVShhKQpyZXR1cm59dGhpcy53VShz -LmMuYShhKSl9LAp3VShhKXt2YXIgcz10aGlzCnMuJHRpLmMuYShhKQpzLmFePTIKQS5UayhudWxsLG51 -bGwscy5iLHQuTS5hKG5ldyBBLnJ0KHMsYSkpKX0sCmNVKGEpe3ZhciBzPXRoaXMscj1zLiR0aQpyLkMo -ImI4PDE+IikuYShhKQppZihyLmIoYSkpe2lmKChhLmEmMTYpIT09MCl7cy5hXj0yCkEuVGsobnVsbCxu -dWxsLHMuYix0Lk0uYShuZXcgQS5LRihzLGEpKSl9ZWxzZSBBLkE5KGEscykKcmV0dXJufXMuZWMoYSl9 -LApOayhhLGIpe3RoaXMuYV49MgpBLlRrKG51bGwsbnVsbCx0aGlzLmIsdC5NLmEobmV3IEEuWkwodGhp -cyxhLGIpKSl9LAokaWI4OjF9CkEuZGEucHJvdG90eXBlPXsKJDAoKXtBLkhaKHRoaXMuYSx0aGlzLmIp -fSwKJFM6MH0KQS5vUS5wcm90b3R5cGU9ewokMCgpe0EuSFoodGhpcy5iLHRoaXMuYS5hKX0sCiRTOjB9 -CkEucFYucHJvdG90eXBlPXsKJDEoYSl7dmFyIHMscixxLHA9dGhpcy5hCnAuYV49Mgp0cnl7cC5YMihw -LiR0aS5jLmEoYSkpfWNhdGNoKHEpe3M9QS5SdShxKQpyPUEudHMocSkKcC5aTChzLHIpfX0sCiRTOjd9 -CkEuVTcucHJvdG90eXBlPXsKJDIoYSxiKXt0aGlzLmEuWkwodC5LLmEoYSksdC5sLmEoYikpfSwKJFM6 -Mjl9CkEudnIucHJvdG90eXBlPXsKJDAoKXt0aGlzLmEuWkwodGhpcy5iLHRoaXMuYyl9LAokUzowfQpB -LnJ0LnByb3RvdHlwZT17CiQwKCl7dGhpcy5hLlgyKHRoaXMuYil9LAokUzowfQpBLktGLnByb3RvdHlw -ZT17CiQwKCl7QS5BOSh0aGlzLmIsdGhpcy5hKX0sCiRTOjB9CkEuWkwucHJvdG90eXBlPXsKJDAoKXt0 -aGlzLmEuWkwodGhpcy5iLHRoaXMuYyl9LAokUzowfQpBLlJULnByb3RvdHlwZT17CiQwKCl7dmFyIHMs -cixxLHAsbyxuLG09dGhpcyxsPW51bGwKdHJ5e3E9bS5hLmEKbD1xLmIuYi56eih0LmZPLmEocS5kKSx0 -LnopfWNhdGNoKHApe3M9QS5SdShwKQpyPUEudHMocCkKcT1tLmMmJnQubi5hKG0uYi5hLmMpLmE9PT1z -Cm89bS5hCmlmKHEpby5jPXQubi5hKG0uYi5hLmMpCmVsc2Ugby5jPUEuVGwocyxyKQpvLmI9ITAKcmV0 -dXJufWlmKGwgaW5zdGFuY2VvZiBBLnZzJiYobC5hJjI0KSE9PTApe2lmKChsLmEmMTYpIT09MCl7cT1t -LmEKcS5jPXQubi5hKGwuYykKcS5iPSEwfXJldHVybn1pZih0LmkuYihsKSl7bj1tLmIuYQpxPW0uYQpx -LmM9bC5XNyhuZXcgQS5qWihuKSx0LnopCnEuYj0hMX19LAokUzowfQpBLmpaLnByb3RvdHlwZT17CiQx -KGEpe3JldHVybiB0aGlzLmF9LAokUzozNH0KQS5ycS5wcm90b3R5cGU9ewokMCgpe3ZhciBzLHIscSxw -LG8sbixtLGwKdHJ5e3E9dGhpcy5hCnA9cS5hCm89cC4kdGkKbj1vLmMKbT1uLmEodGhpcy5iKQpxLmM9 -cC5iLmIuYnYoby5DKCIyLygxKSIpLmEocC5kKSxtLG8uQygiMi8iKSxuKX1jYXRjaChsKXtzPUEuUnUo -bCkKcj1BLnRzKGwpCnE9dGhpcy5hCnEuYz1BLlRsKHMscikKcS5iPSEwfX0sCiRTOjB9CkEuUlcucHJv -dG90eXBlPXsKJDAoKXt2YXIgcyxyLHEscCxvLG4sbT10aGlzCnRyeXtzPXQubi5hKG0uYS5hLmMpCnA9 -bS5iCmlmKHAuYS5IUihzKSYmcC5hLmUhPW51bGwpe3AuYz1wLmEuS3cocykKcC5iPSExfX1jYXRjaChv -KXtyPUEuUnUobykKcT1BLnRzKG8pCnA9dC5uLmEobS5hLmEuYykKbj1tLmIKaWYocC5hPT09ciluLmM9 -cAplbHNlIG4uYz1BLlRsKHIscSkKbi5iPSEwfX0sCiRTOjB9CkEuT00ucHJvdG90eXBlPXt9CkEucWgu -cHJvdG90eXBlPXsKZ2soYSl7dmFyIHMscixxPXRoaXMscD17fSxvPW5ldyBBLnZzKCQuWDMsdC5mSikK -cC5hPTAKcz1BLkxoKHEpCnI9cy5DKCJ+KDEpPyIpLmEobmV3IEEuQjUocCxxKSkKdC5aLmEobmV3IEEu -dU8ocCxvKSkKQS5KRShxLmEscS5iLHIsITEscy5jKQpyZXR1cm4gb319CkEuQjUucHJvdG90eXBlPXsK -JDEoYSl7QS5MaCh0aGlzLmIpLmMuYShhKTsrK3RoaXMuYS5hfSwKJFMoKXtyZXR1cm4gQS5MaCh0aGlz -LmIpLkMoIn4oMSkiKX19CkEudU8ucHJvdG90eXBlPXsKJDAoKXt2YXIgcz10aGlzLmIscj1zLiR0aSxx -PXIuQygiMS8iKS5hKHRoaXMuYS5hKSxwPXMuYWgoKQpyLmMuYShxKQpzLmE9OApzLmM9cQpBLkhaKHMs -cCl9LAokUzowfQpBLk1PLnByb3RvdHlwZT17fQpBLmtULnByb3RvdHlwZT17fQpBLnhJLnByb3RvdHlw -ZT17fQpBLm0wLnByb3RvdHlwZT17JGlRbToxfQpBLkV2LnByb3RvdHlwZT17CiQwKCl7dmFyIHM9dGhp -cy5hLHI9dGhpcy5iCkEuY2IocywiZXJyb3IiLHQuSykKQS5jYihyLCJzdGFja1RyYWNlIix0LmwpCkEu -TzEocyxyKX0sCiRTOjB9CkEuSmkucHJvdG90eXBlPXsKYkgoYSl7dmFyIHMscixxCnQuTS5hKGEpCnRy -eXtpZihCLk5VPT09JC5YMyl7YS4kMCgpCnJldHVybn1BLlQ4KG51bGwsbnVsbCx0aGlzLGEsdC5IKX1j -YXRjaChxKXtzPUEuUnUocSkKcj1BLnRzKHEpCkEuU2kodC5LLmEocyksdC5sLmEocikpfX0sCkRsKGEs -YixjKXt2YXIgcyxyLHEKYy5DKCJ+KDApIikuYShhKQpjLmEoYikKdHJ5e2lmKEIuTlU9PT0kLlgzKXth -LiQxKGIpCnJldHVybn1BLnl2KG51bGwsbnVsbCx0aGlzLGEsYix0LkgsYyl9Y2F0Y2gocSl7cz1BLlJ1 -KHEpCnI9QS50cyhxKQpBLlNpKHQuSy5hKHMpLHQubC5hKHIpKX19LApHWShhKXtyZXR1cm4gbmV3IEEu -VnAodGhpcyx0Lk0uYShhKSl9LApQeShhLGIpe3JldHVybiBuZXcgQS5PUih0aGlzLGIuQygifigwKSIp -LmEoYSksYil9LApxKGEsYil7cmV0dXJuIG51bGx9LAp6eihhLGIpe2IuQygiMCgpIikuYShhKQppZigk -LlgzPT09Qi5OVSlyZXR1cm4gYS4kMCgpCnJldHVybiBBLlQ4KG51bGwsbnVsbCx0aGlzLGEsYil9LApi -dihhLGIsYyxkKXtjLkMoIkA8MD4iKS5LcShkKS5DKCIxKDIpIikuYShhKQpkLmEoYikKaWYoJC5YMz09 -PUIuTlUpcmV0dXJuIGEuJDEoYikKcmV0dXJuIEEueXYobnVsbCxudWxsLHRoaXMsYSxiLGMsZCl9LApy -cChhLGIsYyxkLGUsZil7ZC5DKCJAPDA+IikuS3EoZSkuS3EoZikuQygiMSgyLDMpIikuYShhKQplLmEo -YikKZi5hKGMpCmlmKCQuWDM9PT1CLk5VKXJldHVybiBhLiQyKGIsYykKcmV0dXJuIEEuUXgobnVsbCxu -dWxsLHRoaXMsYSxiLGMsZCxlLGYpfSwKTGooYSxiLGMsZCl7cmV0dXJuIGIuQygiQDwwPiIpLktxKGMp -LktxKGQpLkMoIjEoMiwzKSIpLmEoYSl9fQpBLlZwLnByb3RvdHlwZT17CiQwKCl7cmV0dXJuIHRoaXMu -YS5iSCh0aGlzLmIpfSwKJFM6MH0KQS5PUi5wcm90b3R5cGU9ewokMShhKXt2YXIgcz10aGlzLmMKcmV0 -dXJuIHRoaXMuYS5EbCh0aGlzLmIscy5hKGEpLHMpfSwKJFMoKXtyZXR1cm4gdGhpcy5jLkMoIn4oMCki -KX19CkEuYjYucHJvdG90eXBlPXsKZ0EoYSl7dmFyIHM9dGhpcyxyPW5ldyBBLmxtKHMscy5yLEEuTGgo -cykuQygibG08MT4iKSkKci5jPXMuZQpyZXR1cm4gcn0sCmdrKGEpe3JldHVybiB0aGlzLmF9LApnbDAo -YSl7cmV0dXJuIHRoaXMuYT09PTB9LApnb3IoYSl7cmV0dXJuIHRoaXMuYSE9PTB9LAp0ZyhhLGIpe3Zh -ciBzLHIKaWYoYiE9PSJfX3Byb3RvX18iKXtzPXRoaXMuYgppZihzPT1udWxsKXJldHVybiExCnJldHVy -biB0LmcuYShzW2JdKSE9bnVsbH1lbHNle3I9dGhpcy5QUihiKQpyZXR1cm4gcn19LApQUihhKXt2YXIg -cz10aGlzLmQKaWYocz09bnVsbClyZXR1cm4hMQpyZXR1cm4gdGhpcy50KHNbdGhpcy5ZKGEpXSxhKT49 -MH0sCmkoYSxiKXt2YXIgcyxyLHE9dGhpcwpBLkxoKHEpLmMuYShiKQppZih0eXBlb2YgYj09InN0cmlu -ZyImJmIhPT0iX19wcm90b19fIil7cz1xLmIKcmV0dXJuIHEuYlEocz09bnVsbD9xLmI9QS5UMigpOnMs -Yil9ZWxzZSBpZih0eXBlb2YgYj09Im51bWJlciImJihiJjEwNzM3NDE4MjMpPT09Yil7cj1xLmMKcmV0 -dXJuIHEuYlEocj09bnVsbD9xLmM9QS5UMigpOnIsYil9ZWxzZSByZXR1cm4gcS5CNyhiKX0sCkI3KGEp -e3ZhciBzLHIscSxwPXRoaXMKQS5MaChwKS5jLmEoYSkKcz1wLmQKaWYocz09bnVsbClzPXAuZD1BLlQy -KCkKcj1wLlkoYSkKcT1zW3JdCmlmKHE9PW51bGwpc1tyXT1bcC55byhhKV0KZWxzZXtpZihwLnQocSxh -KT49MClyZXR1cm4hMQpxLnB1c2gocC55byhhKSl9cmV0dXJuITB9LApSKGEsYil7dmFyIHM9dGhpcwpp -Zih0eXBlb2YgYj09InN0cmluZyImJmIhPT0iX19wcm90b19fIilyZXR1cm4gcy5KKHMuYixiKQplbHNl -IGlmKHR5cGVvZiBiPT0ibnVtYmVyIiYmKGImMTA3Mzc0MTgyMyk9PT1iKXJldHVybiBzLkoocy5jLGIp -CmVsc2UgcmV0dXJuIHMuTShiKX0sCk0oYSl7dmFyIHMscixxLHAsbz10aGlzLG49by5kCmlmKG49PW51 -bGwpcmV0dXJuITEKcz1vLlkoYSkKcj1uW3NdCnE9by50KHIsYSkKaWYocTwwKXJldHVybiExCnA9ci5z -cGxpY2UocSwxKVswXQppZigwPT09ci5sZW5ndGgpZGVsZXRlIG5bc10Kby5UKHApCnJldHVybiEwfSwK -YlEoYSxiKXtBLkxoKHRoaXMpLmMuYShiKQppZih0LmcuYShhW2JdKSE9bnVsbClyZXR1cm4hMQphW2Jd -PXRoaXMueW8oYikKcmV0dXJuITB9LApKKGEsYil7dmFyIHMKaWYoYT09bnVsbClyZXR1cm4hMQpzPXQu -Zy5hKGFbYl0pCmlmKHM9PW51bGwpcmV0dXJuITEKdGhpcy5UKHMpCmRlbGV0ZSBhW2JdCnJldHVybiEw -fSwKUygpe3RoaXMucj10aGlzLnIrMSYxMDczNzQxODIzfSwKeW8oYSl7dmFyIHMscj10aGlzLHE9bmV3 -IEEuYm4oQS5MaChyKS5jLmEoYSkpCmlmKHIuZT09bnVsbClyLmU9ci5mPXEKZWxzZXtzPXIuZgpzLnRv -U3RyaW5nCnEuYz1zCnIuZj1zLmI9cX0rK3IuYQpyLlMoKQpyZXR1cm4gcX0sClQoYSl7dmFyIHM9dGhp -cyxyPWEuYyxxPWEuYgppZihyPT1udWxsKXMuZT1xCmVsc2Ugci5iPXEKaWYocT09bnVsbClzLmY9cgpl -bHNlIHEuYz1yOy0tcy5hCnMuUygpfSwKWShhKXtyZXR1cm4gSi5VMyhhKSYxMDczNzQxODIzfSwKdChh -LGIpe3ZhciBzLHIKaWYoYT09bnVsbClyZXR1cm4tMQpzPWEubGVuZ3RoCmZvcihyPTA7cjxzOysrcilp -ZihKLlJNKGFbcl0uYSxiKSlyZXR1cm4gcgpyZXR1cm4tMX19CkEuYm4ucHJvdG90eXBlPXt9CkEubG0u -cHJvdG90eXBlPXsKZ2woKXt2YXIgcz10aGlzLmQKcmV0dXJuIHM9PW51bGw/dGhpcy4kdGkuYy5hKHMp -OnN9LApHKCl7dmFyIHM9dGhpcyxyPXMuYyxxPXMuYQppZihzLmIhPT1xLnIpdGhyb3cgQS5iKEEuYTQo -cSkpCmVsc2UgaWYocj09bnVsbCl7cy5zaihudWxsKQpyZXR1cm4hMX1lbHNle3Muc2oocy4kdGkuQygi -MT8iKS5hKHIuYSkpCnMuYz1yLmIKcmV0dXJuITB9fSwKc2ooYSl7dGhpcy5kPXRoaXMuJHRpLkMoIjE/ -IikuYShhKX0sCiRpQW46MX0KQS5tVy5wcm90b3R5cGU9e30KQS51eS5wcm90b3R5cGU9eyRpYlE6MSwk -aWNYOjEsJGl6TToxfQpBLmxELnByb3RvdHlwZT17CmdBKGEpe3JldHVybiBuZXcgQS5hNyhhLHRoaXMu -Z2soYSksQS56SyhhKS5DKCJhNzxsRC5FPiIpKX0sCkUoYSxiKXtyZXR1cm4gdGhpcy5xKGEsYil9LApL -KGEsYil7dmFyIHMscgpBLnpLKGEpLkMoIn4obEQuRSkiKS5hKGIpCnM9dGhpcy5nayhhKQpmb3Iocj0w -O3I8czsrK3Ipe2IuJDEodGhpcy5xKGEscikpCmlmKHMhPT10aGlzLmdrKGEpKXRocm93IEEuYihBLmE0 -KGEpKX19LApnbDAoYSl7cmV0dXJuIHRoaXMuZ2soYSk9PT0wfSwKZ29yKGEpe3JldHVybiF0aGlzLmds -MChhKX0sCkUyKGEsYixjKXt2YXIgcz1BLnpLKGEpCnJldHVybiBuZXcgQS5sSihhLHMuS3EoYykuQygi -MShsRC5FKSIpLmEoYikscy5DKCJAPGxELkU+IikuS3EoYykuQygibEo8MSwyPiIpKX0sCmVSKGEsYil7 -cmV0dXJuIEEucUMoYSxiLG51bGwsQS56SyhhKS5DKCJsRC5FIikpfSwKZHIoYSxiKXtyZXR1cm4gbmV3 -IEEualYoYSxBLnpLKGEpLkMoIkA8bEQuRT4iKS5LcShiKS5DKCJqVjwxLDI+IikpfSwKZHUoYSxiLGMs -ZCl7dmFyIHMKQS56SyhhKS5DKCJsRC5FPyIpLmEoZCkKQS5qQihiLGMsdGhpcy5nayhhKSkKZm9yKHM9 -YjtzPGM7KytzKXRoaXMuWTUoYSxzLGQpfSwKIlsiKGEpe3JldHVybiBBLngoYSwiWyIsIl0iKX19CkEu -aWwucHJvdG90eXBlPXt9CkEucmEucHJvdG90eXBlPXsKJDIoYSxiKXt2YXIgcyxyPXRoaXMuYQppZigh -ci5hKXRoaXMuYi5hKz0iLCAiCnIuYT0hMQpyPXRoaXMuYgpzPXIuYSs9QS5FaihhKQpyLmE9cysiOiAi -CnIuYSs9QS5FaihiKX0sCiRTOjl9CkEuWWsucHJvdG90eXBlPXsKSyhhLGIpe3ZhciBzLHIscSxwPUEu -TGgodGhpcykKcC5DKCJ+KFlrLkssWWsuVikiKS5hKGIpCmZvcihzPUouSVQodGhpcy5ndmMoKSkscD1w -LkMoIllrLlYiKTtzLkcoKTspe3I9cy5nbCgpCnE9dGhpcy5xKDAscikKYi4kMihyLHE9PW51bGw/cC5h -KHEpOnEpfX0sCmdQdShhKXtyZXR1cm4gSi5NMSh0aGlzLmd2YygpLG5ldyBBLnlRKHRoaXMpLEEuTGgo -dGhpcykuQygiTjM8WWsuSyxZay5WPiIpKX0sCng0KGEpe3JldHVybiBKLnpsKHRoaXMuZ3ZjKCksYSl9 -LApnayhhKXtyZXR1cm4gSi5IbSh0aGlzLmd2YygpKX0sCmdsMChhKXtyZXR1cm4gSi51VSh0aGlzLmd2 -YygpKX0sCiJbIihhKXtyZXR1cm4gQS5uTyh0aGlzKX0sCiRpWjA6MX0KQS55US5wcm90b3R5cGU9ewok -MShhKXt2YXIgcz10aGlzLmEscj1BLkxoKHMpCnIuQygiWWsuSyIpLmEoYSkKcz1zLnEoMCxhKQppZihz -PT1udWxsKXM9ci5DKCJZay5WIikuYShzKQpyZXR1cm4gbmV3IEEuTjMoYSxzLHIuQygiQDxZay5LPiIp -LktxKHIuQygiWWsuViIpKS5DKCJOMzwxLDI+IikpfSwKJFMoKXtyZXR1cm4gQS5MaCh0aGlzLmEpLkMo -Ik4zPFlrLkssWWsuVj4oWWsuSykiKX19CkEuS1AucHJvdG90eXBlPXsKWTUoYSxiLGMpe3ZhciBzPUEu -TGgodGhpcykKcy5jLmEoYikKcy56WzFdLmEoYykKdGhyb3cgQS5iKEEuTDQoIkNhbm5vdCBtb2RpZnkg -dW5tb2RpZmlhYmxlIG1hcCIpKX19CkEuUG4ucHJvdG90eXBlPXsKcShhLGIpe3JldHVybiB0aGlzLmEu -cSgwLGIpfSwKWTUoYSxiLGMpe3ZhciBzPUEuTGgodGhpcykKdGhpcy5hLlk1KDAscy5jLmEoYikscy56 -WzFdLmEoYykpfSwKeDQoYSl7cmV0dXJuIHRoaXMuYS54NChhKX0sCksoYSxiKXt0aGlzLmEuSygwLEEu -TGgodGhpcykuQygifigxLDIpIikuYShiKSl9LApnbDAoYSl7dmFyIHM9dGhpcy5hCnJldHVybiBzLmds -MChzKX0sCmdrKGEpe3ZhciBzPXRoaXMuYQpyZXR1cm4gcy5nayhzKX0sCiJbIihhKXtyZXR1cm4gdGhp -cy5hWyJbIl0oMCl9LApnUHUoYSl7dmFyIHM9dGhpcy5hCnJldHVybiBzLmdQdShzKX0sCiRpWjA6MX0K -QS5Hai5wcm90b3R5cGU9e30KQS5sZi5wcm90b3R5cGU9ewpnbDAoYSl7cmV0dXJuIHRoaXMuZ2sodGhp -cyk9PT0wfSwKZ29yKGEpe3JldHVybiB0aGlzLmdrKHRoaXMpIT09MH0sCkZWKGEsYil7dmFyIHMKZm9y -KHM9Si5JVChBLkxoKHRoaXMpLkMoImNYPGxmLkU+IikuYShiKSk7cy5HKCk7KXRoaXMuaSgwLHMuZ2wo -KSl9LAoiWyIoYSl7cmV0dXJuIEEueCh0aGlzLCJ7IiwifSIpfSwKSChhLGIpe3ZhciBzLHIscSxwPXRo -aXMuZ0EodGhpcykKaWYoIXAuRygpKXJldHVybiIiCmlmKGI9PT0iIil7cz1wLiR0aS5jCnI9IiIKZG97 -cT1wLmQKcis9QS5FaihxPT1udWxsP3MuYShxKTpxKX13aGlsZShwLkcoKSkKcz1yfWVsc2V7cz1wLmQK -cz0iIitBLkVqKHM9PW51bGw/cC4kdGkuYy5hKHMpOnMpCmZvcihyPXAuJHRpLmM7cC5HKCk7KXtxPXAu -ZApzPXMrYitBLkVqKHE9PW51bGw/ci5hKHEpOnEpfX1yZXR1cm4gcy5jaGFyQ29kZUF0KDApPT0wP3M6 -c30sCmVSKGEsYil7cmV0dXJuIEEuYksodGhpcyxiLEEuTGgodGhpcykuQygibGYuRSIpKX0sCkUoYSxi -KXt2YXIgcyxyLHEscCxvPSJpbmRleCIKQS5jYihiLG8sdC5TKQpBLmsxKGIsbykKZm9yKHM9dGhpcy5n -QSh0aGlzKSxyPXMuJHRpLmMscT0wO3MuRygpOyl7cD1zLmQKaWYocD09bnVsbClwPXIuYShwKQppZihi -PT09cSlyZXR1cm4gcDsrK3F9dGhyb3cgQS5iKEEuQ2YoYix0aGlzLG8sbnVsbCxxKSl9fQpBLlZqLnBy -b3RvdHlwZT17JGliUToxLCRpY1g6MSwkaU9sOjF9CkEuWHYucHJvdG90eXBlPXskaWJROjEsJGljWDox -LCRpT2w6MX0KQS5uWS5wcm90b3R5cGU9e30KQS5XWS5wcm90b3R5cGU9e30KQS5SVS5wcm90b3R5cGU9 -e30KQS5GUC5wcm90b3R5cGU9e30KQS51dy5wcm90b3R5cGU9ewpxKGEsYil7dmFyIHMscj10aGlzLmIK -aWYocj09bnVsbClyZXR1cm4gdGhpcy5jLnEoMCxiKQplbHNlIGlmKHR5cGVvZiBiIT0ic3RyaW5nIily -ZXR1cm4gbnVsbAplbHNle3M9cltiXQpyZXR1cm4gdHlwZW9mIHM9PSJ1bmRlZmluZWQiP3RoaXMuZmIo -Yik6c319LApnayhhKXtyZXR1cm4gdGhpcy5iPT1udWxsP3RoaXMuYy5hOnRoaXMuQ2YoKS5sZW5ndGh9 -LApnbDAoYSl7cmV0dXJuIHRoaXMuZ2sodGhpcyk9PT0wfSwKZ3ZjKCl7aWYodGhpcy5iPT1udWxsKXt2 -YXIgcz10aGlzLmMKcmV0dXJuIG5ldyBBLmk1KHMsQS5MaChzKS5DKCJpNTwxPiIpKX1yZXR1cm4gbmV3 -IEEuaTgodGhpcyl9LApZNShhLGIsYyl7dmFyIHMscixxPXRoaXMKaWYocS5iPT1udWxsKXEuYy5ZNSgw -LGIsYykKZWxzZSBpZihxLng0KGIpKXtzPXEuYgpzW2JdPWMKcj1xLmEKaWYocj09bnVsbD9zIT1udWxs -OnIhPT1zKXJbYl09bnVsbH1lbHNlIHEuWEsoKS5ZNSgwLGIsYyl9LAp4NChhKXtpZih0aGlzLmI9PW51 -bGwpcmV0dXJuIHRoaXMuYy54NChhKQpyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0 -eS5jYWxsKHRoaXMuYSxhKX0sCksoYSxiKXt2YXIgcyxyLHEscCxvPXRoaXMKdC5jQS5hKGIpCmlmKG8u -Yj09bnVsbClyZXR1cm4gby5jLksoMCxiKQpzPW8uQ2YoKQpmb3Iocj0wO3I8cy5sZW5ndGg7KytyKXtx -PXNbcl0KcD1vLmJbcV0KaWYodHlwZW9mIHA9PSJ1bmRlZmluZWQiKXtwPUEuUWUoby5hW3FdKQpvLmJb -cV09cH1iLiQyKHEscCkKaWYocyE9PW8uYyl0aHJvdyBBLmIoQS5hNChvKSl9fSwKQ2YoKXt2YXIgcz10 -LmJNLmEodGhpcy5jKQppZihzPT1udWxsKXM9dGhpcy5jPUEuUUkoT2JqZWN0LmtleXModGhpcy5hKSx0 -LnMpCnJldHVybiBzfSwKWEsoKXt2YXIgcyxyLHEscCxvLG49dGhpcwppZihuLmI9PW51bGwpcmV0dXJu -IG4uYwpzPUEuRmwodC5OLHQueikKcj1uLkNmKCkKZm9yKHE9MDtwPXIubGVuZ3RoLHE8cDsrK3Epe289 -cltxXQpzLlk1KDAsbyxuLnEoMCxvKSl9aWYocD09PTApQi5ObS5pKHIsIiIpCmVsc2UgQi5ObS5WMShy -KQpuLmE9bi5iPW51bGwKcmV0dXJuIG4uYz1zfSwKZmIoYSl7dmFyIHMKaWYoIU9iamVjdC5wcm90b3R5 -cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmEsYSkpcmV0dXJuIG51bGwKcz1BLlFlKHRoaXMuYVth -XSkKcmV0dXJuIHRoaXMuYlthXT1zfX0KQS5pOC5wcm90b3R5cGU9ewpnayhhKXt2YXIgcz10aGlzLmEK -cmV0dXJuIHMuZ2socyl9LApFKGEsYil7dmFyIHM9dGhpcy5hCmlmKHMuYj09bnVsbClzPXMuZ3ZjKCku -RSgwLGIpCmVsc2V7cz1zLkNmKCkKaWYoIShiPj0wJiZiPHMubGVuZ3RoKSlyZXR1cm4gQS5PSChzLGIp -CnM9c1tiXX1yZXR1cm4gc30sCmdBKGEpe3ZhciBzPXRoaXMuYQppZihzLmI9PW51bGwpe3M9cy5ndmMo -KQpzPXMuZ0Eocyl9ZWxzZXtzPXMuQ2YoKQpzPW5ldyBKLm0xKHMscy5sZW5ndGgsQS50NihzKS5DKCJt -MTwxPiIpKX1yZXR1cm4gc30sCnRnKGEsYil7cmV0dXJuIHRoaXMuYS54NChiKX19CkEueHIucHJvdG90 -eXBlPXsKJDAoKXt2YXIgcyxyCnRyeXtzPW5ldyBUZXh0RGVjb2RlcigidXRmLTgiLHtmYXRhbDp0cnVl -fSkKcmV0dXJuIHN9Y2F0Y2gocil7fXJldHVybiBudWxsfSwKJFM6MTB9CkEuTnoucHJvdG90eXBlPXsK -JDAoKXt2YXIgcyxyCnRyeXtzPW5ldyBUZXh0RGVjb2RlcigidXRmLTgiLHtmYXRhbDpmYWxzZX0pCnJl -dHVybiBzfWNhdGNoKHIpe31yZXR1cm4gbnVsbH0sCiRTOjEwfQpBLkNWLnByb3RvdHlwZT17CnlyKGEx -LGEyLGEzKXt2YXIgcyxyLHEscCxvLG4sbSxsLGssaixpLGgsZyxmLGUsZCxjLGIsYSxhMD0iSW52YWxp -ZCBiYXNlNjQgZW5jb2RpbmcgbGVuZ3RoICIKYTM9QS5qQihhMixhMyxhMS5sZW5ndGgpCnM9JC5WNygp -CmZvcihyPXMubGVuZ3RoLHE9YTIscD1xLG89bnVsbCxuPS0xLG09LTEsbD0wO3E8YTM7cT1rKXtrPXEr -MQpqPUIueEIuVyhhMSxxKQppZihqPT09Mzcpe2k9aysyCmlmKGk8PWEzKXtoPUEub28oQi54Qi5XKGEx -LGspKQpnPUEub28oQi54Qi5XKGExLGsrMSkpCmY9aCoxNitnLShnJjI1NikKaWYoZj09PTM3KWY9LTEK -az1pfWVsc2UgZj0tMX1lbHNlIGY9agppZigwPD1mJiZmPD0xMjcpe2lmKCEoZj49MCYmZjxyKSlyZXR1 -cm4gQS5PSChzLGYpCmU9c1tmXQppZihlPj0wKXtmPUIueEIuTygiQUJDREVGR0hJSktMTU5PUFFSU1RV -VldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsZSkKaWYoZj09PWopY29u -dGludWUKaj1mfWVsc2V7aWYoZT09PS0xKXtpZihuPDApe2Q9bz09bnVsbD9udWxsOm8uYS5sZW5ndGgK -aWYoZD09bnVsbClkPTAKbj1kKyhxLXApCm09cX0rK2wKaWYoaj09PTYxKWNvbnRpbnVlfWo9Zn1pZihl -IT09LTIpe2lmKG89PW51bGwpe289bmV3IEEuTSgiIikKZD1vfWVsc2UgZD1vCmM9ZC5hKz1CLnhCLk5q -KGExLHAscSkKZC5hPWMrQS5MdyhqKQpwPWsKY29udGludWV9fXRocm93IEEuYihBLnJyKCJJbnZhbGlk -IGJhc2U2NCBkYXRhIixhMSxxKSl9aWYobyE9bnVsbCl7cj1vLmErPUIueEIuTmooYTEscCxhMykKZD1y -Lmxlbmd0aAppZihuPj0wKUEueE0oYTEsbSxhMyxuLGwsZCkKZWxzZXtiPUIuam4uelkoZC0xLDQpKzEK -aWYoYj09PTEpdGhyb3cgQS5iKEEucnIoYTAsYTEsYTMpKQpmb3IoO2I8NDspe3IrPSI9IgpvLmE9cjsr -K2J9fXI9by5hCnJldHVybiBCLnhCLmk3KGExLGEyLGEzLHIuY2hhckNvZGVBdCgwKT09MD9yOnIpfWE9 -YTMtYTIKaWYobj49MClBLnhNKGExLG0sYTMsbixsLGEpCmVsc2V7Yj1CLmpuLnpZKGEsNCkKaWYoYj09 -PTEpdGhyb3cgQS5iKEEucnIoYTAsYTEsYTMpKQppZihiPjEpYTE9Qi54Qi5pNyhhMSxhMyxhMyxiPT09 -Mj8iPT0iOiI9Iil9cmV0dXJuIGExfX0KQS5VOC5wcm90b3R5cGU9e30KQS5Vay5wcm90b3R5cGU9e30K -QS53SS5wcm90b3R5cGU9e30KQS5aaS5wcm90b3R5cGU9e30KQS5VZC5wcm90b3R5cGU9ewoiWyIoYSl7 -dmFyIHM9QS5obCh0aGlzLmEpCnJldHVybih0aGlzLmIhPW51bGw/IkNvbnZlcnRpbmcgb2JqZWN0IHRv -IGFuIGVuY29kYWJsZSBvYmplY3QgZmFpbGVkOiI6IkNvbnZlcnRpbmcgb2JqZWN0IGRpZCBub3QgcmV0 -dXJuIGFuIGVuY29kYWJsZSBvYmplY3Q6IikrIiAiK3N9fQpBLks4LnByb3RvdHlwZT17CiJbIihhKXty -ZXR1cm4iQ3ljbGljIGVycm9yIGluIEpTT04gc3RyaW5naWZ5In19CkEuYnkucHJvdG90eXBlPXsKcFco -YSxiLGMpe3ZhciBzCnQuZlYuYShjKQpzPUEuQlMoYix0aGlzLmdIZSgpLmEpCnJldHVybiBzfSwKT0Io -YSxiKXt2YXIgcwp0LmRBLmEoYikKcz1BLnVYKGEsdGhpcy5nWkUoKS5iLG51bGwpCnJldHVybiBzfSwK -Z1pFKCl7cmV0dXJuIEIublh9LApnSGUoKXtyZXR1cm4gQi5BM319CkEub2oucHJvdG90eXBlPXt9CkEu -TXgucHJvdG90eXBlPXt9CkEuU2gucHJvdG90eXBlPXsKUlQoYSl7dmFyIHMscixxLHAsbyxuLG09YS5s -ZW5ndGgKZm9yKHM9dGhpcy5jLHI9MCxxPTA7cTxtOysrcSl7cD1CLnhCLlcoYSxxKQppZihwPjkyKXtp -ZihwPj01NTI5Nil7bz1wJjY0NTEyCmlmKG89PT01NTI5Nil7bj1xKzEKbj0hKG48bSYmKEIueEIuVyhh -LG4pJjY0NTEyKT09PTU2MzIwKX1lbHNlIG49ITEKaWYoIW4paWYobz09PTU2MzIwKXtvPXEtMQpvPSEo -bz49MCYmKEIueEIuTyhhLG8pJjY0NTEyKT09PTU1Mjk2KX1lbHNlIG89ITEKZWxzZSBvPSEwCmlmKG8p -e2lmKHE+cilzLmErPUIueEIuTmooYSxyLHEpCnI9cSsxCm89cy5hKz1BLkx3KDkyKQpvKz1BLkx3KDEx -NykKcy5hPW8Kbys9QS5MdygxMDApCnMuYT1vCm49cD4+PjgmMTUKbys9QS5MdyhuPDEwPzQ4K246ODcr -bikKcy5hPW8Kbj1wPj4+NCYxNQpvKz1BLkx3KG48MTA/NDgrbjo4NytuKQpzLmE9bwpuPXAmMTUKcy5h -PW8rQS5MdyhuPDEwPzQ4K246ODcrbil9fWNvbnRpbnVlfWlmKHA8MzIpe2lmKHE+cilzLmErPUIueEIu -TmooYSxyLHEpCnI9cSsxCm89cy5hKz1BLkx3KDkyKQpzd2l0Y2gocCl7Y2FzZSA4OnMuYT1vK0EuTHco -OTgpCmJyZWFrCmNhc2UgOTpzLmE9bytBLkx3KDExNikKYnJlYWsKY2FzZSAxMDpzLmE9bytBLkx3KDEx -MCkKYnJlYWsKY2FzZSAxMjpzLmE9bytBLkx3KDEwMikKYnJlYWsKY2FzZSAxMzpzLmE9bytBLkx3KDEx -NCkKYnJlYWsKZGVmYXVsdDpvKz1BLkx3KDExNykKcy5hPW8Kbys9QS5Mdyg0OCkKcy5hPW8Kbys9QS5M -dyg0OCkKcy5hPW8Kbj1wPj4+NCYxNQpvKz1BLkx3KG48MTA/NDgrbjo4NytuKQpzLmE9bwpuPXAmMTUK -cy5hPW8rQS5MdyhuPDEwPzQ4K246ODcrbikKYnJlYWt9fWVsc2UgaWYocD09PTM0fHxwPT09OTIpe2lm -KHE+cilzLmErPUIueEIuTmooYSxyLHEpCnI9cSsxCm89cy5hKz1BLkx3KDkyKQpzLmE9bytBLkx3KHAp -fX1pZihyPT09MClzLmErPWEKZWxzZSBpZihyPG0pcy5hKz1CLnhCLk5qKGEscixtKX0sCkpuKGEpe3Zh -ciBzLHIscSxwCmZvcihzPXRoaXMuYSxyPXMubGVuZ3RoLHE9MDtxPHI7KytxKXtwPXNbcV0KaWYoYT09 -bnVsbD9wPT1udWxsOmE9PT1wKXRocm93IEEuYihuZXcgQS5LOChhLG51bGwpKX1CLk5tLmkocyxhKX0s -CmlVKGEpe3ZhciBzLHIscSxwLG89dGhpcwppZihvLnRNKGEpKXJldHVybgpvLkpuKGEpCnRyeXtzPW8u -Yi4kMShhKQppZighby50TShzKSl7cT1BLkd5KGEsbnVsbCxvLmdWSygpKQp0aHJvdyBBLmIocSl9cT1v -LmEKaWYoMD49cS5sZW5ndGgpcmV0dXJuIEEuT0gocSwtMSkKcS5wb3AoKX1jYXRjaChwKXtyPUEuUnUo -cCkKcT1BLkd5KGEscixvLmdWSygpKQp0aHJvdyBBLmIocSl9fSwKdE0oYSl7dmFyIHMscixxPXRoaXMK -aWYodHlwZW9mIGE9PSJudW1iZXIiKXtpZighaXNGaW5pdGUoYSkpcmV0dXJuITEKcS5jLmErPUIuQ0Rb -IlsiXShhKQpyZXR1cm4hMH1lbHNlIGlmKGE9PT0hMCl7cS5jLmErPSJ0cnVlIgpyZXR1cm4hMH1lbHNl -IGlmKGE9PT0hMSl7cS5jLmErPSJmYWxzZSIKcmV0dXJuITB9ZWxzZSBpZihhPT1udWxsKXtxLmMuYSs9 -Im51bGwiCnJldHVybiEwfWVsc2UgaWYodHlwZW9mIGE9PSJzdHJpbmciKXtzPXEuYwpzLmErPSciJwpx -LlJUKGEpCnMuYSs9JyInCnJldHVybiEwfWVsc2UgaWYodC5qLmIoYSkpe3EuSm4oYSkKcS5sSyhhKQpz -PXEuYQppZigwPj1zLmxlbmd0aClyZXR1cm4gQS5PSChzLC0xKQpzLnBvcCgpCnJldHVybiEwfWVsc2Ug -aWYodC5mLmIoYSkpe3EuSm4oYSkKcj1xLmp3KGEpCnM9cS5hCmlmKDA+PXMubGVuZ3RoKXJldHVybiBB -Lk9IKHMsLTEpCnMucG9wKCkKcmV0dXJuIHJ9ZWxzZSByZXR1cm4hMX0sCmxLKGEpe3ZhciBzLHIscT10 -aGlzLmMKcS5hKz0iWyIKcz1KLlU2KGEpCmlmKHMuZ29yKGEpKXt0aGlzLmlVKHMucShhLDApKQpmb3Io -cj0xO3I8cy5nayhhKTsrK3Ipe3EuYSs9IiwiCnRoaXMuaVUocy5xKGEscikpfX1xLmErPSJdIn0sCmp3 -KGEpe3ZhciBzLHIscSxwLG8sbixtPXRoaXMsbD17fQppZihhLmdsMChhKSl7bS5jLmErPSJ7fSIKcmV0 -dXJuITB9cz1hLmdrKGEpKjIKcj1BLk84KHMsbnVsbCwhMSx0LlgpCnE9bC5hPTAKbC5iPSEwCmEuSygw -LG5ldyBBLnRpKGwscikpCmlmKCFsLmIpcmV0dXJuITEKcD1tLmMKcC5hKz0ieyIKZm9yKG89JyInO3E8 -cztxKz0yLG89JywiJyl7cC5hKz1vCm0uUlQoQS5uKHJbcV0pKQpwLmErPSciOicKbj1xKzEKaWYoIShu -PHMpKXJldHVybiBBLk9IKHIsbikKbS5pVShyW25dKX1wLmErPSJ9IgpyZXR1cm4hMH19CkEudGkucHJv -dG90eXBlPXsKJDIoYSxiKXt2YXIgcyxyCmlmKHR5cGVvZiBhIT0ic3RyaW5nIil0aGlzLmEuYj0hMQpz -PXRoaXMuYgpyPXRoaXMuYQpCLk5tLlk1KHMsci5hKyssYSkKQi5ObS5ZNShzLHIuYSsrLGIpfSwKJFM6 -OX0KQS50dS5wcm90b3R5cGU9ewpnVksoKXt2YXIgcz10aGlzLmMuYQpyZXR1cm4gcy5jaGFyQ29kZUF0 -KDApPT0wP3M6c319CkEudTUucHJvdG90eXBlPXsKZ1pFKCl7cmV0dXJuIEIuUWt9fQpBLkUzLnByb3Rv -dHlwZT17CldKKGEpe3ZhciBzLHIscSxwPUEuakIoMCxudWxsLGEubGVuZ3RoKSxvPXAtMAppZihvPT09 -MClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCkKcz1vKjMKcj1uZXcgVWludDhBcnJheShzKQpxPW5ldyBB -LlJ3KHIpCmlmKHEuR3goYSwwLHApIT09cCl7Qi54Qi5PKGEscC0xKQpxLlJPKCl9cmV0dXJuIG5ldyBV -aW50OEFycmF5KHIuc3ViYXJyYXkoMCxBLnJNKDAscS5iLHMpKSl9fQpBLlJ3LnByb3RvdHlwZT17ClJP -KCl7dmFyIHM9dGhpcyxyPXMuYyxxPXMuYixwPXMuYj1xKzEsbz1yLmxlbmd0aAppZighKHE8bykpcmV0 -dXJuIEEuT0gocixxKQpyW3FdPTIzOQpxPXMuYj1wKzEKaWYoIShwPG8pKXJldHVybiBBLk9IKHIscCkK -cltwXT0xOTEKcy5iPXErMQppZighKHE8bykpcmV0dXJuIEEuT0gocixxKQpyW3FdPTE4OX0sCk82KGEs -Yil7dmFyIHMscixxLHAsbyxuPXRoaXMKaWYoKGImNjQ1MTIpPT09NTYzMjApe3M9NjU1MzYrKChhJjEw -MjMpPDwxMCl8YiYxMDIzCnI9bi5jCnE9bi5iCnA9bi5iPXErMQpvPXIubGVuZ3RoCmlmKCEocTxvKSly -ZXR1cm4gQS5PSChyLHEpCnJbcV09cz4+PjE4fDI0MApxPW4uYj1wKzEKaWYoIShwPG8pKXJldHVybiBB -Lk9IKHIscCkKcltwXT1zPj4+MTImNjN8MTI4CnA9bi5iPXErMQppZighKHE8bykpcmV0dXJuIEEuT0go -cixxKQpyW3FdPXM+Pj42JjYzfDEyOApuLmI9cCsxCmlmKCEocDxvKSlyZXR1cm4gQS5PSChyLHApCnJb -cF09cyY2M3wxMjgKcmV0dXJuITB9ZWxzZXtuLlJPKCkKcmV0dXJuITF9fSwKR3goYSxiLGMpe3ZhciBz -LHIscSxwLG8sbixtLGw9dGhpcwppZihiIT09YyYmKEIueEIuTyhhLGMtMSkmNjQ1MTIpPT09NTUyOTYp -LS1jCmZvcihzPWwuYyxyPXMubGVuZ3RoLHE9YjtxPGM7KytxKXtwPUIueEIuVyhhLHEpCmlmKHA8PTEy -Nyl7bz1sLmIKaWYobz49cilicmVhawpsLmI9bysxCnNbb109cH1lbHNle289cCY2NDUxMgppZihvPT09 -NTUyOTYpe2lmKGwuYis0PnIpYnJlYWsKbj1xKzEKaWYobC5PNihwLEIueEIuVyhhLG4pKSlxPW59ZWxz -ZSBpZihvPT09NTYzMjApe2lmKGwuYiszPnIpYnJlYWsKbC5STygpfWVsc2UgaWYocDw9MjA0Nyl7bz1s -LmIKbT1vKzEKaWYobT49cilicmVhawpsLmI9bQppZighKG88cikpcmV0dXJuIEEuT0gocyxvKQpzW29d -PXA+Pj42fDE5MgpsLmI9bSsxCnNbbV09cCY2M3wxMjh9ZWxzZXtvPWwuYgppZihvKzI+PXIpYnJlYWsK -bT1sLmI9bysxCmlmKCEobzxyKSlyZXR1cm4gQS5PSChzLG8pCnNbb109cD4+PjEyfDIyNApvPWwuYj1t -KzEKaWYoIShtPHIpKXJldHVybiBBLk9IKHMsbSkKc1ttXT1wPj4+NiY2M3wxMjgKbC5iPW8rMQppZigh -KG88cikpcmV0dXJuIEEuT0gocyxvKQpzW29dPXAmNjN8MTI4fX19cmV0dXJuIHF9fQpBLkdZLnByb3Rv -dHlwZT17CldKKGEpe3ZhciBzLHIKdC5MLmEoYSkKcz10aGlzLmEKcj1BLmt5KHMsYSwwLG51bGwpCmlm -KHIhPW51bGwpcmV0dXJuIHIKcmV0dXJuIG5ldyBBLmJ6KHMpLk5lKGEsMCxudWxsLCEwKX19CkEuYnou -cHJvdG90eXBlPXsKTmUoYSxiLGMsZCl7dmFyIHMscixxLHAsbyxuPXRoaXMKdC5MLmEoYSkKcz1BLmpC -KGIsYyxKLkhtKGEpKQppZihiPT09cylyZXR1cm4iIgpyPUEuankoYSxiLHMpCnE9bi5oTyhyLDAscy1i -LCEwKQpwPW4uYgppZigocCYxKSE9PTApe289QS5qNChwKQpuLmI9MAp0aHJvdyBBLmIoQS5ycihvLGEs -YituLmMpKX1yZXR1cm4gcX0sCmhPKGEsYixjLGQpe3ZhciBzLHIscT10aGlzCmlmKGMtYj4xMDAwKXtz -PUIuam4uQlUoYitjLDIpCnI9cS5oTyhhLGIscywhMSkKaWYoKHEuYiYxKSE9PTApcmV0dXJuIHIKcmV0 -dXJuIHIrcS5oTyhhLHMsYyxkKX1yZXR1cm4gcS5FaChhLGIsYyxkKX0sCkVoKGEsYixjLGQpe3ZhciBz -LHIscSxwLG8sbixtLGwsaz10aGlzLGo9NjU1MzMsaT1rLmIsaD1rLmMsZz1uZXcgQS5NKCIiKSxmPWIr -MSxlPWEubGVuZ3RoCmlmKCEoYj49MCYmYjxlKSlyZXR1cm4gQS5PSChhLGIpCnM9YVtiXQokbGFiZWww -JDA6Zm9yKHI9ay5hOyEwOyl7Zm9yKDshMDtmPW8pe3E9Qi54Qi5XKCJBQUFBQUFBQUFBQUFBQUFBQUFB +b3J0ZWQgaXNzdWUgd2l0aCBudWxsIHNhZmV0eSBtaWdyYXRpb24gdG9vbDogIithLCJsYWJlbHMiLHUu +ZCwiYm9keSIsYSsiXG5cbkVycm9yOiAiK3IrIlxuXG5QbGVhc2UgZmlsbCBpbiB0aGUgZm9sbG93aW5n +OlxuXG4qKk5hbWUgb2YgcGFja2FnZSBiZWluZyBtaWdyYXRlZCAoaWYgcHVibGljKSoqOlxuKipXaGF0 +IEkgd2FzIGRvaW5nIHdoZW4gdGhpcyBpc3N1ZSBvY2N1cnJlZCoqOlxuKipJcyBpdCBwb3NzaWJsZSB0 +byB3b3JrIGFyb3VuZCB0aGlzIGlzc3VlKio6XG4qKkhhcyB0aGlzIGlzc3VlIGhhcHBlbmVkIGJlZm9y +ZSwgYW5kIGlmIHNvLCBob3cgb2Z0ZW4qKjpcbioqRGFydCBTREsgdmVyc2lvbioqOiAiK0EuRWoocy5n +ZXRFbGVtZW50QnlJZCgic2RrLXZlcnNpb24iKS50ZXh0Q29udGVudCkrIlxuKipBZGRpdGlvbmFsIGRl +dGFpbHMqKjpcblxuVGhhbmtzIGZvciBmaWxpbmchXG5cblN0YWNrdHJhY2U6IF9hdXRvIHBvcHVsYXRl +ZCBieSBtaWdyYXRpb24gcHJldmlldyB0b29sLl9cblxuYGBgXG4iK0EuRWooYykrIlxuYGBgXG4iXSx0 +Lk4sdC56KSkuZ25EKCkpCnM9bi5zdHlsZQpzLmRpc3BsYXk9ImluaXRpYWwiCnM9cC5zdHlsZQpzLmRp +c3BsYXk9ImluaXRpYWwiCnM9QS5FaihiKQp3aW5kb3cKaWYodHlwZW9mIGNvbnNvbGUhPSJ1bmRlZmlu +ZWQiKXdpbmRvdy5jb25zb2xlLmVycm9yKGErIjogIitzKQp3aW5kb3cKcz1BLkVqKGMpCmlmKHR5cGVv +ZiBjb25zb2xlIT0idW5kZWZpbmVkIil3aW5kb3cuY29uc29sZS5lcnJvcihzKX0sCnQyKGEsYil7dmFy +IHMscixxLHAsbz10LmguYShBLnFjKGEuY3VycmVudFRhcmdldCkpCmEucHJldmVudERlZmF1bHQoKQpz +PW8uZ2V0QXR0cmlidXRlKCJocmVmIikKcy50b1N0cmluZwpyPUEuVXMocykKcT1BLkc2KHMpCnA9QS5h +SyhzKQppZihxIT1udWxsKUEuYWYocixxLHAsYixuZXcgQS5uVChyLHEscCkpCmVsc2UgQS5hZihyLG51 +bGwsbnVsbCxiLG5ldyBBLk5ZKHIpKX0sCkswKGEpe3ZhciBzLHIscSxwPWRvY3VtZW50LnF1ZXJ5U2Vs +ZWN0b3IoIi5wb3B1cC1wYW5lIikKcC5xdWVyeVNlbGVjdG9yKCJoMiIpLmlubmVyVGV4dD0iRmFpbGVk +IHRvIHJlcnVuIGZyb20gc291cmNlcyIKcC5xdWVyeVNlbGVjdG9yKCJwIikuaW5uZXJUZXh0PSJTb3Vy +Y2VzIGNvbnRhaW4gc3RhdGljIGFuYWx5c2lzIGVycm9yczoiCnM9cC5xdWVyeVNlbGVjdG9yKCJwcmUi +KQpzLnRvU3RyaW5nCnI9Si5FbChhLHQuZikKcT1BLkxoKHIpCnMuaW5uZXJUZXh0PW5ldyBBLmxKKHIs +cS5DKCJxVShsRC5FKSIpLmEobmV3IEEudWUoKSkscS5DKCJsSjxsRC5FLHFVPiIpKS5IKDAsIlxuIikK +cT1wLnF1ZXJ5U2VsZWN0b3IoImEuYm90dG9tIikuc3R5bGUKcS5kaXNwbGF5PSJub25lIgpzPXAuc3R5 +bGUKcy5kaXNwbGF5PSJpbml0aWFsIn0sCkdnKCl7dmFyIHM9ZG9jdW1lbnQscj10LmgKQS5EaChyLHIs +IlQiLCJxdWVyeVNlbGVjdG9yQWxsIikKcz1uZXcgQS53eihzLnF1ZXJ5U2VsZWN0b3JBbGwoIi5jb2Rl +IiksdC5SKQpzLksocyxuZXcgQS5HSCgpKX0sCmhYKGEsYixjKXtyZXR1cm4gQS5ZdyhhLGIsYyl9LApZ +dyhhLGIsYyl7dmFyIHM9MCxyPUEuRlgodC56KSxxPTEscCxvLG4sbSxsLGssaixpLGgsZwp2YXIgJGFz +eW5jJGhYPUEubHooZnVuY3Rpb24oZCxlKXtpZihkPT09MSl7cD1lCnM9cX13aGlsZSh0cnVlKXN3aXRj +aChzKXtjYXNlIDA6cT0zCms9dC5OCnM9NgpyZXR1cm4gQS5qUShBLlE2KGEsQS5FRihbInJlZ2lvbiIs +InJlZ2lvbiIsIm9mZnNldCIsQS5FaihiKV0sayxrKSx0LkcpLCRhc3luYyRoWCkKY2FzZSA2Om89ZQpr +PW8Kaj1KLlU2KGspCmk9dC5ncQpuPW5ldyBBLmQyKEEuamYoaS5hKGoucShrLCJlZGl0cyIpKSksQS5r +KGoucShrLCJleHBsYW5hdGlvbiIpKSxBLlVjKGoucShrLCJsaW5lIikpLEEuayhqLnEoaywiZGlzcGxh +eVBhdGgiKSksQS5rKGoucShrLCJ1cmlQYXRoIikpLEEuTmQoaS5hKGoucShrLCJ0cmFjZXMiKSkpKQpB +LlQxKG4pCkEuRnIoYSxiLGMpCkEueVgoIi5lZGl0LXBhbmVsIC5wYW5lbC1jb250ZW50IiwhMSkKcT0x +CnM9NQpicmVhawpjYXNlIDM6cT0yCmc9cAptPUEuUnUoZykKbD1BLnRzKGcpCkEuQzIoImNvdWxkbid0 +IGxvYWQgZWRpdCBkZXRhaWxzIixtLGwpCnM9NQpicmVhawpjYXNlIDI6cz0xCmJyZWFrCmNhc2UgNTpy +ZXR1cm4gQS55QyhudWxsLHIpCmNhc2UgMTpyZXR1cm4gQS5mMyhwLHIpfX0pCnJldHVybiBBLkRJKCRh +c3luYyRoWCxyKX0sCkc3KGEsYixjLGQsZSl7cmV0dXJuIEEuTDUoYSxiLGMsZCxlKX0sCkw1KGEsYixj +LGQsZSl7dmFyIHM9MCxyPUEuRlgodC5IKSxxLHA9MixvLG4sbSxsLGssaixpLGgKdmFyICRhc3luYyRH +Nz1BLmx6KGZ1bmN0aW9uKGYsZyl7aWYoZj09PTEpe289ZwpzPXB9d2hpbGUodHJ1ZSlzd2l0Y2gocyl7 +Y2FzZSAwOmlmKCFCLnhCLlRjKGEsIi5kYXJ0Iikpe0EuQkUoYSxBLndSKCksZCkKQS5CWChhLG51bGwp +CmlmKGUhPW51bGwpZS4kMCgpCnM9MQpicmVha31wPTQKaj10Lk4Kcz03CnJldHVybiBBLmpRKEEuUTYo +YSxBLkVGKFsiaW5saW5lIiwidHJ1ZSJdLGosaiksdC5HKSwkYXN5bmMkRzcpCmNhc2UgNzpuPWcKQS5C +RShhLEEuWWYobiksZCkKQS5mRyhiLGMpCm09QS5VcyhhKQpBLkJYKG0sYikKaWYoZSE9bnVsbCllLiQw +KCkKcD0yCnM9NgpicmVhawpjYXNlIDQ6cD0zCmg9bwpsPUEuUnUoaCkKaz1BLnRzKGgpCkEuQzIoImNv +dWxkbid0IGxvYWQgZGFydCBmaWxlICIrYSxsLGspCnM9NgpicmVhawpjYXNlIDM6cz0yCmJyZWFrCmNh +c2UgNjpjYXNlIDE6cmV0dXJuIEEueUMocSxyKQpjYXNlIDI6cmV0dXJuIEEuZjMobyxyKX19KQpyZXR1 +cm4gQS5ESSgkYXN5bmMkRzcscil9LApHZSgpe3ZhciBzPTAscj1BLkZYKHQueikscT0xLHAsbyxuLG0s +bCxrLGosaSxoCnZhciAkYXN5bmMkR2U9QS5seihmdW5jdGlvbihhLGIpe2lmKGE9PT0xKXtwPWIKcz1x +fXdoaWxlKHRydWUpc3dpdGNoKHMpe2Nhc2UgMDppPSIvX3ByZXZpZXcvbmF2aWdhdGlvblRyZWUuanNv +biIKcT0zCnM9NgpyZXR1cm4gQS5qUShBLlE2KGksQi5DTSx0LlcpLCRhc3luYyRHZSkKY2FzZSA2Oms9 +YgprLnRvU3RyaW5nCm89awprPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5uYXYtdHJlZSIpCmsudG9T +dHJpbmcKbj1rCkoubDUobiwiIikKaz1BLm1LKG8pCiQuSVI9awpBLnRYKG4saywhMCkKcT0xCnM9NQpi +cmVhawpjYXNlIDM6cT0yCmg9cAptPUEuUnUoaCkKbD1BLnRzKGgpCkEuQzIoImNvdWxkbid0IGxvYWQg +bmF2aWdhdGlvbiB0cmVlIixtLGwpCnM9NQpicmVhawpjYXNlIDI6cz0xCmJyZWFrCmNhc2UgNTpyZXR1 +cm4gQS55QyhudWxsLHIpCmNhc2UgMTpyZXR1cm4gQS5mMyhwLHIpfX0pCnJldHVybiBBLkRJKCRhc3lu +YyRHZSxyKX0sCnFPKGEpe3ZhciBzLHIscT1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHA9Qi5DRC56 +USgkLmZpKCkub2Zmc2V0SGVpZ2h0KSxvPXdpbmRvdy5pbm5lckhlaWdodApvLnRvU3RyaW5nCnM9Qi5D +RC56USgkLkRXKCkub2Zmc2V0SGVpZ2h0KQpyPXEuYm90dG9tCnIudG9TdHJpbmcKaWYocj5vLShzKzE0 +KSlKLmRoKGEpCmVsc2V7bz1xLnRvcApvLnRvU3RyaW5nCmlmKG88cCsxNClKLmRoKGEpfX0sCmZHKGEs +Yil7dmFyIHMscixxLHAsbwppZihhIT1udWxsKXtzPWRvY3VtZW50CnI9cy5nZXRFbGVtZW50QnlJZCgi +byIrQS5FaihhKSkKcT1zLnF1ZXJ5U2VsZWN0b3IoIi5saW5lLSIrQS5FaihiKSkKaWYociE9bnVsbCl7 +QS5xTyhyKQpKLmRSKHIpLmkoMCwidGFyZ2V0Iil9ZWxzZSBpZihxIT1udWxsKXtzPXEucGFyZW50RWxl +bWVudApzLnRvU3RyaW5nCkEucU8ocyl9aWYocSE9bnVsbClKLmRSKHQuaC5hKHEucGFyZW50Tm9kZSkp +LmkoMCwiaGlnaGxpZ2h0Iil9ZWxzZXtzPWRvY3VtZW50CnA9dC5oCkEuRGgocCxwLCJUIiwicXVlcnlT +ZWxlY3RvckFsbCIpCnM9cy5xdWVyeVNlbGVjdG9yQWxsKCIubGluZS1ubyIpCm89bmV3IEEud3oocyx0 +LlIpCmlmKG8uZ2sobyk9PT0wKXJldHVybgpBLnFPKHAuYShCLnQ1Lmd0SChzKSkpfX0sCmFmKGEsYixj +LGQsZSl7dmFyIHMscixxLHA9dC5GLG89QS5HNihwLmEod2luZG93LmxvY2F0aW9uKS5ocmVmKSxuPUEu +YUsocC5hKHdpbmRvdy5sb2NhdGlvbikuaHJlZikKaWYobyE9bnVsbCl7cz1kb2N1bWVudC5nZXRFbGVt +ZW50QnlJZCgibyIrQS5FaihvKSkKaWYocyE9bnVsbClKLmRSKHMpLlIoMCwidGFyZ2V0Iil9aWYobiE9 +bnVsbCl7cj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIubGluZS0iK0EuRWoobikpCmlmKHIhPW51bGwp +e3E9ci5wYXJlbnRFbGVtZW50CnEudG9TdHJpbmcKSi5kUihxKS5SKDAsImhpZ2hsaWdodCIpfX1pZihh +PT1wLmEod2luZG93LmxvY2F0aW9uKS5wYXRobmFtZSl7QS5mRyhiLGMpCmUuJDAoKX1lbHNle2EudG9T +dHJpbmcKQS5HNyhhLGIsYyxkLGUpfX0sClE0KGEsYil7dmFyIHMscixxPUEuaEsoYSkscD1BLkZsKHQu +Tix0LmRrKQpmb3Iocz1xLmdoWSgpLHM9cy5nUHUocykscz1zLmdBKHMpO3MuRygpOyl7cj1zLmdsKCkK +cC5ZNSgwLHIuYSxyLmIpfWZvcihzPWIuZ1B1KGIpLHM9cy5nQShzKTtzLkcoKTspe3I9cy5nbCgpCnAu +WTUoMCxyLmEsci5iKX1wLlk1KDAsImF1dGhUb2tlbiIsJC5VRSgpKQpyZXR1cm4gcS5ubSgwLHApLmdu +RCgpfSwKVDEoYSl7dmFyIHMscixxLHAsbyxuLG0sbCxrLGosaT0kLmhMKCkKaS50b1N0cmluZwpKLmw1 +KGksIiIpCmlmKGE9PW51bGwpe3M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpCkIuTHQuc2E0KHMs +IlNlZSBkZXRhaWxzIGFib3V0IGEgcHJvcG9zZWQgZWRpdC4iKQpCLkx0LnNQKHMsQS5RSShbInBsYWNl +aG9sZGVyIl0sdC5zKSkKaS5hcHBlbmRDaGlsZChzKQpCLkx0LkZGKHMpCnJldHVybn1yPWEuZApyLnRv +U3RyaW5nCnE9JC5uVSgpCnA9cS56ZihyKQpvPWEuYgpuPWRvY3VtZW50Cm09bi5xdWVyeVNlbGVjdG9y +KCIucm9vdCIpLnRleHRDb250ZW50Cm0udG9TdHJpbmcKbD1xLkhQKHIsQi54Qi5iUyhtKSkKaz1hLmMK +aj1uLmNyZWF0ZUVsZW1lbnQoInAiKQppLmFwcGVuZENoaWxkKGopCmouYXBwZW5kQ2hpbGQobi5jcmVh +dGVUZXh0Tm9kZShBLkVqKG8pKyIgYXQgIikpCnI9YS5lCnIudG9TdHJpbmcKcT10Lk4KcT1BLko2KEEu +UTQocixBLkVGKFsibGluZSIsSi5ZUyhrKV0scSxxKSkpCnEuYXBwZW5kQ2hpbGQobi5jcmVhdGVUZXh0 +Tm9kZShsKyI6IitBLkVqKGspKyIuIikpCmouYXBwZW5kQ2hpbGQocSkKSi5kaChqKQpBLkNDKGEsaSxw +KQpBLkZ6KGEsaSl9LApMSChhMSxhMixhMyl7dmFyIHMscixxLHAsbyxuLG0sbCxrLGosaSxoLGcsZixl +LGQsYyxiLGEsYTA9JC55UCgpCmEwLnRvU3RyaW5nCkoubDUoYTAsIiIpCnM9YTIuZ2soYTIpCmlmKHM8 +MikkLkRaKCkuaW5uZXJUZXh0PSJQcm9wb3NlZCBFZGl0cyIKZWxzZXtyPWEyLmdQdShhMikuTjAoMCww +LG5ldyBBLkVFKCksdC5TKQokLkRaKCkuaW5uZXJUZXh0PUEuRWoocikrIiBQcm9wb3NlZCBFZGl0cyJ9 +aWYocz09PTApe3E9ZG9jdW1lbnQKcD1xLmNyZWF0ZUVsZW1lbnQoInAiKQphMC5hcHBlbmRDaGlsZChw +KQpwLmFwcGVuZENoaWxkKHEuY3JlYXRlVGV4dE5vZGUoIk5vIHByb3Bvc2VkIGVkaXRzIikpfWVsc2Ug +Zm9yKGEwPWEyLmdQdShhMiksYTA9YTAuZ0EoYTApLHE9dC5GLG89dC5OLG49dC5RLG09bi5DKCJ+KDEp +PyIpLGw9dC5aLG49bi5jO2EwLkcoKTspe2s9YTAuZ2woKQpqPWRvY3VtZW50CnA9ai5jcmVhdGVFbGVt +ZW50KCJwIikKaT0kLnlQKCkKaS5hcHBlbmRDaGlsZChwKQpwLmFwcGVuZENoaWxkKGouY3JlYXRlVGV4 +dE5vZGUoQS5FaihrLmEpKyI6IikpCmg9ai5jcmVhdGVFbGVtZW50KCJ1bCIpCmkuYXBwZW5kQ2hpbGQo +aCkKZm9yKGs9Si5JVChrLmIpO2suRygpOyl7aT1rLmdsKCkKZz1qLmNyZWF0ZUVsZW1lbnQoImxpIikK +aC5hcHBlbmRDaGlsZChnKQpKLmRSKGcpLmkoMCwiZWRpdCIpCmY9ai5jcmVhdGVFbGVtZW50KCJhIikK +Zy5hcHBlbmRDaGlsZChmKQpmLmNsYXNzTGlzdC5hZGQoImVkaXQtbGluayIpCmU9aS5jCmQ9QS5Faihl +KQpmLnNldEF0dHJpYnV0ZSgiZGF0YS0iK25ldyBBLlN5KG5ldyBBLmk3KGYpKS5PVSgib2Zmc2V0Iiks +ZCkKYz1pLmEKYj1BLkVqKGMpCmYuc2V0QXR0cmlidXRlKCJkYXRhLSIrbmV3IEEuU3kobmV3IEEuaTco +ZikpLk9VKCJsaW5lIiksYikKZi5hcHBlbmRDaGlsZChqLmNyZWF0ZVRleHROb2RlKCJsaW5lICIrYikp +CmE9cS5hKHdpbmRvdy5sb2NhdGlvbikucGF0aG5hbWUKYS50b1N0cmluZwpmLnNldEF0dHJpYnV0ZSgi +aHJlZiIsQS5RNChhLEEuRUYoWyJsaW5lIixiLCJvZmZzZXQiLGRdLG8sbykpKQpkPW0uYShuZXcgQS5Q +TihlLGMsYTEpKQpsLmEobnVsbCkKQS5KRShmLCJjbGljayIsZCwhMSxuKQpnLmFwcGVuZENoaWxkKGou +Y3JlYXRlVGV4dE5vZGUoIjogIitBLkVqKGkuYikpKX19aWYoYTMpQS5UMShudWxsKX0sCkZyKGEsYixj +KXt2YXIgcyxyLHE9QS5oSyhCLkV4LmdEcih0LkYuYSh3aW5kb3cubG9jYXRpb24pKStBLkVqKGEpKSxw +PUEuRmwodC5OLHQuZGspCmlmKGIhPW51bGwpcC5ZNSgwLCJvZmZzZXQiLEEuRWooYikpCmlmKGMhPW51 +bGwpcC5ZNSgwLCJsaW5lIixBLkVqKGMpKQpwLlk1KDAsImF1dGhUb2tlbiIsJC5VRSgpKQpxPXEubm0o +MCxwKQpwPXdpbmRvdy5oaXN0b3J5CnM9dC56CnI9cS5nbkQoKQpwLnB1c2hTdGF0ZShuZXcgQS5CZihb +XSxbXSkuUHYoQS5GbChzLHMpKSwiIixyKX0sCkVuKGEpe3ZhciBzLHI9ZG9jdW1lbnQucXVlcnlTZWxl +Y3RvcigiLnJvb3QiKS50ZXh0Q29udGVudApyLnRvU3RyaW5nCnM9cisiLyIKaWYoQi54Qi5uKGEscykp +cmV0dXJuIEIueEIueW4oYSxzLmxlbmd0aCkKZWxzZSByZXR1cm4gYX0sCk90KGEpe3N3aXRjaChhLnIp +e2Nhc2UgQi5jdzpicmVhawpjYXNlIEIuV0Q6YS5yPUIuWGoKYnJlYWsKY2FzZSBCLlhqOmEucj1CLldE +CmJyZWFrCmNhc2UgQi5kYzp0aHJvdyBBLmIoQS5QVigiRmlsZSAiK0EuRWooYS5jKSsiIHNob3VsZCBu +b3QgaGF2ZSBpbmRldGVybWluYXRlIG1pZ3JhdGlvbiBzdGF0dXMiKSkKZGVmYXVsdDpicmVha319LAp0 +YShhLGIpe3ZhciBzLHI9ImNoZWNrX2JveCIscT0idGl0bGUiLHA9Im9wdGVkLW91dCIsbz0ibWlncmF0 +aW5nIgpzd2l0Y2goYil7Y2FzZSBCLmN3OmEuaW5uZXJUZXh0PXIKcz1KLllFKGEpCnMuZ1AoYSkuaSgw +LCJhbHJlYWR5LW1pZ3JhdGVkIikKcy5nUChhKS5pKDAsImRpc2FibGVkIikKYS5zZXRBdHRyaWJ1dGUo +cSwiQWxyZWFkeSBtaWdyYXRlZCIpCmJyZWFrCmNhc2UgQi5XRDphLmlubmVyVGV4dD1yCnM9Si5ZRShh +KQpzLmdQKGEpLlIoMCxwKQpzLmdQKGEpLmkoMCxvKQphLnNldEF0dHJpYnV0ZShxLCJNaWdyYXRpbmcg +dG8gbnVsbCBzYWZldHkiKQpicmVhawpjYXNlIEIuWGo6YS5pbm5lclRleHQ9ImNoZWNrX2JveF9vdXRs +aW5lX2JsYW5rIgpzPUouWUUoYSkKcy5nUChhKS5SKDAsbykKcy5nUChhKS5pKDAscCkKYS5zZXRBdHRy +aWJ1dGUocSwiT3B0aW5nIG91dCBvZiBudWxsIHNhZmV0eSIpCmJyZWFrCmRlZmF1bHQ6YS5pbm5lclRl +eHQ9ImluZGV0ZXJtaW5hdGVfY2hlY2tfYm94IgpzPUouWUUoYSkKcy5nUChhKS5SKDAsbykKcy5nUChh +KS5pKDAscCkKYS5zZXRBdHRyaWJ1dGUocSwiTWl4ZWQgc3RhdHVzZXMgb2YgJ21pZ3JhdGluZycgYW5k +ICdvcHRpbmcgb3V0JyIpCmJyZWFrfX0sCnhuKGEsYil7dmFyIHMscj0iZGlzYWJsZWQiLHE9Yi5nTCgp +CkEudGEoYSxxKQppZihiLmM9PT0kLkQ5KCkuaW5uZXJUZXh0KXtpZihiIGluc3RhbmNlb2YgQS5jRCl7 +cz1iLncKcy50b1N0cmluZwpzPSFzfWVsc2Ugcz0hMQppZihzKXthLnRvU3RyaW5nCkouZFIoYSkuaSgw +LHIpfWVsc2V7YS50b1N0cmluZwpKLmRSKGEpLlIoMCxyKX1BLnRhKCQuYzAoKSxxKX19LApCWChhLGIp +e3ZhciBzLHIscSxwPXt9CnAuYT1hCmE9QS5FbihhKQpwLmE9YQpzPSQuRDkoKQpzLnRvU3RyaW5nCkou +ZHIocyxhKQpzPWRvY3VtZW50CnI9dC5oCkEuRGgocixyLCJUIiwicXVlcnlTZWxlY3RvckFsbCIpCnM9 +bmV3IEEud3oocy5xdWVyeVNlbGVjdG9yQWxsKCIubmF2LXBhbmVsIC5uYXYtbGluayIpLHQuUikKcy5L +KHMsbmV3IEEuVlMocCkpCnM9JC5JUgpxPXM9PW51bGw/bnVsbDpBLnl3KHMscC5hKQppZihxPT1udWxs +KXtwPSQuYk4oKQpwLnRvU3RyaW5nCkouZFIocCkuUigwLCJ2aXNpYmxlIil9ZWxzZXtwPSQuYk4oKQpw +LnRvU3RyaW5nCkouZFIocCkuaSgwLCJ2aXNpYmxlIikKQS50YSgkLmMwKCkscS5nTCgpKX19LApBUihh +LGIpe3ZhciBzLHIscT1iLmIKaWYocT09PSQpQS55aygicGFyZW50IikKcz10LmgKcj1zLmEocy5hKGEu +cGFyZW50Tm9kZSkucGFyZW50Tm9kZSkKQS54bihyLnF1ZXJ5U2VsZWN0b3IoIjpzY29wZSA+IC5zdGF0 +dXMtaWNvbiIpLHEpCkEuQVIocixxKX0sCmJMKGEsYil7dmFyIHMscixxLHAsbyxuLG0sbD0iOnNjb3Bl +ID4gLnN0YXR1cy1pY29uIgpmb3Iocz1iLmQscj1zLmxlbmd0aCxxPXQuaCxwPTA7cDxzLmxlbmd0aDtz +Lmxlbmd0aD09PXJ8fCgwLEEubGspKHMpLCsrcCl7bz1zW3BdCmEudG9TdHJpbmcKbj1vLmMKbi50b1N0 +cmluZwptPWEucXVlcnlTZWxlY3RvcignW2RhdGEtbmFtZSo9IicrQS5MaihuKSsnIl0nKQppZihvIGlu +c3RhbmNlb2YgQS52dCl7QS5iTChtLG8pCkEueG4obS5xdWVyeVNlbGVjdG9yKGwpLGIpfWVsc2UgQS54 +bihxLmEobS5wYXJlbnROb2RlKS5xdWVyeVNlbGVjdG9yKGwpLG8pfX0sCkJFKGEsYixjKXt2YXIgcz0i +LnJlZ2lvbnMiLHI9ZG9jdW1lbnQscT1yLnF1ZXJ5U2VsZWN0b3IocykKcS50b1N0cmluZwpyPXIucXVl +cnlTZWxlY3RvcigiLmNvZGUiKQpyLnRvU3RyaW5nCkoudEgocSxiLmEsJC5LRygpKQpKLnRIKHIsYi5i +LCQuS0coKSkKQS5MSChhLGIuZCxjKQppZihiLmMubGVuZ3RoPDJlNSlBLkdnKCkKQS55WCgiLmNvZGUi +LCEwKQpBLnlYKHMsITApfSwKdFgoYTAsYTEsYTIpe3ZhciBzLHIscSxwLG8sbixtLGwsayxqLGksaCxn +LGYsZSxkPSJtYXRlcmlhbC1pY29ucyIsYz0ic3RhdHVzLWljb24iLGI9ZG9jdW1lbnQsYT1iLmNyZWF0 +ZUVsZW1lbnQoInVsIikKYTAuYXBwZW5kQ2hpbGQoYSkKZm9yKHM9YTEubGVuZ3RoLHI9dC5OLHE9dC5a +LHA9MDtwPGExLmxlbmd0aDthMS5sZW5ndGg9PT1zfHwoMCxBLmxrKShhMSksKytwKXtvPWExW3BdCm49 +Yi5jcmVhdGVFbGVtZW50KCJsaSIpCmEuYXBwZW5kQ2hpbGQobikKaWYobyBpbnN0YW5jZW9mIEEudnQp +e209Si5ZRShuKQptLmdQKG4pLmkoMCwiZGlyIikKbD1vLmMKbC50b1N0cmluZwpuLnNldEF0dHJpYnV0 +ZSgiZGF0YS0iK25ldyBBLlN5KG5ldyBBLmk3KG4pKS5PVSgibmFtZSIpLGwpCms9Yi5jcmVhdGVFbGVt +ZW50KCJzcGFuIikKbi5hcHBlbmRDaGlsZChrKQpsPUouWUUoaykKbC5nUChrKS5pKDAsImFycm93IikK +bC5zaGYoaywiJiN4MjVCQzsiKQpqPWIuY3JlYXRlRWxlbWVudCgic3BhbiIpCkouZFIoaikuaSgwLGQp +CmouaW5uZXJUZXh0PSJmb2xkZXJfb3BlbiIKbi5hcHBlbmRDaGlsZChqKQpsPW8uYQpsLnRvU3RyaW5n +Cm4uYXBwZW5kQ2hpbGQoYi5jcmVhdGVUZXh0Tm9kZShsKSkKbD1vLmQKbC50b1N0cmluZwpBLnRYKG4s +bCwhMCkKaT1iLmNyZWF0ZUVsZW1lbnQoInNwYW4iKQpsPUouWUUoaSkKbC5nUChpKS5pKDAsZCkKaS5p +bm5lclRleHQ9ImluZGV0ZXJtaW5hdGVfY2hlY2tfYm94IgpsLmdQKGkpLmkoMCxjKQpBLnhuKGksbykK +bD1sLmdWbChpKQpoPWwuJHRpCmc9aC5DKCJ+KDEpPyIpLmEobmV3IEEuVEQobyxuLGkpKQpxLmEobnVs +bCkKQS5KRShsLmEsbC5iLGcsITEsaC5jKQptLm1LKG4saSxqKQpBLmt6KGspfWVsc2UgaWYobyBpbnN0 +YW5jZW9mIEEuY0Qpe2k9Yi5jcmVhdGVFbGVtZW50KCJzcGFuIikKbT1KLllFKGkpCm0uZ1AoaSkuaSgw +LGQpCmkuaW5uZXJUZXh0PSIiCm0uZ1AoaSkuaSgwLGMpCmw9by53CmwudG9TdHJpbmcKaWYoIWwpbS5n +UChpKS5pKDAsImRpc2FibGVkIikKQS54bihpLG8pCmlmKGwpe209bS5nVmwoaSkKbD1tLiR0aQpoPWwu +QygifigxKT8iKS5hKG5ldyBBLklmKG8saSxuKSkKcS5hKG51bGwpCkEuSkUobS5hLG0uYixoLCExLGwu +Yyl9bi5hcHBlbmRDaGlsZChpKQptPWIuY3JlYXRlRWxlbWVudCgic3BhbiIpCkouZFIobSkuaSgwLGQp +Cm0uaW5uZXJUZXh0PSJpbnNlcnRfZHJpdmVfZmlsZSIKbi5hcHBlbmRDaGlsZChtKQpmPWIuY3JlYXRl +RWxlbWVudCgiYSIpCm4uYXBwZW5kQ2hpbGQoZikKbT1KLllFKGYpCm0uZ1AoZikuaSgwLCJuYXYtbGlu +ayIpCmw9by5jCmwudG9TdHJpbmcKZi5zZXRBdHRyaWJ1dGUoImRhdGEtIituZXcgQS5TeShuZXcgQS5p +NyhmKSkuT1UoIm5hbWUiKSxsKQpsPW8uZApsLnRvU3RyaW5nCmYuc2V0QXR0cmlidXRlKCJocmVmIixB +LlE0KGwsQS5GbChyLHIpKSkKbD1vLmEKbC50b1N0cmluZwpmLmFwcGVuZENoaWxkKGIuY3JlYXRlVGV4 +dE5vZGUobCkpCm09bS5nVmwoZikKbD1tLiR0aQpoPWwuQygifigxKT8iKS5hKG5ldyBBLnRCKCkpCnEu +YShudWxsKQpBLkpFKG0uYSxtLmIsaCwhMSxsLmMpCmw9by5lCmwudG9TdHJpbmcKaWYobD4wKXtlPWIu +Y3JlYXRlRWxlbWVudCgic3BhbiIpCm4uYXBwZW5kQ2hpbGQoZSkKSi5kUihlKS5pKDAsImVkaXQtY291 +bnQiKQppZihsPT09MSltPSJwcm9wb3NlZCBlZGl0IgplbHNlIG09InByb3Bvc2VkIGVkaXRzIgplLnNl +dEF0dHJpYnV0ZSgidGl0bGUiLCIiK2wrIiAiK20pCmUuYXBwZW5kQ2hpbGQoYi5jcmVhdGVUZXh0Tm9k +ZShCLmpuWyJbIl0obCkpKX19fX0sCnV6KGEsYixjKXt2YXIgcz1kb2N1bWVudCxyPXMuY3JlYXRlRWxl +bWVudCgiYnV0dG9uIikscT10LlEscD1xLkMoIn4oMSk/IikuYShuZXcgQS5tMihhLGMpKQp0LlouYShu +dWxsKQpBLkpFKHIsImNsaWNrIixwLCExLHEuYykKcT1BLk9YKGEuYSkKcS50b1N0cmluZwpyLmFwcGVu +ZENoaWxkKHMuY3JlYXRlVGV4dE5vZGUocSkpCmIuYXBwZW5kQ2hpbGQocil9LApGeihhLGIpe3ZhciBz +LHIscSxwLG8sbixtLGwsayxqLGksaD1hLmEKaWYoaD09bnVsbClyZXR1cm4KYi50b1N0cmluZwpzPWRv +Y3VtZW50CnI9cy5jcmVhdGVFbGVtZW50KCJwIikKcT1iLmFwcGVuZENoaWxkKHIpCnI9cy5jcmVhdGVF +bGVtZW50KCJzcGFuIikKcD10LnMKSi5NdShyLEEuUUkoWyJ0eXBlLWRlc2NyaXB0aW9uIl0scCkpCnIu +YXBwZW5kQ2hpbGQocy5jcmVhdGVUZXh0Tm9kZSgiQWN0aW9ucyIpKQpxLmFwcGVuZENoaWxkKHIpCnEu +YXBwZW5kQ2hpbGQocy5jcmVhdGVUZXh0Tm9kZSgiOiIpKQpvPXMuY3JlYXRlRWxlbWVudCgicCIpCmIu +YXBwZW5kQ2hpbGQobykKZm9yKHI9aC5sZW5ndGgsbj10Lk8sbT0wO208aC5sZW5ndGg7aC5sZW5ndGg9 +PT1yfHwoMCxBLmxrKShoKSwrK20pe2w9aFttXQprPXMuY3JlYXRlRWxlbWVudCgiYSIpCm8uYXBwZW5k +Q2hpbGQoaykKaj1sLmEKai50b1N0cmluZwprLmFwcGVuZENoaWxkKHMuY3JlYXRlVGV4dE5vZGUoaikp +Cmo9bC5iCmoudG9TdHJpbmcKay5zZXRBdHRyaWJ1dGUoImhyZWYiLGopCmo9bi5hKEEuUUkoWyJhZGQt +aGludC1saW5rIiwiYmVmb3JlLWFwcGx5IiwiYnV0dG9uIl0scCkpCmk9Si5kUihrKQppLlYxKDApCmku +RlYoMCxqKX19LApDQyhhNCxhNSxhNil7dmFyIHMscixxLHAsbyxuLG0sbCxrLGosaSxoLGcsZixlLGQs +YyxiLGEsYTAsYTEsYTIsYTMKZm9yKHM9YTQuZixyPXMubGVuZ3RoLHE9dC5zLHA9dC5PLG89MDtvPHMu +bGVuZ3RoO3MubGVuZ3RoPT09cnx8KDAsQS5saykocyksKytvKXtuPXNbb10KYTUudG9TdHJpbmcKbT1k +b2N1bWVudApsPW0uY3JlYXRlRWxlbWVudCgicCIpCms9cC5hKEEuUUkoWyJ0cmFjZSJdLHEpKQpqPUou +ZFIobCkKai5WMSgwKQpqLkZWKDAsaykKaT1hNS5hcHBlbmRDaGlsZChsKQpsPW0uY3JlYXRlRWxlbWVu +dCgic3BhbiIpCms9cC5hKEEuUUkoWyJ0eXBlLWRlc2NyaXB0aW9uIl0scSkpCmo9Si5kUihsKQpqLlYx +KDApCmouRlYoMCxrKQprPW4uYQprLnRvU3RyaW5nCmwuYXBwZW5kQ2hpbGQobS5jcmVhdGVUZXh0Tm9k +ZShrKSkKaS5hcHBlbmRDaGlsZChsKQppLmFwcGVuZENoaWxkKG0uY3JlYXRlVGV4dE5vZGUoIjoiKSkK +bD1tLmNyZWF0ZUVsZW1lbnQoInVsIikKaz1wLmEoQS5RSShbInRyYWNlIl0scSkpCmo9Si5kUihsKQpq +LlYxKDApCmouRlYoMCxrKQpoPWkuYXBwZW5kQ2hpbGQobCkKZm9yKGw9bi5iLGs9bC5sZW5ndGgsZz0w +O2c8bC5sZW5ndGg7bC5sZW5ndGg9PT1rfHwoMCxBLmxrKShsKSwrK2cpe2Y9bFtnXQplPW0uY3JlYXRl +RWxlbWVudCgibGkiKQpoLmFwcGVuZENoaWxkKGUpCmQ9bS5jcmVhdGVFbGVtZW50KCJzcGFuIikKYz1w +LmEoQS5RSShbImZ1bmN0aW9uIl0scSkpCmo9Si5kUihkKQpqLlYxKDApCmouRlYoMCxjKQpjPWYuYgpB +LldqKGQsYz09bnVsbD8idW5rbm93biI6YykKZS5hcHBlbmRDaGlsZChkKQpiPWYuYwppZihiIT1udWxs +KXtlLmFwcGVuZENoaWxkKG0uY3JlYXRlVGV4dE5vZGUoIiAoIikpCmE9Yi5iCmEwPW0uY3JlYXRlRWxl +bWVudCgiYSIpCmEwLmFwcGVuZENoaWxkKG0uY3JlYXRlVGV4dE5vZGUoQS5FaihiLmMpKyI6IitBLkVq +KGEpKSkKZD1iLmEKZC50b1N0cmluZwphMC5zZXRBdHRyaWJ1dGUoImhyZWYiLGQpCmEwLmNsYXNzTGlz +dC5hZGQoIm5hdi1saW5rIikKZS5hcHBlbmRDaGlsZChhMCkKZS5hcHBlbmRDaGlsZChtLmNyZWF0ZVRl +eHROb2RlKCIpIikpfWUuYXBwZW5kQ2hpbGQobS5jcmVhdGVUZXh0Tm9kZSgiOiAiKSkKZD1mLmEKQS5X +aihlLGQ9PW51bGw/InVua25vd24iOmQpCmQ9Zi5kCmlmKGQubGVuZ3RoIT09MCl7Yz1tLmNyZWF0ZUVs +ZW1lbnQoInAiKQphMT1wLmEoQS5RSShbImRyYXdlciIsImJlZm9yZS1hcHBseSJdLHEpKQpqPUouZFIo +YykKai5WMSgwKQpqLkZWKDAsYTEpCmEyPWUuYXBwZW5kQ2hpbGQoYykKZm9yKGM9ZC5sZW5ndGgsYTM9 +MDthMzxkLmxlbmd0aDtkLmxlbmd0aD09PWN8fCgwLEEubGspKGQpLCsrYTMpQS51eihkW2EzXSxhMixi +KX19fX0sClVzKGEpe3JldHVybiBCLnhCLnRnKGEsIj8iKT9CLnhCLk5qKGEsMCxCLnhCLk9ZKGEsIj8i +KSk6YX0sClRHKGEsYil7cmV0dXJuIG5ldyBBLlFXKGEsYil9LAp5dyhhLGIpe3ZhciBzLHIscSxwLG8K +Zm9yKHM9YS5sZW5ndGgscj0wO3I8YS5sZW5ndGg7YS5sZW5ndGg9PT1zfHwoMCxBLmxrKShhKSwrK3Ip +e3E9YVtyXQppZihxIGluc3RhbmNlb2YgQS52dCl7cD1xLmQKcC50b1N0cmluZwpvPUEueXcocCxiKQpp +ZihvIT1udWxsKXJldHVybiBvfWVsc2UgaWYocS5jPT09YilyZXR1cm4gcX1yZXR1cm4gbnVsbH0sCldq +KGEsYil7dmFyIHMscixxLHA9QS5RSShiLnNwbGl0KCIuIiksdC5zKSxvPUIuTm0uZ3RIKHApLG49ZG9j +dW1lbnQKYS5hcHBlbmRDaGlsZChuLmNyZWF0ZVRleHROb2RlKG8pKQpmb3Iobz1BLnFDKHAsMSxudWxs +LHQuTikscz1vLiR0aSxvPW5ldyBBLmE3KG8sby5nayhvKSxzLkMoImE3PGFMLkU+IikpLHI9Si5ZRShh +KSxzPXMuQygiYUwuRSIpO28uRygpOyl7cT1vLmQKaWYocT09bnVsbClxPXMuYShxKQpyLm56KGEsImJl +Zm9yZWVuZCIsIiYjODIwMzsuIixudWxsLG51bGwpCmEuYXBwZW5kQ2hpbGQobi5jcmVhdGVUZXh0Tm9k +ZShxKSl9fSwKZTpmdW5jdGlvbiBlKCl7fSwKVlc6ZnVuY3Rpb24gVlcoYSxiLGMpe3RoaXMuYT1hCnRo +aXMuYj1iCnRoaXMuYz1jfSwKb1o6ZnVuY3Rpb24gb1ooKXt9LApqcjpmdW5jdGlvbiBqcigpe30sCnFs +OmZ1bmN0aW9uIHFsKCl7fSwKeTg6ZnVuY3Rpb24geTgoKXt9LApIaTpmdW5jdGlvbiBIaSgpe30sCkJU +OmZ1bmN0aW9uIEJUKCl7fSwKUFk6ZnVuY3Rpb24gUFkoKXt9LApMOmZ1bmN0aW9uIEwoKXt9LApXeDpm +dW5jdGlvbiBXeChhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKSG86ZnVuY3Rpb24gSG8oYSl7dGhpcy5h +PWF9LApJQzpmdW5jdGlvbiBJQyhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKZkM6ZnVuY3Rpb24gZkMo +YSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sClRtOmZ1bmN0aW9uIFRtKCl7fSwKblQ6ZnVuY3Rpb24gblQo +YSxiLGMpe3RoaXMuYT1hCnRoaXMuYj1iCnRoaXMuYz1jfSwKTlk6ZnVuY3Rpb24gTlkoYSl7dGhpcy5h +PWF9LAp1ZTpmdW5jdGlvbiB1ZSgpe30sCkdIOmZ1bmN0aW9uIEdIKCl7fSwKRUU6ZnVuY3Rpb24gRUUo +KXt9LApQTjpmdW5jdGlvbiBQTihhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApRTDpm +dW5jdGlvbiBRTChhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKVlM6ZnVuY3Rpb24gVlMoYSl7dGhpcy5h +PWF9LApURDpmdW5jdGlvbiBURChhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LApJZjpm +dW5jdGlvbiBJZihhLGIsYyl7dGhpcy5hPWEKdGhpcy5iPWIKdGhpcy5jPWN9LAp0QjpmdW5jdGlvbiB0 +Qigpe30sCm0yOmZ1bmN0aW9uIG0yKGEsYil7dGhpcy5hPWEKdGhpcy5iPWJ9LApRVzpmdW5jdGlvbiBR +VyhhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwKWEE6ZnVuY3Rpb24gWEEoKXt9LApacyhhKXt2YXIgcyxy +LHE9Si5VNihhKQppZihBLnAyKEEuayhxLnEoYSwidHlwZSIpKSk9PT1CLlkyKXtzPUEuayhxLnEoYSwi +bmFtZSIpKQpyPUEuayhxLnEoYSwicGF0aCIpKQpxPXEucShhLCJzdWJ0cmVlIikKcT1uZXcgQS52dChx +PT1udWxsP251bGw6QS5tSyh0LlcuYShxKSkscyxyKQpxLkxWKCkKcmV0dXJuIHF9ZWxzZXtzPUEuayhx +LnEoYSwibmFtZSIpKQpyPUEuayhxLnEoYSwicGF0aCIpKQpyZXR1cm4gbmV3IEEuY0QoQS5rKHEucShh +LCJocmVmIikpLEEuVWMocS5xKGEsImVkaXRDb3VudCIpKSxBLk00KHEucShhLCJ3YXNFeHBsaWNpdGx5 +T3B0ZWRPdXQiKSksQS52QihBLlVjKHEucShhLCJtaWdyYXRpb25TdGF0dXMiKSkpLEEuTTQocS5xKGEs +Im1pZ3JhdGlvblN0YXR1c0NhbkJlQ2hhbmdlZCIpKSxzLHIpfX0sCm1LKGEpe3ZhciBzLHI9QS5RSShb +XSx0LmZoKQpmb3Iocz1KLklUKGEpO3MuRygpOylyLnB1c2goQS5acyhzLmdsKCkpKQpyZXR1cm4gcn0s +ClZEKGEpe3ZhciBzLHIscT1BLlFJKFtdLHQuZCkKZm9yKHM9YS5sZW5ndGgscj0wO3I8YS5sZW5ndGg7 +YS5sZW5ndGg9PT1zfHwoMCxBLmxrKShhKSwrK3IpcS5wdXNoKGFbcl0uTHQoKSkKcmV0dXJuIHF9LAp2 +QihhKXtpZihhPT1udWxsKXJldHVybiBudWxsCmlmKGE+Pj4wIT09YXx8YT49NClyZXR1cm4gQS5PSChC +LldHLGEpCnJldHVybiBCLldHW2FdfSwKcDIoYSl7c3dpdGNoKGEpe2Nhc2UiZGlyZWN0b3J5IjpyZXR1 +cm4gQi5ZMgpjYXNlImZpbGUiOnJldHVybiBCLnJmCmRlZmF1bHQ6dGhyb3cgQS5iKEEuUFYoIlVucmVj +b2duaXplZCBuYXZpZ2F0aW9uIHRyZWUgbm9kZSB0eXBlOiAiK0EuRWooYSkpKX19LAp2dDpmdW5jdGlv +biB2dChhLGIsYyl7dmFyIF89dGhpcwpfLmQ9YQpfLmE9YgpfLmI9JApfLmM9Y30sCmNEOmZ1bmN0aW9u +IGNEKGEsYixjLGQsZSxmLGcpe3ZhciBfPXRoaXMKXy5kPWEKXy5lPWIKXy5mPWMKXy5yPWQKXy53PWUK +Xy5hPWYKXy5iPSQKXy5jPWd9LApEODpmdW5jdGlvbiBEOCgpe30sCk85OmZ1bmN0aW9uIE85KGEsYil7 +dGhpcy5hPWEKdGhpcy5iPWJ9LApHYjpmdW5jdGlvbiBHYihhLGIpe3RoaXMuYT1hCnRoaXMuYj1ifSwK +bnooYSl7dmFyIHM9QS5VYyhhLnEoMCwibm9kZUlkIikpCnJldHVybiBuZXcgQS5MTChCLk5tLkh0KEIu +TW0sbmV3IEEuTUQoYSkpLHMpfSwKT1goYSl7c3dpdGNoKGEuYSl7Y2FzZSAwOnJldHVybiJBZGQgLyo/ +Ki8gaGludCIKY2FzZSAxOnJldHVybiJBZGQgLyohKi8gaGludCIKY2FzZSA0OnJldHVybiJSZW1vdmUg +Lyo/Ki8gaGludCIKY2FzZSA1OnJldHVybiJSZW1vdmUgLyohKi8gaGludCIKY2FzZSAyOnJldHVybiJD +aGFuZ2UgdG8gLyo/Ki8gaGludCIKY2FzZSAzOnJldHVybiJDaGFuZ2UgdG8gLyohKi8gaGludCJ9fSwK +TEw6ZnVuY3Rpb24gTEwoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sCk1EOmZ1bmN0aW9uIE1EKGEpe3Ro +aXMuYT1hfSwKSDc6ZnVuY3Rpb24gSDcoYSxiKXt0aGlzLmE9YQp0aGlzLmI9Yn0sCllGKGEsYil7dmFy +IHMscixxLHAsbyxuLG0sbApmb3Iocz1iLmxlbmd0aCxyPTE7cjxzOysrcil7aWYoYltyXT09bnVsbHx8 +YltyLTFdIT1udWxsKWNvbnRpbnVlCmZvcig7cz49MTtzPXEpe3E9cy0xCmlmKGJbcV0hPW51bGwpYnJl +YWt9cD1uZXcgQS5NKCIiKQpvPSIiKyhhKyIoIikKcC5hPW8Kbj1BLnQ2KGIpCm09bi5DKCJuSDwxPiIp +Cmw9bmV3IEEubkgoYiwwLHMsbSkKbC5IZChiLDAscyxuLmMpCm09bytuZXcgQS5sSihsLG0uQygicVUo +YUwuRSkiKS5hKG5ldyBBLk5vKCkpLG0uQygibEo8YUwuRSxxVT4iKSkuSCgwLCIsICIpCnAuYT1tCnAu +YT1tKygiKTogcGFydCAiKyhyLTEpKyIgd2FzIG51bGwsIGJ1dCBwYXJ0ICIrcisiIHdhcyBub3QuIikK +dGhyb3cgQS5iKEEueFkocFsiWyJdKDApLG51bGwpKX19LApsSTpmdW5jdGlvbiBsSShhKXt0aGlzLmE9 +YX0sCnE3OmZ1bmN0aW9uIHE3KCl7fSwKTm86ZnVuY3Rpb24gTm8oKXt9LApmdjpmdW5jdGlvbiBmdigp +e30sCkNMKGEsYil7dmFyIHMscixxLHAsbyxuPWIueFooYSkKYi5oSyhhKQppZihuIT1udWxsKWE9Qi54 +Qi55bihhLG4ubGVuZ3RoKQpzPXQucwpyPUEuUUkoW10scykKcT1BLlFJKFtdLHMpCnM9YS5sZW5ndGgK +aWYocyE9PTAmJmIucjQoQi54Qi5XKGEsMCkpKXtpZigwPj1zKXJldHVybiBBLk9IKGEsMCkKQi5ObS5p +KHEsYVswXSkKcD0xfWVsc2V7Qi5ObS5pKHEsIiIpCnA9MH1mb3Iobz1wO288czsrK28paWYoYi5yNChC +LnhCLlcoYSxvKSkpe0IuTm0uaShyLEIueEIuTmooYSxwLG8pKQpCLk5tLmkocSxhW29dKQpwPW8rMX1p +ZihwPHMpe0IuTm0uaShyLEIueEIueW4oYSxwKSkKQi5ObS5pKHEsIiIpfXJldHVybiBuZXcgQS5XRChi +LG4scixxKX0sCldEOmZ1bmN0aW9uIFdEKGEsYixjLGQpe3ZhciBfPXRoaXMKXy5hPWEKXy5iPWIKXy5k +PWMKXy5lPWR9LApJNyhhKXtyZXR1cm4gbmV3IEEuZHYoYSl9LApkdjpmdW5jdGlvbiBkdihhKXt0aGlz +LmE9YX0sClJoKCl7dmFyIHMscj1udWxsCmlmKEEudW8oKS5nRmkoKSE9PSJmaWxlIilyZXR1cm4gJC5F +YigpCnM9QS51bygpCmlmKCFCLnhCLlRjKHMuZ0lpKHMpLCIvIikpcmV0dXJuICQuRWIoKQppZihBLktM +KHIsImEvYiIscixyLHIscixyKS50NCgpPT09ImFcXGIiKXJldHVybiAkLktrKCkKcmV0dXJuICQuYkQo +KX0sCnpMOmZ1bmN0aW9uIHpMKCl7fSwKT0Y6ZnVuY3Rpb24gT0YoYSxiLGMpe3RoaXMuZD1hCnRoaXMu +ZT1iCnRoaXMuZj1jfSwKcnU6ZnVuY3Rpb24gcnUoYSxiLGMsZCl7dmFyIF89dGhpcwpfLmQ9YQpfLmU9 +YgpfLmY9YwpfLnI9ZH0sCklWOmZ1bmN0aW9uIElWKGEsYixjLGQpe3ZhciBfPXRoaXMKXy5kPWEKXy5l +PWIKXy5mPWMKXy5yPWR9LApSOShhKXtyZXR1cm4gdC53LmIoYSl8fHQuQi5iKGEpfHx0LmR6LmIoYSl8 +fHQueC5iKGEpfHx0LkEuYihhKXx8dC5nNC5iKGEpfHx0LmcyLmIoYSl9LAp5ayhhKXtyZXR1cm4gQS52 +KEEubGEoYSkpfSwKYnQoYSl7cmV0dXJuIEEudihBLlJJKGEpKX0sCnBSKGEpe3JldHVybiBBLnYoQS5q +KGEpKX0sCmFiKCl7dmFyIHMscixxLHAsbz1udWxsCnRyeXtvPUEudW8oKX1jYXRjaChzKXtpZih0Lmc4 +LmIoQS5SdShzKSkpe3I9JC5GZgppZihyIT1udWxsKXJldHVybiByCnRocm93IHN9ZWxzZSB0aHJvdyBz +fWlmKEouUk0obywkLkk2KSl7cj0kLkZmCnIudG9TdHJpbmcKcmV0dXJuIHJ9JC5JNj1vCmlmKCQuSGso +KT09JC5FYigpKXI9JC5GZj1vLlpJKCIuIilbIlsiXSgwKQplbHNle3E9by50NCgpCnA9cS5sZW5ndGgt +MQpyPSQuRmY9cD09PTA/cTpCLnhCLk5qKHEsMCxwKX1yZXR1cm4gcn0sCk9TKGEpe3ZhciBzCmlmKCEo +YT49NjUmJmE8PTkwKSlzPWE+PTk3JiZhPD0xMjIKZWxzZSBzPSEwCnJldHVybiBzfSwKWXUoYSxiKXt2 +YXIgcz1hLmxlbmd0aCxyPWIrMgppZihzPHIpcmV0dXJuITEKaWYoIUEuT1MoQi54Qi5PKGEsYikpKXJl +dHVybiExCmlmKEIueEIuTyhhLGIrMSkhPT01OClyZXR1cm4hMQppZihzPT09cilyZXR1cm4hMApyZXR1 +cm4gQi54Qi5PKGEscik9PT00N319LEo9ewpRdShhLGIsYyxkKXtyZXR1cm57aTphLHA6YixlOmMseDpk +fX0sCmtzKGEpe3ZhciBzLHIscSxwLG8sbj1hW3YuZGlzcGF0Y2hQcm9wZXJ0eU5hbWVdCmlmKG49PW51 +bGwpaWYoJC5Cdj09bnVsbCl7QS5YRCgpCm49YVt2LmRpc3BhdGNoUHJvcGVydHlOYW1lXX1pZihuIT1u +dWxsKXtzPW4ucAppZighMT09PXMpcmV0dXJuIG4uaQppZighMD09PXMpcmV0dXJuIGEKcj1PYmplY3Qu +Z2V0UHJvdG90eXBlT2YoYSkKaWYocz09PXIpcmV0dXJuIG4uaQppZihuLmU9PT1yKXRocm93IEEuYihB +LlNZKCJSZXR1cm4gaW50ZXJjZXB0b3IgZm9yICIrQS5FaihzKGEsbikpKSl9cT1hLmNvbnN0cnVjdG9y +CmlmKHE9PW51bGwpcD1udWxsCmVsc2V7bz0kLnptCmlmKG89PW51bGwpbz0kLnptPXYuZ2V0SXNvbGF0 +ZVRhZygiXyRkYXJ0X2pzIikKcD1xW29dfWlmKHAhPW51bGwpcmV0dXJuIHAKcD1BLnczKGEpCmlmKHAh +PW51bGwpcmV0dXJuIHAKaWYodHlwZW9mIGE9PSJmdW5jdGlvbiIpcmV0dXJuIEIuREcKcz1PYmplY3Qu +Z2V0UHJvdG90eXBlT2YoYSkKaWYocz09bnVsbClyZXR1cm4gQi5aUQppZihzPT09T2JqZWN0LnByb3Rv +dHlwZSlyZXR1cm4gQi5aUQppZih0eXBlb2YgcT09ImZ1bmN0aW9uIil7bz0kLnptCmlmKG89PW51bGwp +bz0kLnptPXYuZ2V0SXNvbGF0ZVRhZygiXyRkYXJ0X2pzIikKT2JqZWN0LmRlZmluZVByb3BlcnR5KHEs +byx7dmFsdWU6Qi52QixlbnVtZXJhYmxlOmZhbHNlLHdyaXRhYmxlOnRydWUsY29uZmlndXJhYmxlOnRy +dWV9KQpyZXR1cm4gQi52Qn1yZXR1cm4gQi52Qn0sClFpKGEsYil7aWYoYTwwfHxhPjQyOTQ5NjcyOTUp +dGhyb3cgQS5iKEEuVEUoYSwwLDQyOTQ5NjcyOTUsImxlbmd0aCIsbnVsbCkpCnJldHVybiBKLnB5KG5l +dyBBcnJheShhKSxiKX0sCktoKGEsYil7aWYoYTwwKXRocm93IEEuYihBLnhZKCJMZW5ndGggbXVzdCBi +ZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyOiAiK2EsbnVsbCkpCnJldHVybiBBLlFJKG5ldyBBcnJheShh +KSxiLkMoImpkPDA+IikpfSwKcHkoYSxiKXtyZXR1cm4gSi5FcChBLlFJKGEsYi5DKCJqZDwwPiIpKSxi +KX0sCkVwKGEsYil7YS5maXhlZCRsZW5ndGg9QXJyYXkKcmV0dXJuIGF9LAp6QyhhKXthLmZpeGVkJGxl +bmd0aD1BcnJheQphLmltbXV0YWJsZSRsaXN0PUFycmF5CnJldHVybiBhfSwKR2EoYSl7aWYoYTwyNTYp +c3dpdGNoKGEpe2Nhc2UgOTpjYXNlIDEwOmNhc2UgMTE6Y2FzZSAxMjpjYXNlIDEzOmNhc2UgMzI6Y2Fz +ZSAxMzM6Y2FzZSAxNjA6cmV0dXJuITAKZGVmYXVsdDpyZXR1cm4hMX1zd2l0Y2goYSl7Y2FzZSA1NzYw +OmNhc2UgODE5MjpjYXNlIDgxOTM6Y2FzZSA4MTk0OmNhc2UgODE5NTpjYXNlIDgxOTY6Y2FzZSA4MTk3 +OmNhc2UgODE5ODpjYXNlIDgxOTk6Y2FzZSA4MjAwOmNhc2UgODIwMTpjYXNlIDgyMDI6Y2FzZSA4MjMy +OmNhc2UgODIzMzpjYXNlIDgyMzk6Y2FzZSA4Mjg3OmNhc2UgMTIyODg6Y2FzZSA2NTI3OTpyZXR1cm4h +MApkZWZhdWx0OnJldHVybiExfX0sCm1tKGEsYil7dmFyIHMscgpmb3Iocz1hLmxlbmd0aDtiPHM7KXty +PUIueEIuVyhhLGIpCmlmKHIhPT0zMiYmciE9PTEzJiYhSi5HYShyKSlicmVhazsrK2J9cmV0dXJuIGJ9 +LApjMShhLGIpe3ZhciBzLHIKZm9yKDtiPjA7Yj1zKXtzPWItMQpyPUIueEIuTyhhLHMpCmlmKHIhPT0z +MiYmciE9PTEzJiYhSi5HYShyKSlicmVha31yZXR1cm4gYn0sClU2KGEpe2lmKHR5cGVvZiBhPT0ic3Ry +aW5nIilyZXR1cm4gSi5Eci5wcm90b3R5cGUKaWYoYT09bnVsbClyZXR1cm4gYQppZihhLmNvbnN0cnVj +dG9yPT1BcnJheSlyZXR1cm4gSi5qZC5wcm90b3R5cGUKaWYodHlwZW9mIGEhPSJvYmplY3QiKXtpZih0 +eXBlb2YgYT09ImZ1bmN0aW9uIilyZXR1cm4gSi5jNS5wcm90b3R5cGUKcmV0dXJuIGF9aWYoYSBpbnN0 +YW5jZW9mIEEuTWgpcmV0dXJuIGEKcmV0dXJuIEoua3MoYSl9LApZRShhKXtpZihhPT1udWxsKXJldHVy +biBhCmlmKHR5cGVvZiBhIT0ib2JqZWN0Iil7aWYodHlwZW9mIGE9PSJmdW5jdGlvbiIpcmV0dXJuIEou +YzUucHJvdG90eXBlCnJldHVybiBhfWlmKGEgaW5zdGFuY2VvZiBBLk1oKXJldHVybiBhCnJldHVybiBK +LmtzKGEpfSwKaWEoYSl7aWYodHlwZW9mIGE9PSJudW1iZXIiKXtpZihNYXRoLmZsb29yKGEpPT1hKXJl +dHVybiBKLkw3LnByb3RvdHlwZQpyZXR1cm4gSi5rRC5wcm90b3R5cGV9aWYodHlwZW9mIGE9PSJzdHJp +bmciKXJldHVybiBKLkRyLnByb3RvdHlwZQppZihhPT1udWxsKXJldHVybiBKLndlLnByb3RvdHlwZQpp +Zih0eXBlb2YgYT09ImJvb2xlYW4iKXJldHVybiBKLnlFLnByb3RvdHlwZQppZihhLmNvbnN0cnVjdG9y +PT1BcnJheSlyZXR1cm4gSi5qZC5wcm90b3R5cGUKaWYodHlwZW9mIGEhPSJvYmplY3QiKXtpZih0eXBl +b2YgYT09ImZ1bmN0aW9uIilyZXR1cm4gSi5jNS5wcm90b3R5cGUKcmV0dXJuIGF9aWYoYSBpbnN0YW5j +ZW9mIEEuTWgpcmV0dXJuIGEKcmV0dXJuIEoua3MoYSl9LApyWShhKXtpZih0eXBlb2YgYT09InN0cmlu +ZyIpcmV0dXJuIEouRHIucHJvdG90eXBlCmlmKGE9PW51bGwpcmV0dXJuIGEKaWYoIShhIGluc3RhbmNl +b2YgQS5NaCkpcmV0dXJuIEoua2QucHJvdG90eXBlCnJldHVybiBhfSwKdzEoYSl7aWYoYT09bnVsbCly +ZXR1cm4gYQppZihhLmNvbnN0cnVjdG9yPT1BcnJheSlyZXR1cm4gSi5qZC5wcm90b3R5cGUKaWYodHlw +ZW9mIGEhPSJvYmplY3QiKXtpZih0eXBlb2YgYT09ImZ1bmN0aW9uIilyZXR1cm4gSi5jNS5wcm90b3R5 +cGUKcmV0dXJuIGF9aWYoYSBpbnN0YW5jZW9mIEEuTWgpcmV0dXJuIGEKcmV0dXJuIEoua3MoYSl9LApB +NShhLGIpe3JldHVybiBKLncxKGEpLmVSKGEsYil9LApFaChhLGIsYyl7cmV0dXJuIEouWUUoYSkubUso +YSxiLGMpfSwKRWwoYSxiKXtyZXR1cm4gSi53MShhKS5kcihhLGIpfSwKRjcoYSl7cmV0dXJuIEouVTYo +YSkuZ29yKGEpfSwKRkwoYSxiKXtyZXR1cm4gSi5yWShhKS5kZChhLGIpfSwKR0EoYSxiKXtyZXR1cm4g +Si53MShhKS5FKGEsYil9LApIbShhKXtyZXR1cm4gSi5VNihhKS5nayhhKX0sCklUKGEpe3JldHVybiBK +LncxKGEpLmdBKGEpfSwKSnkoYSxiKXtyZXR1cm4gSi5pYShhKS5lNyhhLGIpfSwKTHQoYSl7cmV0dXJu +IEouWUUoYSkuekIoYSl9LApNMShhLGIsYyl7cmV0dXJuIEoudzEoYSkuRTIoYSxiLGMpfSwKTXUoYSxi +KXtyZXR1cm4gSi5ZRShhKS5zUChhLGIpfSwKUk0oYSxiKXtpZihhPT1udWxsKXJldHVybiBiPT1udWxs +CmlmKHR5cGVvZiBhIT0ib2JqZWN0IilyZXR1cm4gYiE9bnVsbCYmYT09PWIKcmV0dXJuIEouaWEoYSku +RE4oYSxiKX0sClJYKGEpe3JldHVybiBKLncxKGEpLmJyKGEpfSwKVDAoYSl7cmV0dXJuIEouclkoYSku +YlMoYSl9LApVMyhhKXtyZXR1cm4gSi5pYShhKS5nbShhKX0sCllTKGEpe3JldHVybiBKLmlhKGEpWyJb +Il0oYSl9LAphNihhLGIpe3JldHVybiBKLnJZKGEpLk8oYSxiKX0sCmJUKGEpe3JldHVybiBKLllFKGEp +LkQ0KGEpfSwKY0goYSl7cmV0dXJuIEouclkoYSkuaGMoYSl9LApkUihhKXtyZXR1cm4gSi5ZRShhKS5n +UChhKX0sCmRaKGEsYixjLGQpe3JldHVybiBKLllFKGEpLk9uKGEsYixjLGQpfSwKZGgoYSl7cmV0dXJu +IEouWUUoYSkuRkYoYSl9LApkcihhLGIpe3JldHVybiBKLllFKGEpLnNhNChhLGIpfSwKaWcoYSl7cmV0 +dXJuIEouWUUoYSkuZ1FnKGEpfSwKbDUoYSxiKXtyZXR1cm4gSi5ZRShhKS5zaGYoYSxiKX0sCnFGKGEp +e3JldHVybiBKLllFKGEpLmdWbChhKX0sCnRIKGEsYixjKXtyZXR1cm4gSi5ZRShhKS5wayhhLGIsYyl9 +LAp1OShhLGIsYyl7cmV0dXJuIEoudzEoYSkuWTUoYSxiLGMpfSwKdVUoYSl7cmV0dXJuIEouVTYoYSku +Z2wwKGEpfSwKd2YoYSxiKXtyZXR1cm4gSi5ZRShhKS5zUk4oYSxiKX0sCng5KGEsYil7aWYodHlwZW9m +IGI9PT0ibnVtYmVyIilpZihhLmNvbnN0cnVjdG9yPT1BcnJheXx8dHlwZW9mIGE9PSJzdHJpbmcifHxB +LndWKGEsYVt2LmRpc3BhdGNoUHJvcGVydHlOYW1lXSkpaWYoYj4+PjA9PT1iJiZiPGEubGVuZ3RoKXJl +dHVybiBhW2JdCnJldHVybiBKLlU2KGEpLnEoYSxiKX0sCnpsKGEsYil7cmV0dXJuIEouVTYoYSkudGco +YSxiKX0sCkd2OmZ1bmN0aW9uIEd2KCl7fSwKeUU6ZnVuY3Rpb24geUUoKXt9LAp3ZTpmdW5jdGlvbiB3 +ZSgpe30sCk1GOmZ1bmN0aW9uIE1GKCl7fSwKdTA6ZnVuY3Rpb24gdTAoKXt9LAppQzpmdW5jdGlvbiBp +Qygpe30sCmtkOmZ1bmN0aW9uIGtkKCl7fSwKYzU6ZnVuY3Rpb24gYzUoKXt9LApqZDpmdW5jdGlvbiBq +ZChhKXt0aGlzLiR0aT1hfSwKUG86ZnVuY3Rpb24gUG8oYSl7dGhpcy4kdGk9YX0sCm0xOmZ1bmN0aW9u +IG0xKGEsYixjKXt2YXIgXz10aGlzCl8uYT1hCl8uYj1iCl8uYz0wCl8uZD1udWxsCl8uJHRpPWN9LApx +STpmdW5jdGlvbiBxSSgpe30sCkw3OmZ1bmN0aW9uIEw3KCl7fSwKa0Q6ZnVuY3Rpb24ga0QoKXt9LApE +cjpmdW5jdGlvbiBEcigpe319LEI9e30KdmFyIHc9W0EsSixCXQp2YXIgJD17fQpBLkZLLnByb3RvdHlw +ZT17fQpKLkd2LnByb3RvdHlwZT17CkROKGEsYil7cmV0dXJuIGE9PT1ifSwKZ20oYSl7cmV0dXJuIEEu +ZVEoYSl9LAoiWyIoYSl7cmV0dXJuIkluc3RhbmNlIG9mICciK0EubGgoYSkrIicifSwKZTcoYSxiKXt0 +Lm8uYShiKQp0aHJvdyBBLmIoQS5scihhLGIuZ1dhKCksYi5nbmQoKSxiLmdWbSgpKSl9fQpKLnlFLnBy +b3RvdHlwZT17CiJbIihhKXtyZXR1cm4gU3RyaW5nKGEpfSwKZ20oYSl7cmV0dXJuIGE/NTE5MDE4OjIx +ODE1OX0sCiRpYTI6MX0KSi53ZS5wcm90b3R5cGU9ewpETihhLGIpe3JldHVybiBudWxsPT1ifSwKIlsi +KGEpe3JldHVybiJudWxsIn0sCmdtKGEpe3JldHVybiAwfSwKJGljODoxfQpKLk1GLnByb3RvdHlwZT17 +fQpKLnUwLnByb3RvdHlwZT17CmdtKGEpe3JldHVybiAwfSwKIlsiKGEpe3JldHVybiBTdHJpbmcoYSl9 +LAokaXZtOjF9CkouaUMucHJvdG90eXBlPXt9Ckoua2QucHJvdG90eXBlPXt9CkouYzUucHJvdG90eXBl +PXsKIlsiKGEpe3ZhciBzPWFbJC53KCldCmlmKHM9PW51bGwpcmV0dXJuIHRoaXMudShhKQpyZXR1cm4i +SmF2YVNjcmlwdCBmdW5jdGlvbiBmb3IgIitBLkVqKEouWVMocykpfSwKJGlFSDoxfQpKLmpkLnByb3Rv +dHlwZT17CmRyKGEsYil7cmV0dXJuIG5ldyBBLmpWKGEsQS50NihhKS5DKCJAPDE+IikuS3EoYikuQygi +alY8MSwyPiIpKX0sCmkoYSxiKXtBLnQ2KGEpLmMuYShiKQppZighIWEuZml4ZWQkbGVuZ3RoKUEudihB +Lkw0KCJhZGQiKSkKYS5wdXNoKGIpfSwKVzQoYSxiKXt2YXIgcwppZighIWEuZml4ZWQkbGVuZ3RoKUEu +dihBLkw0KCJyZW1vdmVBdCIpKQpzPWEubGVuZ3RoCmlmKGI+PXMpdGhyb3cgQS5iKEEuTzcoYixudWxs +KSkKcmV0dXJuIGEuc3BsaWNlKGIsMSlbMF19LApVRyhhLGIsYyl7dmFyIHMscgpBLnQ2KGEpLkMoImNY +PDE+IikuYShjKQppZighIWEuZml4ZWQkbGVuZ3RoKUEudihBLkw0KCJpbnNlcnRBbGwiKSkKQS53QShi +LDAsYS5sZW5ndGgsImluZGV4IikKaWYoIXQuVS5iKGMpKWM9Si5SWChjKQpzPUouSG0oYykKYS5sZW5n +dGg9YS5sZW5ndGgrcwpyPWIrcwp0aGlzLllXKGEscixhLmxlbmd0aCxhLGIpCnRoaXMudmcoYSxiLHIs +Yyl9LApGVihhLGIpe3ZhciBzCkEudDYoYSkuQygiY1g8MT4iKS5hKGIpCmlmKCEhYS5maXhlZCRsZW5n +dGgpQS52KEEuTDQoImFkZEFsbCIpKQppZihBcnJheS5pc0FycmF5KGIpKXt0aGlzLktoKGEsYikKcmV0 +dXJufWZvcihzPUouSVQoYik7cy5HKCk7KWEucHVzaChzLmdsKCkpfSwKS2goYSxiKXt2YXIgcyxyCnQu +Yi5hKGIpCnM9Yi5sZW5ndGgKaWYocz09PTApcmV0dXJuCmlmKGE9PT1iKXRocm93IEEuYihBLmE0KGEp +KQpmb3Iocj0wO3I8czsrK3IpYS5wdXNoKGJbcl0pfSwKVjEoYSl7aWYoISFhLmZpeGVkJGxlbmd0aClB +LnYoQS5MNCgiY2xlYXIiKSkKYS5sZW5ndGg9MH0sCkUyKGEsYixjKXt2YXIgcz1BLnQ2KGEpCnJldHVy +biBuZXcgQS5sSihhLHMuS3EoYykuQygiMSgyKSIpLmEoYikscy5DKCJAPDE+IikuS3EoYykuQygibEo8 +MSwyPiIpKX0sCkgoYSxiKXt2YXIgcyxyPUEuTzgoYS5sZW5ndGgsIiIsITEsdC5OKQpmb3Iocz0wO3M8 +YS5sZW5ndGg7KytzKXRoaXMuWTUocixzLEEuRWooYVtzXSkpCnJldHVybiByLmpvaW4oYil9LAplUihh +LGIpe3JldHVybiBBLnFDKGEsYixudWxsLEEudDYoYSkuYyl9LApOMChhLGIsYyxkKXt2YXIgcyxyLHEK +ZC5hKGIpCkEudDYoYSkuS3EoZCkuQygiMSgxLDIpIikuYShjKQpzPWEubGVuZ3RoCmZvcihyPWIscT0w +O3E8czsrK3Epe3I9Yy4kMihyLGFbcV0pCmlmKGEubGVuZ3RoIT09cyl0aHJvdyBBLmIoQS5hNChhKSl9 +cmV0dXJuIHJ9LApIdChhLGIpe3ZhciBzLHIscSxwLG8sbj1BLnQ2KGEpCm4uQygiYTIoMSkiKS5hKGIp +CnM9YS5sZW5ndGgKZm9yKHI9bnVsbCxxPSExLHA9MDtwPHM7KytwKXtvPWFbcF0KaWYoQS5vVChiLiQx +KG8pKSl7aWYocSl0aHJvdyBBLmIoQS5BbSgpKQpyPW8KcT0hMH1pZihzIT09YS5sZW5ndGgpdGhyb3cg +QS5iKEEuYTQoYSkpfWlmKHEpcmV0dXJuIHI9PW51bGw/bi5jLmEocik6cgp0aHJvdyBBLmIoQS5XcCgp +KX0sCkUoYSxiKXtpZighKGI+PTAmJmI8YS5sZW5ndGgpKXJldHVybiBBLk9IKGEsYikKcmV0dXJuIGFb +Yl19LApndEgoYSl7aWYoYS5sZW5ndGg+MClyZXR1cm4gYVswXQp0aHJvdyBBLmIoQS5XcCgpKX0sCmdy +WihhKXt2YXIgcz1hLmxlbmd0aAppZihzPjApcmV0dXJuIGFbcy0xXQp0aHJvdyBBLmIoQS5XcCgpKX0s +CllXKGEsYixjLGQsZSl7dmFyIHMscixxLHAsbwpBLnQ2KGEpLkMoImNYPDE+IikuYShkKQppZighIWEu +aW1tdXRhYmxlJGxpc3QpQS52KEEuTDQoInNldFJhbmdlIikpCkEuakIoYixjLGEubGVuZ3RoKQpzPWMt +YgppZihzPT09MClyZXR1cm4KQS5rMShlLCJza2lwQ291bnQiKQppZih0LmouYihkKSl7cj1kCnE9ZX1l +bHNle3I9Si5BNShkLGUpLnR0KDAsITEpCnE9MH1wPUouVTYocikKaWYocStzPnAuZ2socikpdGhyb3cg +QS5iKEEuYXIoKSkKaWYocTxiKWZvcihvPXMtMTtvPj0wOy0tbylhW2Irb109cC5xKHIscStvKQplbHNl +IGZvcihvPTA7bzxzOysrbylhW2Irb109cC5xKHIscStvKX0sCnZnKGEsYixjLGQpe3JldHVybiB0aGlz +LllXKGEsYixjLGQsMCl9LApWcihhLGIpe3ZhciBzLHIKQS50NihhKS5DKCJhMigxKSIpLmEoYikKcz1h +Lmxlbmd0aApmb3Iocj0wO3I8czsrK3Ipe2lmKEEub1QoYi4kMShhW3JdKSkpcmV0dXJuITAKaWYoYS5s +ZW5ndGghPT1zKXRocm93IEEuYihBLmE0KGEpKX1yZXR1cm4hMX0sCnRnKGEsYil7dmFyIHMKZm9yKHM9 +MDtzPGEubGVuZ3RoOysrcylpZihKLlJNKGFbc10sYikpcmV0dXJuITAKcmV0dXJuITF9LApnbDAoYSl7 +cmV0dXJuIGEubGVuZ3RoPT09MH0sCmdvcihhKXtyZXR1cm4gYS5sZW5ndGghPT0wfSwKIlsiKGEpe3Jl +dHVybiBBLngoYSwiWyIsIl0iKX0sCnR0KGEsYil7dmFyIHM9QS5RSShhLnNsaWNlKDApLEEudDYoYSkp +CnJldHVybiBzfSwKYnIoYSl7cmV0dXJuIHRoaXMudHQoYSwhMCl9LApnQShhKXtyZXR1cm4gbmV3IEou +bTEoYSxhLmxlbmd0aCxBLnQ2KGEpLkMoIm0xPDE+IikpfSwKZ20oYSl7cmV0dXJuIEEuZVEoYSl9LApn +ayhhKXtyZXR1cm4gYS5sZW5ndGh9LApxKGEsYil7QS5JWihiKQppZighKGI+PTAmJmI8YS5sZW5ndGgp +KXRocm93IEEuYihBLnUoYSxiKSkKcmV0dXJuIGFbYl19LApZNShhLGIsYyl7QS50NihhKS5jLmEoYykK +aWYoISFhLmltbXV0YWJsZSRsaXN0KUEudihBLkw0KCJpbmRleGVkIHNldCIpKQppZighKGI+PTAmJmI8 +YS5sZW5ndGgpKXRocm93IEEuYihBLnUoYSxiKSkKYVtiXT1jfSwKJGliUToxLAokaWNYOjEsCiRpek06 +MX0KSi5Qby5wcm90b3R5cGU9e30KSi5tMS5wcm90b3R5cGU9ewpnbCgpe3ZhciBzPXRoaXMuZApyZXR1 +cm4gcz09bnVsbD90aGlzLiR0aS5jLmEocyk6c30sCkcoKXt2YXIgcyxyPXRoaXMscT1yLmEscD1xLmxl +bmd0aAppZihyLmIhPT1wKXRocm93IEEuYihBLmxrKHEpKQpzPXIuYwppZihzPj1wKXtyLnNGKG51bGwp +CnJldHVybiExfXIuc0YocVtzXSk7KytyLmMKcmV0dXJuITB9LApzRihhKXt0aGlzLmQ9dGhpcy4kdGku +QygiMT8iKS5hKGEpfSwKJGlBbjoxfQpKLnFJLnByb3RvdHlwZT17CnpRKGEpe2lmKGE+MCl7aWYoYSE9 +PTEvMClyZXR1cm4gTWF0aC5yb3VuZChhKX1lbHNlIGlmKGE+LTEvMClyZXR1cm4gMC1NYXRoLnJvdW5k +KDAtYSkKdGhyb3cgQS5iKEEuTDQoIiIrYSsiLnJvdW5kKCkiKSl9LAoiWyIoYSl7aWYoYT09PTAmJjEv +YTwwKXJldHVybiItMC4wIgplbHNlIHJldHVybiIiK2F9LApnbShhKXt2YXIgcyxyLHEscCxvPWF8MApp +ZihhPT09bylyZXR1cm4gbyY1MzY4NzA5MTEKcz1NYXRoLmFicyhhKQpyPU1hdGgubG9nKHMpLzAuNjkz +MTQ3MTgwNTU5OTQ1M3wwCnE9TWF0aC5wb3coMixyKQpwPXM8MT9zL3E6cS9zCnJldHVybigocCo5MDA3 +MTk5MjU0NzQwOTkyfDApKyhwKjM1NDIyNDMxODExNzY1MjF8MCkpKjU5OTE5NytyKjEyNTkmNTM2ODcw +OTExfSwKelkoYSxiKXt2YXIgcz1hJWIKaWYocz09PTApcmV0dXJuIDAKaWYocz4wKXJldHVybiBzCnJl +dHVybiBzK2J9LApCVShhLGIpe3JldHVybihhfDApPT09YT9hL2J8MDp0aGlzLkRKKGEsYil9LApESihh +LGIpe3ZhciBzPWEvYgppZihzPj0tMjE0NzQ4MzY0OCYmczw9MjE0NzQ4MzY0NylyZXR1cm4gc3wwCmlm +KHM+MCl7aWYocyE9PTEvMClyZXR1cm4gTWF0aC5mbG9vcihzKX1lbHNlIGlmKHM+LTEvMClyZXR1cm4g +TWF0aC5jZWlsKHMpCnRocm93IEEuYihBLkw0KCJSZXN1bHQgb2YgdHJ1bmNhdGluZyBkaXZpc2lvbiBp +cyAiK0EuRWoocykrIjogIitBLkVqKGEpKyIgfi8gIitiKSl9LAp3RyhhLGIpe3ZhciBzCmlmKGE+MClz +PXRoaXMuVWgoYSxiKQplbHNle3M9Yj4zMT8zMTpiCnM9YT4+cz4+PjB9cmV0dXJuIHN9LApiZihhLGIp +e2lmKDA+Yil0aHJvdyBBLmIoQS50TChiKSkKcmV0dXJuIHRoaXMuVWgoYSxiKX0sClVoKGEsYil7cmV0 +dXJuIGI+MzE/MDphPj4+Yn0sCiRpQ1A6MSwKJGlaWjoxfQpKLkw3LnByb3RvdHlwZT17JGlJajoxfQpK +LmtELnByb3RvdHlwZT17fQpKLkRyLnByb3RvdHlwZT17Ck8oYSxiKXtpZihiPDApdGhyb3cgQS5iKEEu +dShhLGIpKQppZihiPj1hLmxlbmd0aClBLnYoQS51KGEsYikpCnJldHVybiBhLmNoYXJDb2RlQXQoYil9 +LApXKGEsYil7aWYoYj49YS5sZW5ndGgpdGhyb3cgQS5iKEEudShhLGIpKQpyZXR1cm4gYS5jaGFyQ29k +ZUF0KGIpfSwKZGQoYSxiKXtyZXR1cm4gbmV3IEEudW4oYixhLDApfSwKaChhLGIpe3JldHVybiBhK2J9 +LApUYyhhLGIpe3ZhciBzPWIubGVuZ3RoLHI9YS5sZW5ndGgKaWYocz5yKXJldHVybiExCnJldHVybiBi +PT09dGhpcy55bihhLHItcyl9LAppNyhhLGIsYyxkKXt2YXIgcz1BLmpCKGIsYyxhLmxlbmd0aCkKcmV0 +dXJuIGEuc3Vic3RyaW5nKDAsYikrZCthLnN1YnN0cmluZyhzKX0sClFpKGEsYixjKXt2YXIgcwppZihj +PDB8fGM+YS5sZW5ndGgpdGhyb3cgQS5iKEEuVEUoYywwLGEubGVuZ3RoLG51bGwsbnVsbCkpCnM9Yyti +Lmxlbmd0aAppZihzPmEubGVuZ3RoKXJldHVybiExCnJldHVybiBiPT09YS5zdWJzdHJpbmcoYyxzKX0s +Cm4oYSxiKXtyZXR1cm4gdGhpcy5RaShhLGIsMCl9LApOaihhLGIsYyl7cmV0dXJuIGEuc3Vic3RyaW5n +KGIsQS5qQihiLGMsYS5sZW5ndGgpKX0sCnluKGEsYil7cmV0dXJuIHRoaXMuTmooYSxiLG51bGwpfSwK +aGMoYSl7cmV0dXJuIGEudG9Mb3dlckNhc2UoKX0sCmJTKGEpe3ZhciBzLHIscSxwPWEudHJpbSgpLG89 +cC5sZW5ndGgKaWYobz09PTApcmV0dXJuIHAKaWYodGhpcy5XKHAsMCk9PT0xMzMpe3M9Si5tbShwLDEp +CmlmKHM9PT1vKXJldHVybiIifWVsc2Ugcz0wCnI9by0xCnE9dGhpcy5PKHAscik9PT0xMzM/Si5jMShw +LHIpOm8KaWYocz09PTAmJnE9PT1vKXJldHVybiBwCnJldHVybiBwLnN1YnN0cmluZyhzLHEpfSwKSXgo +YSxiKXt2YXIgcyxyCmlmKDA+PWIpcmV0dXJuIiIKaWYoYj09PTF8fGEubGVuZ3RoPT09MClyZXR1cm4g +YQppZihiIT09Yj4+PjApdGhyb3cgQS5iKEIuRXEpCmZvcihzPWEscj0iIjshMDspe2lmKChiJjEpPT09 +MSlyPXMrcgpiPWI+Pj4xCmlmKGI9PT0wKWJyZWFrCnMrPXN9cmV0dXJuIHJ9LApYVShhLGIsYyl7dmFy +IHMKaWYoYzwwfHxjPmEubGVuZ3RoKXRocm93IEEuYihBLlRFKGMsMCxhLmxlbmd0aCxudWxsLG51bGwp +KQpzPWEuaW5kZXhPZihiLGMpCnJldHVybiBzfSwKT1koYSxiKXtyZXR1cm4gdGhpcy5YVShhLGIsMCl9 +LApQayhhLGIsYyl7dmFyIHMscgppZihjPT1udWxsKWM9YS5sZW5ndGgKZWxzZSBpZihjPDB8fGM+YS5s +ZW5ndGgpdGhyb3cgQS5iKEEuVEUoYywwLGEubGVuZ3RoLG51bGwsbnVsbCkpCnM9Yi5sZW5ndGgKcj1h +Lmxlbmd0aAppZihjK3M+ciljPXItcwpyZXR1cm4gYS5sYXN0SW5kZXhPZihiLGMpfSwKY24oYSxiKXty +ZXR1cm4gdGhpcy5QayhhLGIsbnVsbCl9LApJcyhhLGIsYyl7dmFyIHM9YS5sZW5ndGgKaWYoYz5zKXRo +cm93IEEuYihBLlRFKGMsMCxzLG51bGwsbnVsbCkpCnJldHVybiBBLlNRKGEsYixjKX0sCnRnKGEsYil7 +cmV0dXJuIHRoaXMuSXMoYSxiLDApfSwKIlsiKGEpe3JldHVybiBhfSwKZ20oYSl7dmFyIHMscixxCmZv +cihzPWEubGVuZ3RoLHI9MCxxPTA7cTxzOysrcSl7cj1yK2EuY2hhckNvZGVBdChxKSY1MzY4NzA5MTEK +cj1yKygociY1MjQyODcpPDwxMCkmNTM2ODcwOTExCnJePXI+PjZ9cj1yKygociY2NzEwODg2Myk8PDMp +JjUzNjg3MDkxMQpyXj1yPj4xMQpyZXR1cm4gcisoKHImMTYzODMpPDwxNSkmNTM2ODcwOTExfSwKZ2so +YSl7cmV0dXJuIGEubGVuZ3RofSwKcShhLGIpe0EuSVooYikKaWYoYj49YS5sZW5ndGgpdGhyb3cgQS5i +KEEudShhLGIpKQpyZXR1cm4gYVtiXX0sCiRpdlg6MSwKJGlxVToxfQpBLkJSLnByb3RvdHlwZT17CmdB +KGEpe3ZhciBzPUEuTGgodGhpcykKcmV0dXJuIG5ldyBBLmVUKEouSVQodGhpcy5nT04oKSkscy5DKCJA +PDE+IikuS3Eocy56WzFdKS5DKCJlVDwxLDI+IikpfSwKZ2soYSl7cmV0dXJuIEouSG0odGhpcy5nT04o +KSl9LApnbDAoYSl7cmV0dXJuIEoudVUodGhpcy5nT04oKSl9LApnb3IoYSl7cmV0dXJuIEouRjcodGhp +cy5nT04oKSl9LAplUihhLGIpe3ZhciBzPUEuTGgodGhpcykKcmV0dXJuIEEuR0ooSi5BNSh0aGlzLmdP +TigpLGIpLHMuYyxzLnpbMV0pfSwKRShhLGIpe3JldHVybiBBLkxoKHRoaXMpLnpbMV0uYShKLkdBKHRo +aXMuZ09OKCksYikpfSwKIlsiKGEpe3JldHVybiBKLllTKHRoaXMuZ09OKCkpfX0KQS5lVC5wcm90b3R5 +cGU9ewpHKCl7cmV0dXJuIHRoaXMuYS5HKCl9LApnbCgpe3JldHVybiB0aGlzLiR0aS56WzFdLmEodGhp +cy5hLmdsKCkpfSwKJGlBbjoxfQpBLlp5LnByb3RvdHlwZT17CmdPTigpe3JldHVybiB0aGlzLmF9fQpB +Lm9sLnByb3RvdHlwZT17JGliUToxfQpBLlVxLnByb3RvdHlwZT17CnEoYSxiKXtyZXR1cm4gdGhpcy4k +dGkuelsxXS5hKEoueDkodGhpcy5hLEEuSVooYikpKX0sClk1KGEsYixjKXt2YXIgcz10aGlzLiR0aQpK +LnU5KHRoaXMuYSxiLHMuYy5hKHMuelsxXS5hKGMpKSl9LAokaWJROjEsCiRpek06MX0KQS5qVi5wcm90 +b3R5cGU9ewpkcihhLGIpe3JldHVybiBuZXcgQS5qVih0aGlzLmEsdGhpcy4kdGkuQygiQDwxPiIpLktx +KGIpLkMoImpWPDEsMj4iKSl9LApnT04oKXtyZXR1cm4gdGhpcy5hfX0KQS5jLnByb3RvdHlwZT17CiJb +IihhKXtyZXR1cm4iTGF0ZUluaXRpYWxpemF0aW9uRXJyb3I6ICIrdGhpcy5hfX0KQS5xai5wcm90b3R5 +cGU9ewpnayhhKXtyZXR1cm4gdGhpcy5hLmxlbmd0aH0sCnEoYSxiKXtyZXR1cm4gQi54Qi5PKHRoaXMu +YSxBLklaKGIpKX19CkEuSGIucHJvdG90eXBlPXt9CkEuYlEucHJvdG90eXBlPXt9CkEuYUwucHJvdG90 +eXBlPXsKZ0EoYSl7dmFyIHM9dGhpcwpyZXR1cm4gbmV3IEEuYTcocyxzLmdrKHMpLEEuTGgocykuQygi +YTc8YUwuRT4iKSl9LApnbDAoYSl7cmV0dXJuIHRoaXMuZ2sodGhpcyk9PT0wfSwKSChhLGIpe3ZhciBz +LHIscSxwPXRoaXMsbz1wLmdrKHApCmlmKGIubGVuZ3RoIT09MCl7aWYobz09PTApcmV0dXJuIiIKcz1B +LkVqKHAuRSgwLDApKQppZihvIT09cC5nayhwKSl0aHJvdyBBLmIoQS5hNChwKSkKZm9yKHI9cyxxPTE7 +cTxvOysrcSl7cj1yK2IrQS5FaihwLkUoMCxxKSkKaWYobyE9PXAuZ2socCkpdGhyb3cgQS5iKEEuYTQo +cCkpfXJldHVybiByLmNoYXJDb2RlQXQoMCk9PTA/cjpyfWVsc2V7Zm9yKHE9MCxyPSIiO3E8bzsrK3Ep +e3IrPUEuRWoocC5FKDAscSkpCmlmKG8hPT1wLmdrKHApKXRocm93IEEuYihBLmE0KHApKX1yZXR1cm4g +ci5jaGFyQ29kZUF0KDApPT0wP3I6cn19LApldihhLGIpe3JldHVybiB0aGlzLkdHKDAsQS5MaCh0aGlz +KS5DKCJhMihhTC5FKSIpLmEoYikpfSwKRTIoYSxiLGMpe3ZhciBzPUEuTGgodGhpcykKcmV0dXJuIG5l +dyBBLmxKKHRoaXMscy5LcShjKS5DKCIxKGFMLkUpIikuYShiKSxzLkMoIkA8YUwuRT4iKS5LcShjKS5D +KCJsSjwxLDI+IikpfSwKTjAoYSxiLGMsZCl7dmFyIHMscixxLHA9dGhpcwpkLmEoYikKQS5MaChwKS5L +cShkKS5DKCIxKDEsYUwuRSkiKS5hKGMpCnM9cC5nayhwKQpmb3Iocj1iLHE9MDtxPHM7KytxKXtyPWMu +JDIocixwLkUoMCxxKSkKaWYocyE9PXAuZ2socCkpdGhyb3cgQS5iKEEuYTQocCkpfXJldHVybiByfSwK +ZVIoYSxiKXtyZXR1cm4gQS5xQyh0aGlzLGIsbnVsbCxBLkxoKHRoaXMpLkMoImFMLkUiKSl9LAp0dChh +LGIpe3JldHVybiBBLlkxKHRoaXMsITAsQS5MaCh0aGlzKS5DKCJhTC5FIikpfSwKYnIoYSl7cmV0dXJu +IHRoaXMudHQoYSwhMCl9fQpBLm5ILnByb3RvdHlwZT17CkhkKGEsYixjLGQpe3ZhciBzLHI9dGhpcy5i +CkEuazEociwic3RhcnQiKQpzPXRoaXMuYwppZihzIT1udWxsKXtBLmsxKHMsImVuZCIpCmlmKHI+cyl0 +aHJvdyBBLmIoQS5URShyLDAscywic3RhcnQiLG51bGwpKX19LApnVUQoKXt2YXIgcz1KLkhtKHRoaXMu +YSkscj10aGlzLmMKaWYocj09bnVsbHx8cj5zKXJldHVybiBzCnJldHVybiByfSwKZ0FzKCl7dmFyIHM9 +Si5IbSh0aGlzLmEpLHI9dGhpcy5iCmlmKHI+cylyZXR1cm4gcwpyZXR1cm4gcn0sCmdrKGEpe3ZhciBz +LHI9Si5IbSh0aGlzLmEpLHE9dGhpcy5iCmlmKHE+PXIpcmV0dXJuIDAKcz10aGlzLmMKaWYocz09bnVs +bHx8cz49cilyZXR1cm4gci1xCmlmKHR5cGVvZiBzIT09Im51bWJlciIpcmV0dXJuIHMuSE4oKQpyZXR1 +cm4gcy1xfSwKRShhLGIpe3ZhciBzPXRoaXMscj1zLmdBcygpK2IKaWYoYjwwfHxyPj1zLmdVRCgpKXRo +cm93IEEuYihBLkNmKGIscywiaW5kZXgiLG51bGwsbnVsbCkpCnJldHVybiBKLkdBKHMuYSxyKX0sCmVS +KGEsYil7dmFyIHMscixxPXRoaXMKQS5rMShiLCJjb3VudCIpCnM9cS5iK2IKcj1xLmMKaWYociE9bnVs +bCYmcz49cilyZXR1cm4gbmV3IEEuTUIocS4kdGkuQygiTUI8MT4iKSkKcmV0dXJuIEEucUMocS5hLHMs +cixxLiR0aS5jKX0sCnR0KGEsYil7dmFyIHMscixxLHA9dGhpcyxvPXAuYixuPXAuYSxtPUouVTYobiks +bD1tLmdrKG4pLGs9cC5jCmlmKGshPW51bGwmJms8bClsPWsKcz1sLW8KaWYoczw9MCl7bj1KLlFpKDAs +cC4kdGkuYykKcmV0dXJuIG59cj1BLk84KHMsbS5FKG4sbyksITEscC4kdGkuYykKZm9yKHE9MTtxPHM7 +KytxKXtCLk5tLlk1KHIscSxtLkUobixvK3EpKQppZihtLmdrKG4pPGwpdGhyb3cgQS5iKEEuYTQocCkp +fXJldHVybiByfX0KQS5hNy5wcm90b3R5cGU9ewpnbCgpe3ZhciBzPXRoaXMuZApyZXR1cm4gcz09bnVs +bD90aGlzLiR0aS5jLmEocyk6c30sCkcoKXt2YXIgcyxyPXRoaXMscT1yLmEscD1KLlU2KHEpLG89cC5n +ayhxKQppZihyLmIhPT1vKXRocm93IEEuYihBLmE0KHEpKQpzPXIuYwppZihzPj1vKXtyLnNJKG51bGwp +CnJldHVybiExfXIuc0kocC5FKHEscykpOysrci5jCnJldHVybiEwfSwKc0koYSl7dGhpcy5kPXRoaXMu +JHRpLkMoIjE/IikuYShhKX0sCiRpQW46MX0KQS5pMS5wcm90b3R5cGU9ewpnQShhKXt2YXIgcz1BLkxo +KHRoaXMpCnJldHVybiBuZXcgQS5NSChKLklUKHRoaXMuYSksdGhpcy5iLHMuQygiQDwxPiIpLktxKHMu +elsxXSkuQygiTUg8MSwyPiIpKX0sCmdrKGEpe3JldHVybiBKLkhtKHRoaXMuYSl9LApnbDAoYSl7cmV0 +dXJuIEoudVUodGhpcy5hKX0sCkUoYSxiKXtyZXR1cm4gdGhpcy5iLiQxKEouR0EodGhpcy5hLGIpKX19 +CkEueHkucHJvdG90eXBlPXskaWJROjF9CkEuTUgucHJvdG90eXBlPXsKRygpe3ZhciBzPXRoaXMscj1z +LmIKaWYoci5HKCkpe3Muc0kocy5jLiQxKHIuZ2woKSkpCnJldHVybiEwfXMuc0kobnVsbCkKcmV0dXJu +ITF9LApnbCgpe3ZhciBzPXRoaXMuYQpyZXR1cm4gcz09bnVsbD90aGlzLiR0aS56WzFdLmEocyk6c30s +CnNJKGEpe3RoaXMuYT10aGlzLiR0aS5DKCIyPyIpLmEoYSl9fQpBLmxKLnByb3RvdHlwZT17CmdrKGEp +e3JldHVybiBKLkhtKHRoaXMuYSl9LApFKGEsYil7cmV0dXJuIHRoaXMuYi4kMShKLkdBKHRoaXMuYSxi +KSl9fQpBLlU1LnByb3RvdHlwZT17CmdBKGEpe3JldHVybiBuZXcgQS5TTyhKLklUKHRoaXMuYSksdGhp +cy5iLHRoaXMuJHRpLkMoIlNPPDE+IikpfX0KQS5TTy5wcm90b3R5cGU9ewpHKCl7dmFyIHMscgpmb3Io +cz10aGlzLmEscj10aGlzLmI7cy5HKCk7KWlmKEEub1Qoci4kMShzLmdsKCkpKSlyZXR1cm4hMApyZXR1 +cm4hMX0sCmdsKCl7cmV0dXJuIHRoaXMuYS5nbCgpfX0KQS5BTS5wcm90b3R5cGU9ewplUihhLGIpe0Eu +TVIoYiwiY291bnQiLHQuUykKQS5rMShiLCJjb3VudCIpCnJldHVybiBuZXcgQS5BTSh0aGlzLmEsdGhp +cy5iK2IsQS5MaCh0aGlzKS5DKCJBTTwxPiIpKX0sCmdBKGEpe3JldHVybiBuZXcgQS5VMShKLklUKHRo +aXMuYSksdGhpcy5iLEEuTGgodGhpcykuQygiVTE8MT4iKSl9fQpBLmQ1LnByb3RvdHlwZT17CmdrKGEp +e3ZhciBzPUouSG0odGhpcy5hKS10aGlzLmIKaWYocz49MClyZXR1cm4gcwpyZXR1cm4gMH0sCmVSKGEs +Yil7QS5NUihiLCJjb3VudCIsdC5TKQpBLmsxKGIsImNvdW50IikKcmV0dXJuIG5ldyBBLmQ1KHRoaXMu +YSx0aGlzLmIrYix0aGlzLiR0aSl9LAokaWJROjF9CkEuVTEucHJvdG90eXBlPXsKRygpe3ZhciBzLHIK +Zm9yKHM9dGhpcy5hLHI9MDtyPHRoaXMuYjsrK3Ipcy5HKCkKdGhpcy5iPTAKcmV0dXJuIHMuRygpfSwK +Z2woKXtyZXR1cm4gdGhpcy5hLmdsKCl9fQpBLk1CLnByb3RvdHlwZT17CmdBKGEpe3JldHVybiBCLkd3 +fSwKZ2wwKGEpe3JldHVybiEwfSwKZ2soYSl7cmV0dXJuIDB9LApFKGEsYil7dGhyb3cgQS5iKEEuVEUo +YiwwLDAsImluZGV4IixudWxsKSl9LAplUihhLGIpe0EuazEoYiwiY291bnQiKQpyZXR1cm4gdGhpc319 +CkEuRnUucHJvdG90eXBlPXsKRygpe3JldHVybiExfSwKZ2woKXt0aHJvdyBBLmIoQS5XcCgpKX0sCiRp +QW46MX0KQS51Ni5wcm90b3R5cGU9ewpnQShhKXtyZXR1cm4gbmV3IEEuSkIoSi5JVCh0aGlzLmEpLHRo +aXMuJHRpLkMoIkpCPDE+IikpfX0KQS5KQi5wcm90b3R5cGU9ewpHKCl7dmFyIHMscgpmb3Iocz10aGlz +LmEscj10aGlzLiR0aS5jO3MuRygpOylpZihyLmIocy5nbCgpKSlyZXR1cm4hMApyZXR1cm4hMX0sCmds +KCl7cmV0dXJuIHRoaXMuJHRpLmMuYSh0aGlzLmEuZ2woKSl9LAokaUFuOjF9CkEuU1UucHJvdG90eXBl +PXt9CkEuUmUucHJvdG90eXBlPXsKWTUoYSxiLGMpe0EuTGgodGhpcykuQygiUmUuRSIpLmEoYykKdGhy +b3cgQS5iKEEuTDQoIkNhbm5vdCBtb2RpZnkgYW4gdW5tb2RpZmlhYmxlIGxpc3QiKSl9fQpBLncyLnBy +b3RvdHlwZT17fQpBLnd2LnByb3RvdHlwZT17CmdtKGEpe3ZhciBzPXRoaXMuX2hhc2hDb2RlCmlmKHMh +PW51bGwpcmV0dXJuIHMKcz02NjQ1OTcqSi5VMyh0aGlzLmEpJjUzNjg3MDkxMQp0aGlzLl9oYXNoQ29k +ZT1zCnJldHVybiBzfSwKIlsiKGEpe3JldHVybidTeW1ib2woIicrQS5Faih0aGlzLmEpKyciKSd9LApE +TihhLGIpe2lmKGI9PW51bGwpcmV0dXJuITEKcmV0dXJuIGIgaW5zdGFuY2VvZiBBLnd2JiZ0aGlzLmE9 +PWIuYX0sCiRpR0Q6MX0KQS5RQy5wcm90b3R5cGU9e30KQS5QRC5wcm90b3R5cGU9e30KQS5XVS5wcm90 +b3R5cGU9ewpnbDAoYSl7cmV0dXJuIHRoaXMuZ2sodGhpcyk9PT0wfSwKIlsiKGEpe3JldHVybiBBLm5P +KHRoaXMpfSwKWTUoYSxiLGMpe3ZhciBzPUEuTGgodGhpcykKcy5jLmEoYikKcy56WzFdLmEoYykKQS5k +YygpfSwKZ1B1KGEpe3JldHVybiB0aGlzLnE0KDAsQS5MaCh0aGlzKS5DKCJOMzwxLDI+IikpfSwKcTQo +YSxiKXt2YXIgcz10aGlzCnJldHVybiBBLmwwKGZ1bmN0aW9uKCl7dmFyIHI9YQp2YXIgcT0wLHA9MSxv +LG4sbSxsLGssagpyZXR1cm4gZnVuY3Rpb24gJGFzeW5jJGdQdShjLGQpe2lmKGM9PT0xKXtvPWQKcT1w +fXdoaWxlKHRydWUpc3dpdGNoKHEpe2Nhc2UgMDpuPXMuZ3ZjKCksbj1uLmdBKG4pLG09QS5MaChzKSxs +PW0uelsxXSxtPW0uQygiQDwxPiIpLktxKGwpLkMoIk4zPDEsMj4iKQpjYXNlIDI6aWYoIW4uRygpKXtx +PTMKYnJlYWt9az1uLmdsKCkKaj1zLnEoMCxrKQpxPTQKcmV0dXJuIG5ldyBBLk4zKGssaj09bnVsbD9s +LmEoaik6aixtKQpjYXNlIDQ6cT0yCmJyZWFrCmNhc2UgMzpyZXR1cm4gQS5UaCgpCmNhc2UgMTpyZXR1 +cm4gQS5ZbShvKX19fSxiKX0sCiRpWjA6MX0KQS5MUC5wcm90b3R5cGU9ewpnayhhKXtyZXR1cm4gdGhp +cy5hfSwKeDQoYSl7aWYodHlwZW9mIGEhPSJzdHJpbmciKXJldHVybiExCmlmKCJfX3Byb3RvX18iPT09 +YSlyZXR1cm4hMQpyZXR1cm4gdGhpcy5iLmhhc093blByb3BlcnR5KGEpfSwKcShhLGIpe2lmKCF0aGlz +Lng0KGIpKXJldHVybiBudWxsCnJldHVybiB0aGlzLmJbQS5uKGIpXX0sCksoYSxiKXt2YXIgcyxyLHEs +cCxvLG49dGhpcy4kdGkKbi5DKCJ+KDEsMikiKS5hKGIpCnM9dGhpcy5jCmZvcihyPXMubGVuZ3RoLHE9 +dGhpcy5iLG49bi56WzFdLHA9MDtwPHI7KytwKXtvPUEubihzW3BdKQpiLiQyKG8sbi5hKHFbb10pKX19 +LApndmMoKXtyZXR1cm4gbmV3IEEuWFIodGhpcyx0aGlzLiR0aS5DKCJYUjwxPiIpKX19CkEuWFIucHJv +dG90eXBlPXsKZ0EoYSl7dmFyIHM9dGhpcy5hLmMKcmV0dXJuIG5ldyBKLm0xKHMscy5sZW5ndGgsQS50 +NihzKS5DKCJtMTwxPiIpKX0sCmdrKGEpe3JldHVybiB0aGlzLmEuYy5sZW5ndGh9fQpBLkxJLnByb3Rv +dHlwZT17CmdXYSgpe3ZhciBzPXRoaXMuYQpyZXR1cm4gc30sCmduZCgpe3ZhciBzLHIscSxwLG89dGhp +cwppZihvLmM9PT0xKXJldHVybiBCLmhVCnM9by5kCnI9cy5sZW5ndGgtby5lLmxlbmd0aC1vLmYKaWYo +cj09PTApcmV0dXJuIEIuaFUKcT1bXQpmb3IocD0wO3A8cjsrK3Ape2lmKCEocDxzLmxlbmd0aCkpcmV0 +dXJuIEEuT0gocyxwKQpxLnB1c2goc1twXSl9cmV0dXJuIEouekMocSl9LApnVm0oKXt2YXIgcyxyLHEs +cCxvLG4sbSxsLGs9dGhpcwppZihrLmMhPT0wKXJldHVybiBCLldPCnM9ay5lCnI9cy5sZW5ndGgKcT1r +LmQKcD1xLmxlbmd0aC1yLWsuZgppZihyPT09MClyZXR1cm4gQi5XTwpvPW5ldyBBLk41KHQuZW8pCmZv +cihuPTA7bjxyOysrbil7aWYoIShuPHMubGVuZ3RoKSlyZXR1cm4gQS5PSChzLG4pCm09c1tuXQpsPXAr +bgppZighKGw+PTAmJmw8cS5sZW5ndGgpKXJldHVybiBBLk9IKHEsbCkKby5ZNSgwLG5ldyBBLnd2KG0p +LHFbbF0pfXJldHVybiBuZXcgQS5QRChvLHQuZ0YpfSwKJGl2UToxfQpBLkNqLnByb3RvdHlwZT17CiQy +KGEsYil7dmFyIHMKQS5uKGEpCnM9dGhpcy5hCnMuYj1zLmIrIiQiK2EKQi5ObS5pKHRoaXMuYixhKQpC +Lk5tLmkodGhpcy5jLGIpOysrcy5hfSwKJFM6MTF9CkEuZjkucHJvdG90eXBlPXsKcVMoYSl7dmFyIHMs +cixxPXRoaXMscD1uZXcgUmVnRXhwKHEuYSkuZXhlYyhhKQppZihwPT1udWxsKXJldHVybiBudWxsCnM9 +T2JqZWN0LmNyZWF0ZShudWxsKQpyPXEuYgppZihyIT09LTEpcy5hcmd1bWVudHM9cFtyKzFdCnI9cS5j +CmlmKHIhPT0tMSlzLmFyZ3VtZW50c0V4cHI9cFtyKzFdCnI9cS5kCmlmKHIhPT0tMSlzLmV4cHI9cFty +KzFdCnI9cS5lCmlmKHIhPT0tMSlzLm1ldGhvZD1wW3IrMV0Kcj1xLmYKaWYociE9PS0xKXMucmVjZWl2 +ZXI9cFtyKzFdCnJldHVybiBzfX0KQS5XMC5wcm90b3R5cGU9ewoiWyIoYSl7dmFyIHM9dGhpcy5iCmlm +KHM9PW51bGwpcmV0dXJuIk5vU3VjaE1ldGhvZEVycm9yOiAiK3RoaXMuYQpyZXR1cm4iTm9TdWNoTWV0 +aG9kRXJyb3I6IG1ldGhvZCBub3QgZm91bmQ6ICciK3MrIicgb24gbnVsbCJ9fQpBLmF6LnByb3RvdHlw +ZT17CiJbIihhKXt2YXIgcyxyPXRoaXMscT0iTm9TdWNoTWV0aG9kRXJyb3I6IG1ldGhvZCBub3QgZm91 +bmQ6ICciLHA9ci5iCmlmKHA9PW51bGwpcmV0dXJuIk5vU3VjaE1ldGhvZEVycm9yOiAiK3IuYQpzPXIu +YwppZihzPT1udWxsKXJldHVybiBxK3ArIicgKCIrci5hKyIpIgpyZXR1cm4gcStwKyInIG9uICciK3Mr +IicgKCIrci5hKyIpIn19CkEudlYucHJvdG90eXBlPXsKIlsiKGEpe3ZhciBzPXRoaXMuYQpyZXR1cm4g +cy5sZW5ndGg9PT0wPyJFcnJvciI6IkVycm9yOiAiK3N9fQpBLnRlLnByb3RvdHlwZT17CiJbIihhKXty +ZXR1cm4iVGhyb3cgb2YgbnVsbCAoJyIrKHRoaXMuYT09PW51bGw/Im51bGwiOiJ1bmRlZmluZWQiKSsi +JyBmcm9tIEphdmFTY3JpcHQpIn0sCiRpUno6MX0KQS5icS5wcm90b3R5cGU9e30KQS5YTy5wcm90b3R5 +cGU9ewoiWyIoYSl7dmFyIHMscj10aGlzLmIKaWYociE9bnVsbClyZXR1cm4gcgpyPXRoaXMuYQpzPXIh +PT1udWxsJiZ0eXBlb2Ygcj09PSJvYmplY3QiP3Iuc3RhY2s6bnVsbApyZXR1cm4gdGhpcy5iPXM9PW51 +bGw/IiI6c30sCiRpR3o6MX0KQS5UcC5wcm90b3R5cGU9ewoiWyIoYSl7dmFyIHM9dGhpcy5jb25zdHJ1 +Y3RvcixyPXM9PW51bGw/bnVsbDpzLm5hbWUKcmV0dXJuIkNsb3N1cmUgJyIrQS5OUShyPT1udWxsPyJ1 +bmtub3duIjpyKSsiJyJ9LAokaUVIOjEsCmdLdSgpe3JldHVybiB0aGlzfSwKJEM6IiQxIiwKJFI6MSwK +JEQ6bnVsbH0KQS5BeS5wcm90b3R5cGU9eyRDOiIkMCIsJFI6MH0KQS5FMS5wcm90b3R5cGU9eyRDOiIk +MiIsJFI6Mn0KQS5sYy5wcm90b3R5cGU9e30KQS56eC5wcm90b3R5cGU9ewoiWyIoYSl7dmFyIHM9dGhp +cy4kc3RhdGljX25hbWUKaWYocz09bnVsbClyZXR1cm4iQ2xvc3VyZSBvZiB1bmtub3duIHN0YXRpYyBt +ZXRob2QiCnJldHVybiJDbG9zdXJlICciK0EuTlEocykrIicifX0KQS5yVC5wcm90b3R5cGU9ewpETihh +LGIpe2lmKGI9PW51bGwpcmV0dXJuITEKaWYodGhpcz09PWIpcmV0dXJuITAKaWYoIShiIGluc3RhbmNl +b2YgQS5yVCkpcmV0dXJuITEKcmV0dXJuIHRoaXMuJF90YXJnZXQ9PT1iLiRfdGFyZ2V0JiZ0aGlzLmE9 +PT1iLmF9LApnbShhKXtyZXR1cm4oQS5DVSh0aGlzLmEpXkEuZVEodGhpcy4kX3RhcmdldCkpPj4+MH0s +CiJbIihhKXtyZXR1cm4iQ2xvc3VyZSAnIit0aGlzLiRfbmFtZSsiJyBvZiAiKygiSW5zdGFuY2Ugb2Yg +JyIrQS5saCh0aGlzLmEpKyInIil9fQpBLkVxLnByb3RvdHlwZT17CiJbIihhKXtyZXR1cm4iUnVudGlt +ZUVycm9yOiAiK3RoaXMuYX19CkEua1kucHJvdG90eXBlPXsKIlsiKGEpe3JldHVybiJBc3NlcnRpb24g +ZmFpbGVkOiAiK0EuaGwodGhpcy5hKX19CkEua3IucHJvdG90eXBlPXt9CkEuTjUucHJvdG90eXBlPXsK +Z2soYSl7cmV0dXJuIHRoaXMuYX0sCmdsMChhKXtyZXR1cm4gdGhpcy5hPT09MH0sCmd2Yygpe3JldHVy +biBuZXcgQS5pNSh0aGlzLEEuTGgodGhpcykuQygiaTU8MT4iKSl9LAp4NChhKXt2YXIgcz10aGlzLmIK +aWYocz09bnVsbClyZXR1cm4hMQpyZXR1cm4gc1thXSE9bnVsbH0sCnEoYSxiKXt2YXIgcyxyLHEscCxv +PW51bGwKaWYodHlwZW9mIGI9PSJzdHJpbmciKXtzPXRoaXMuYgppZihzPT1udWxsKXJldHVybiBvCnI9 +c1tiXQpxPXI9PW51bGw/bzpyLmIKcmV0dXJuIHF9ZWxzZSBpZih0eXBlb2YgYj09Im51bWJlciImJihi +JjB4M2ZmZmZmZmYpPT09Yil7cD10aGlzLmMKaWYocD09bnVsbClyZXR1cm4gbwpyPXBbYl0KcT1yPT1u +dWxsP286ci5iCnJldHVybiBxfWVsc2UgcmV0dXJuIHRoaXMuYWEoYil9LAphYShhKXt2YXIgcyxyLHE9 +dGhpcy5kCmlmKHE9PW51bGwpcmV0dXJuIG51bGwKcz1xW3RoaXMueGkoYSldCnI9dGhpcy5GaChzLGEp +CmlmKHI8MClyZXR1cm4gbnVsbApyZXR1cm4gc1tyXS5ifSwKWTUoYSxiLGMpe3ZhciBzLHIscT10aGlz +LHA9QS5MaChxKQpwLmMuYShiKQpwLnpbMV0uYShjKQppZih0eXBlb2YgYj09InN0cmluZyIpe3M9cS5i +CnEuRUgocz09bnVsbD9xLmI9cS56SygpOnMsYixjKX1lbHNlIGlmKHR5cGVvZiBiPT0ibnVtYmVyIiYm +KGImMHgzZmZmZmZmZik9PT1iKXtyPXEuYwpxLkVIKHI9PW51bGw/cS5jPXEueksoKTpyLGIsYyl9ZWxz +ZSBxLnh3KGIsYyl9LAp4dyhhLGIpe3ZhciBzLHIscSxwLG89dGhpcyxuPUEuTGgobykKbi5jLmEoYSkK +bi56WzFdLmEoYikKcz1vLmQKaWYocz09bnVsbClzPW8uZD1vLnpLKCkKcj1vLnhpKGEpCnE9c1tyXQpp +ZihxPT1udWxsKXNbcl09W28uSG4oYSxiKV0KZWxzZXtwPW8uRmgocSxhKQppZihwPj0wKXFbcF0uYj1i +CmVsc2UgcS5wdXNoKG8uSG4oYSxiKSl9fSwKSyhhLGIpe3ZhciBzLHIscT10aGlzCkEuTGgocSkuQygi +figxLDIpIikuYShiKQpzPXEuZQpyPXEucgpmb3IoO3MhPW51bGw7KXtiLiQyKHMuYSxzLmIpCmlmKHIh +PT1xLnIpdGhyb3cgQS5iKEEuYTQocSkpCnM9cy5jfX0sCkVIKGEsYixjKXt2YXIgcyxyPUEuTGgodGhp +cykKci5jLmEoYikKci56WzFdLmEoYykKcz1hW2JdCmlmKHM9PW51bGwpYVtiXT10aGlzLkhuKGIsYykK +ZWxzZSBzLmI9Y30sCmtzKCl7dGhpcy5yPXRoaXMucisxJjEwNzM3NDE4MjN9LApIbihhLGIpe3ZhciBz +PXRoaXMscj1BLkxoKHMpLHE9bmV3IEEudmgoci5jLmEoYSksci56WzFdLmEoYikpCmlmKHMuZT09bnVs +bClzLmU9cy5mPXEKZWxzZXtyPXMuZgpyLnRvU3RyaW5nCnEuZD1yCnMuZj1yLmM9cX0rK3MuYQpzLmtz +KCkKcmV0dXJuIHF9LAp4aShhKXtyZXR1cm4gSi5VMyhhKSYweDNmZmZmZmZmfSwKRmgoYSxiKXt2YXIg +cyxyCmlmKGE9PW51bGwpcmV0dXJuLTEKcz1hLmxlbmd0aApmb3Iocj0wO3I8czsrK3IpaWYoSi5STShh +W3JdLmEsYikpcmV0dXJuIHIKcmV0dXJuLTF9LAoiWyIoYSl7cmV0dXJuIEEubk8odGhpcyl9LAp6Sygp +e3ZhciBzPU9iamVjdC5jcmVhdGUobnVsbCkKc1siPG5vbi1pZGVudGlmaWVyLWtleT4iXT1zCmRlbGV0 +ZSBzWyI8bm9uLWlkZW50aWZpZXIta2V5PiJdCnJldHVybiBzfSwKJGlGbzoxfQpBLnZoLnByb3RvdHlw +ZT17fQpBLmk1LnByb3RvdHlwZT17CmdrKGEpe3JldHVybiB0aGlzLmEuYX0sCmdsMChhKXtyZXR1cm4g +dGhpcy5hLmE9PT0wfSwKZ0EoYSl7dmFyIHM9dGhpcy5hLHI9bmV3IEEuTjYocyxzLnIsdGhpcy4kdGku +QygiTjY8MT4iKSkKci5jPXMuZQpyZXR1cm4gcn0sCnRnKGEsYil7cmV0dXJuIHRoaXMuYS54NChiKX19 +CkEuTjYucHJvdG90eXBlPXsKZ2woKXtyZXR1cm4gdGhpcy5kfSwKRygpe3ZhciBzLHI9dGhpcyxxPXIu +YQppZihyLmIhPT1xLnIpdGhyb3cgQS5iKEEuYTQocSkpCnM9ci5jCmlmKHM9PW51bGwpe3Iuc3FZKG51 +bGwpCnJldHVybiExfWVsc2V7ci5zcVkocy5hKQpyLmM9cy5jCnJldHVybiEwfX0sCnNxWShhKXt0aGlz +LmQ9dGhpcy4kdGkuQygiMT8iKS5hKGEpfSwKJGlBbjoxfQpBLmRDLnByb3RvdHlwZT17CiQxKGEpe3Jl +dHVybiB0aGlzLmEoYSl9LAokUzozfQpBLndOLnByb3RvdHlwZT17CiQyKGEsYil7cmV0dXJuIHRoaXMu +YShhLGIpfSwKJFM6NTF9CkEuVlgucHJvdG90eXBlPXsKJDEoYSl7cmV0dXJuIHRoaXMuYShBLm4oYSkp +fSwKJFM6NDF9CkEuVlIucHJvdG90eXBlPXsKIlsiKGEpe3JldHVybiJSZWdFeHAvIit0aGlzLmErIi8i +K3RoaXMuYi5mbGFnc30sCmdIYygpe3ZhciBzPXRoaXMscj1zLmMKaWYociE9bnVsbClyZXR1cm4gcgpy +PXMuYgpyZXR1cm4gcy5jPUEudjQocy5hLHIubXVsdGlsaW5lLCFyLmlnbm9yZUNhc2Usci51bmljb2Rl +LHIuZG90QWxsLCEwKX0sCmRkKGEsYil7cmV0dXJuIG5ldyBBLktXKHRoaXMsYiwwKX0sClVaKGEsYil7 +dmFyIHMscj10aGlzLmdIYygpCmlmKHI9PW51bGwpcj10LksuYShyKQpyLmxhc3RJbmRleD1iCnM9ci5l +eGVjKGEpCmlmKHM9PW51bGwpcmV0dXJuIG51bGwKcmV0dXJuIG5ldyBBLkVLKHMpfSwKJGl2WDoxLAok +aXdMOjF9CkEuRUsucHJvdG90eXBlPXsKcShhLGIpe3ZhciBzCkEuSVooYikKcz10aGlzLmIKaWYoIShi +PHMubGVuZ3RoKSlyZXR1cm4gQS5PSChzLGIpCnJldHVybiBzW2JdfSwKJGlPZDoxLAokaWliOjF9CkEu +S1cucHJvdG90eXBlPXsKZ0EoYSl7cmV0dXJuIG5ldyBBLlBiKHRoaXMuYSx0aGlzLmIsdGhpcy5jKX19 +CkEuUGIucHJvdG90eXBlPXsKZ2woKXt2YXIgcz10aGlzLmQKcmV0dXJuIHM9PW51bGw/dC5jei5hKHMp +OnN9LApHKCl7dmFyIHMscixxLHAsbyxuLG09dGhpcyxsPW0uYgppZihsPT1udWxsKXJldHVybiExCnM9 +bS5jCnI9bC5sZW5ndGgKaWYoczw9cil7cT1tLmEKcD1xLlVaKGwscykKaWYocCE9bnVsbCl7bS5kPXAK +cz1wLmIKbz1zLmluZGV4Cm49bytzWzBdLmxlbmd0aAppZihvPT09bil7aWYocS5iLnVuaWNvZGUpe3M9 +bS5jCnE9cysxCmlmKHE8cil7cz1CLnhCLk8obCxzKQppZihzPj01NTI5NiYmczw9NTYzMTkpe3M9Qi54 +Qi5PKGwscSkKcz1zPj01NjMyMCYmczw9NTczNDN9ZWxzZSBzPSExfWVsc2Ugcz0hMX1lbHNlIHM9ITEK +bj0ocz9uKzE6bikrMX1tLmM9bgpyZXR1cm4hMH19bS5iPW0uZD1udWxsCnJldHVybiExfSwKJGlBbjox +fQpBLnRRLnByb3RvdHlwZT17CnEoYSxiKXtBLklaKGIpCmlmKGIhPT0wKUEudihBLk83KGIsbnVsbCkp +CnJldHVybiB0aGlzLmN9LAokaU9kOjF9CkEudW4ucHJvdG90eXBlPXsKZ0EoYSl7cmV0dXJuIG5ldyBB +LlNkKHRoaXMuYSx0aGlzLmIsdGhpcy5jKX19CkEuU2QucHJvdG90eXBlPXsKRygpe3ZhciBzLHIscT10 +aGlzLHA9cS5jLG89cS5iLG49by5sZW5ndGgsbT1xLmEsbD1tLmxlbmd0aAppZihwK24+bCl7cS5kPW51 +bGwKcmV0dXJuITF9cz1tLmluZGV4T2YobyxwKQppZihzPDApe3EuYz1sKzEKcS5kPW51bGwKcmV0dXJu +ITF9cj1zK24KcS5kPW5ldyBBLnRRKHMsbykKcS5jPXI9PT1xLmM/cisxOnIKcmV0dXJuITB9LApnbCgp +e3ZhciBzPXRoaXMuZApzLnRvU3RyaW5nCnJldHVybiBzfSwKJGlBbjoxfQpBLkVULnByb3RvdHlwZT17 +JGlFVDoxLCRpQVM6MX0KQS5MWi5wcm90b3R5cGU9ewpnayhhKXtyZXR1cm4gYS5sZW5ndGh9LAokaVhq +OjF9CkEuRGcucHJvdG90eXBlPXsKcShhLGIpe0EuSVooYikKQS5vZChiLGEsYS5sZW5ndGgpCnJldHVy +biBhW2JdfSwKWTUoYSxiLGMpe0EuclYoYykKQS5vZChiLGEsYS5sZW5ndGgpCmFbYl09Y30sCiRpYlE6 +MSwKJGljWDoxLAokaXpNOjF9CkEuUGcucHJvdG90eXBlPXsKWTUoYSxiLGMpe0EuSVooYykKQS5vZChi +LGEsYS5sZW5ndGgpCmFbYl09Y30sCiRpYlE6MSwKJGljWDoxLAokaXpNOjF9CkEueGoucHJvdG90eXBl +PXsKcShhLGIpe0EuSVooYikKQS5vZChiLGEsYS5sZW5ndGgpCnJldHVybiBhW2JdfX0KQS5kRS5wcm90 +b3R5cGU9ewpxKGEsYil7QS5JWihiKQpBLm9kKGIsYSxhLmxlbmd0aCkKcmV0dXJuIGFbYl19fQpBLlpB +LnByb3RvdHlwZT17CnEoYSxiKXtBLklaKGIpCkEub2QoYixhLGEubGVuZ3RoKQpyZXR1cm4gYVtiXX19 +CkEuZFQucHJvdG90eXBlPXsKcShhLGIpe0EuSVooYikKQS5vZChiLGEsYS5sZW5ndGgpCnJldHVybiBh +W2JdfX0KQS5QcS5wcm90b3R5cGU9ewpxKGEsYil7QS5JWihiKQpBLm9kKGIsYSxhLmxlbmd0aCkKcmV0 +dXJuIGFbYl19fQpBLmVFLnByb3RvdHlwZT17CmdrKGEpe3JldHVybiBhLmxlbmd0aH0sCnEoYSxiKXtB +LklaKGIpCkEub2QoYixhLGEubGVuZ3RoKQpyZXR1cm4gYVtiXX19CkEuVjYucHJvdG90eXBlPXsKZ2so +YSl7cmV0dXJuIGEubGVuZ3RofSwKcShhLGIpe0EuSVooYikKQS5vZChiLGEsYS5sZW5ndGgpCnJldHVy +biBhW2JdfSwKJGluNjoxfQpBLlJHLnByb3RvdHlwZT17fQpBLlZQLnByb3RvdHlwZT17fQpBLldCLnBy +b3RvdHlwZT17fQpBLlpHLnByb3RvdHlwZT17fQpBLkpjLnByb3RvdHlwZT17CkMoYSl7cmV0dXJuIEEu +Y0Uodi50eXBlVW5pdmVyc2UsdGhpcyxhKX0sCktxKGEpe3JldHVybiBBLnY1KHYudHlwZVVuaXZlcnNl +LHRoaXMsYSl9fQpBLkcucHJvdG90eXBlPXt9CkEubFkucHJvdG90eXBlPXsKIlsiKGEpe3JldHVybiBB +LmRtKHRoaXMuYSxudWxsKX19CkEua1MucHJvdG90eXBlPXsKIlsiKGEpe3JldHVybiB0aGlzLmF9fQpB +LmlNLnByb3RvdHlwZT17JGlFejoxfQpBLnRoLnByb3RvdHlwZT17CiQxKGEpe3ZhciBzPXRoaXMuYSxy +PXMuYQpzLmE9bnVsbApyLiQwKCl9LAokUzo3fQpBLmhhLnByb3RvdHlwZT17CiQxKGEpe3ZhciBzLHIK +dGhpcy5hLmE9dC5NLmEoYSkKcz10aGlzLmIKcj10aGlzLmMKcy5maXJzdENoaWxkP3MucmVtb3ZlQ2hp +bGQocik6cy5hcHBlbmRDaGlsZChyKX0sCiRTOjQwfQpBLlZzLnByb3RvdHlwZT17CiQwKCl7dGhpcy5h +LiQwKCl9LAokUzo4fQpBLkZ0LnByb3RvdHlwZT17CiQwKCl7dGhpcy5hLiQwKCl9LAokUzo4fQpBLlcz +LnByb3RvdHlwZT17CkNZKGEsYil7aWYoc2VsZi5zZXRUaW1lb3V0IT1udWxsKXNlbGYuc2V0VGltZW91 +dChBLnRSKG5ldyBBLnlIKHRoaXMsYiksMCksYSkKZWxzZSB0aHJvdyBBLmIoQS5MNCgiYHNldFRpbWVv +dXQoKWAgbm90IGZvdW5kLiIpKX19CkEueUgucHJvdG90eXBlPXsKJDAoKXt0aGlzLmIuJDAoKX0sCiRT +OjB9CkEuaWgucHJvdG90eXBlPXsKYU0oYSxiKXt2YXIgcyxyPXRoaXMscT1yLiR0aQpxLkMoIjEvPyIp +LmEoYikKaWYoYj09bnVsbClxLmMuYShiKQppZighci5iKXIuYS5YZihiKQplbHNle3M9ci5hCmlmKHEu +QygiYjg8MT4iKS5iKGIpKXMuY1UoYikKZWxzZSBzLlgyKHEuYy5hKGIpKX19LAp3MChhLGIpe3ZhciBz +PXRoaXMuYQppZih0aGlzLmIpcy5aTChhLGIpCmVsc2Ugcy5OayhhLGIpfX0KQS5XTS5wcm90b3R5cGU9 +ewokMShhKXtyZXR1cm4gdGhpcy5hLiQyKDAsYSl9LAokUzoyMX0KQS5TWC5wcm90b3R5cGU9ewokMihh +LGIpe3RoaXMuYS4kMigxLG5ldyBBLmJxKGEsdC5sLmEoYikpKX0sCiRTOjI0fQpBLkdzLnByb3RvdHlw +ZT17CiQyKGEsYil7dGhpcy5hKEEuSVooYSksYil9LAokUzoyNn0KQS5GeS5wcm90b3R5cGU9ewoiWyIo +YSl7cmV0dXJuIkl0ZXJhdGlvbk1hcmtlcigiK3RoaXMuYisiLCAiK0EuRWoodGhpcy5hKSsiKSJ9fQpB +LkdWLnByb3RvdHlwZT17CmdsKCl7dmFyIHMscj10aGlzLmMKaWYocj09bnVsbCl7cz10aGlzLmIKcmV0 +dXJuIHM9PW51bGw/dGhpcy4kdGkuYy5hKHMpOnN9cmV0dXJuIHIuZ2woKX0sCkcoKXt2YXIgcyxyLHEs +cCxvLG4sbT10aGlzCmZvcihzPW0uJHRpLkMoIkFuPDE+Iik7ITA7KXtyPW0uYwppZihyIT1udWxsKWlm +KHIuRygpKXJldHVybiEwCmVsc2UgbS5zWDkobnVsbCkKcT1mdW5jdGlvbihhLGIsYyl7dmFyIGwsaz1i +CndoaWxlKHRydWUpdHJ5e3JldHVybiBhKGssbCl9Y2F0Y2goail7bD1qCms9Y319KG0uYSwwLDEpCmlm +KHEgaW5zdGFuY2VvZiBBLkZ5KXtwPXEuYgppZihwPT09Mil7bz1tLmQKaWYobz09bnVsbHx8by5sZW5n +dGg9PT0wKXttLnNFQyhudWxsKQpyZXR1cm4hMX1pZigwPj1vLmxlbmd0aClyZXR1cm4gQS5PSChvLC0x +KQptLmE9by5wb3AoKQpjb250aW51ZX1lbHNle3I9cS5hCmlmKHA9PT0zKXRocm93IHIKZWxzZXtuPXMu +YShKLklUKHIpKQppZihuIGluc3RhbmNlb2YgQS5HVil7cj1tLmQKaWYocj09bnVsbClyPW0uZD1bXQpC +Lk5tLmkocixtLmEpCm0uYT1uLmEKY29udGludWV9ZWxzZXttLnNYOShuKQpjb250aW51ZX19fX1lbHNl +e20uc0VDKHEpCnJldHVybiEwfX1yZXR1cm4hMX0sCnNFQyhhKXt0aGlzLmI9dGhpcy4kdGkuQygiMT8i +KS5hKGEpfSwKc1g5KGEpe3RoaXMuYz10aGlzLiR0aS5DKCJBbjwxPj8iKS5hKGEpfSwKJGlBbjoxfQpB +LnE0LnByb3RvdHlwZT17CmdBKGEpe3JldHVybiBuZXcgQS5HVih0aGlzLmEoKSx0aGlzLiR0aS5DKCJH +VjwxPiIpKX19CkEuQ3cucHJvdG90eXBlPXsKIlsiKGEpe3JldHVybiBBLkVqKHRoaXMuYSl9LAokaVhT +OjEsCmdJSSgpe3JldHVybiB0aGlzLmJ9fQpBLlBmLnByb3RvdHlwZT17CncwKGEsYil7dmFyIHMKQS5j +YihhLCJlcnJvciIsdC5LKQpzPXRoaXMuYQppZigocy5hJjMwKSE9PTApdGhyb3cgQS5iKEEuUFYoIkZ1 +dHVyZSBhbHJlYWR5IGNvbXBsZXRlZCIpKQppZihiPT1udWxsKWI9QS52MChhKQpzLk5rKGEsYil9LApw +bShhKXtyZXR1cm4gdGhpcy53MChhLG51bGwpfX0KQS5aZi5wcm90b3R5cGU9ewphTShhLGIpe3ZhciBz +LHI9dGhpcy4kdGkKci5DKCIxLz8iKS5hKGIpCnM9dGhpcy5hCmlmKChzLmEmMzApIT09MCl0aHJvdyBB +LmIoQS5QVigiRnV0dXJlIGFscmVhZHkgY29tcGxldGVkIikpCnMuWGYoci5DKCIxLyIpLmEoYikpfX0K +QS5GZS5wcm90b3R5cGU9ewpIUihhKXtpZigodGhpcy5jJjE1KSE9PTYpcmV0dXJuITAKcmV0dXJuIHRo +aXMuYi5iLmJ2KHQuYWwuYSh0aGlzLmQpLGEuYSx0LnksdC5LKX0sCkt3KGEpe3ZhciBzLHI9dGhpcyxx +PXIuZSxwPW51bGwsbz10Lnosbj10LkssbT1hLmEsbD1yLmIuYgppZih0Lm0uYihxKSlwPWwucnAocSxt +LGEuYixvLG4sdC5sKQplbHNlIHA9bC5idih0LnYuYShxKSxtLG8sbikKdHJ5e289ci4kdGkuQygiMi8i +KS5hKHApCnJldHVybiBvfWNhdGNoKHMpe2lmKHQuZUsuYihBLlJ1KHMpKSl7aWYoKHIuYyYxKSE9PTAp +dGhyb3cgQS5iKEEueFkoIlRoZSBlcnJvciBoYW5kbGVyIG9mIEZ1dHVyZS50aGVuIG11c3QgcmV0dXJu +IGEgdmFsdWUgb2YgdGhlIHJldHVybmVkIGZ1dHVyZSdzIHR5cGUiLCJvbkVycm9yIikpCnRocm93IEEu +YihBLnhZKCJUaGUgZXJyb3IgaGFuZGxlciBvZiBGdXR1cmUuY2F0Y2hFcnJvciBtdXN0IHJldHVybiBh +IHZhbHVlIG9mIHRoZSBmdXR1cmUncyB0eXBlIiwib25FcnJvciIpKX1lbHNlIHRocm93IHN9fX0KQS52 +cy5wcm90b3R5cGU9ewpTcShhLGIsYyl7dmFyIHMscixxLHA9dGhpcy4kdGkKcC5LcShjKS5DKCIxLygy +KSIpLmEoYSkKcz0kLlgzCmlmKHM9PT1CLk5VKXtpZihiIT1udWxsJiYhdC5tLmIoYikmJiF0LnYuYihi +KSl0aHJvdyBBLmIoQS5MMyhiLCJvbkVycm9yIix1LmMpKX1lbHNle2MuQygiQDwwLz4iKS5LcShwLmMp +LkMoIjEoMikiKS5hKGEpCmlmKGIhPW51bGwpYj1BLlZIKGIscyl9cj1uZXcgQS52cyhzLGMuQygidnM8 +MD4iKSkKcT1iPT1udWxsPzE6Mwp0aGlzLnhmKG5ldyBBLkZlKHIscSxhLGIscC5DKCJAPDE+IikuS3Eo +YykuQygiRmU8MSwyPiIpKSkKcmV0dXJuIHJ9LApXNyhhLGIpe3JldHVybiB0aGlzLlNxKGEsbnVsbCxi +KX0sClFkKGEsYixjKXt2YXIgcyxyPXRoaXMuJHRpCnIuS3EoYykuQygiMS8oMikiKS5hKGEpCnM9bmV3 +IEEudnMoJC5YMyxjLkMoInZzPDA+IikpCnRoaXMueGYobmV3IEEuRmUocywzLGEsYixyLkMoIkA8MT4i +KS5LcShjKS5DKCJGZTwxLDI+IikpKQpyZXR1cm4gc30sClA5KGEpe3RoaXMuYT10aGlzLmEmMXwxNgp0 +aGlzLmM9YX0sCnVnKGEpe3RoaXMuYT1hLmEmMzB8dGhpcy5hJjEKdGhpcy5jPWEuY30sCnhmKGEpe3Zh +ciBzLHI9dGhpcyxxPXIuYQppZihxPD0zKXthLmE9dC5lLmEoci5jKQpyLmM9YX1lbHNle2lmKChxJjQp +IT09MCl7cz10LmMuYShyLmMpCmlmKChzLmEmMjQpPT09MCl7cy54ZihhKQpyZXR1cm59ci51ZyhzKX1B +LlRrKG51bGwsbnVsbCxyLmIsdC5NLmEobmV3IEEuZGEocixhKSkpfX0sCmpRKGEpe3ZhciBzLHIscSxw +LG8sbixtPXRoaXMsbD17fQpsLmE9YQppZihhPT1udWxsKXJldHVybgpzPW0uYQppZihzPD0zKXtyPXQu +ZS5hKG0uYykKbS5jPWEKaWYociE9bnVsbCl7cT1hLmEKZm9yKHA9YTtxIT1udWxsO3A9cSxxPW8pbz1x +LmEKcC5hPXJ9fWVsc2V7aWYoKHMmNCkhPT0wKXtuPXQuYy5hKG0uYykKaWYoKG4uYSYyNCk9PT0wKXtu +LmpRKGEpCnJldHVybn1tLnVnKG4pfWwuYT1tLk44KGEpCkEuVGsobnVsbCxudWxsLG0uYix0Lk0uYShu +ZXcgQS5vUShsLG0pKSl9fSwKYWgoKXt2YXIgcz10LmUuYSh0aGlzLmMpCnRoaXMuYz1udWxsCnJldHVy +biB0aGlzLk44KHMpfSwKTjgoYSl7dmFyIHMscixxCmZvcihzPWEscj1udWxsO3MhPW51bGw7cj1zLHM9 +cSl7cT1zLmEKcy5hPXJ9cmV0dXJuIHJ9LAplYyhhKXt2YXIgcyxyLHEscD10aGlzCnAuYV49Mgp0cnl7 +YS5TcShuZXcgQS5wVihwKSxuZXcgQS5VNyhwKSx0LlApfWNhdGNoKHEpe3M9QS5SdShxKQpyPUEudHMo +cSkKQS5yYihuZXcgQS52cihwLHMscikpfX0sClgyKGEpe3ZhciBzLHI9dGhpcwpyLiR0aS5jLmEoYSkK +cz1yLmFoKCkKci5hPTgKci5jPWEKQS5IWihyLHMpfSwKWkwoYSxiKXt2YXIgcwp0LmwuYShiKQpzPXRo +aXMuYWgoKQp0aGlzLlA5KEEuVGwoYSxiKSkKQS5IWih0aGlzLHMpfSwKWGYoYSl7dmFyIHM9dGhpcy4k +dGkKcy5DKCIxLyIpLmEoYSkKaWYocy5DKCJiODwxPiIpLmIoYSkpe3RoaXMuY1UoYSkKcmV0dXJufXRo +aXMud1Uocy5jLmEoYSkpfSwKd1UoYSl7dmFyIHM9dGhpcwpzLiR0aS5jLmEoYSkKcy5hXj0yCkEuVGso +bnVsbCxudWxsLHMuYix0Lk0uYShuZXcgQS5ydChzLGEpKSl9LApjVShhKXt2YXIgcz10aGlzLHI9cy4k +dGkKci5DKCJiODwxPiIpLmEoYSkKaWYoci5iKGEpKXtpZigoYS5hJjE2KSE9PTApe3MuYV49MgpBLlRr +KG51bGwsbnVsbCxzLmIsdC5NLmEobmV3IEEuS0YocyxhKSkpfWVsc2UgQS5BOShhLHMpCnJldHVybn1z +LmVjKGEpfSwKTmsoYSxiKXt0aGlzLmFePTIKQS5UayhudWxsLG51bGwsdGhpcy5iLHQuTS5hKG5ldyBB +LlpMKHRoaXMsYSxiKSkpfSwKJGliODoxfQpBLmRhLnByb3RvdHlwZT17CiQwKCl7QS5IWih0aGlzLmEs +dGhpcy5iKX0sCiRTOjB9CkEub1EucHJvdG90eXBlPXsKJDAoKXtBLkhaKHRoaXMuYix0aGlzLmEuYSl9 +LAokUzowfQpBLnBWLnByb3RvdHlwZT17CiQxKGEpe3ZhciBzLHIscSxwPXRoaXMuYQpwLmFePTIKdHJ5 +e3AuWDIocC4kdGkuYy5hKGEpKX1jYXRjaChxKXtzPUEuUnUocSkKcj1BLnRzKHEpCnAuWkwocyxyKX19 +LAokUzo3fQpBLlU3LnByb3RvdHlwZT17CiQyKGEsYil7dGhpcy5hLlpMKHQuSy5hKGEpLHQubC5hKGIp +KX0sCiRTOjI5fQpBLnZyLnByb3RvdHlwZT17CiQwKCl7dGhpcy5hLlpMKHRoaXMuYix0aGlzLmMpfSwK +JFM6MH0KQS5ydC5wcm90b3R5cGU9ewokMCgpe3RoaXMuYS5YMih0aGlzLmIpfSwKJFM6MH0KQS5LRi5w +cm90b3R5cGU9ewokMCgpe0EuQTkodGhpcy5iLHRoaXMuYSl9LAokUzowfQpBLlpMLnByb3RvdHlwZT17 +CiQwKCl7dGhpcy5hLlpMKHRoaXMuYix0aGlzLmMpfSwKJFM6MH0KQS5SVC5wcm90b3R5cGU9ewokMCgp +e3ZhciBzLHIscSxwLG8sbixtPXRoaXMsbD1udWxsCnRyeXtxPW0uYS5hCmw9cS5iLmIuenoodC5mTy5h +KHEuZCksdC56KX1jYXRjaChwKXtzPUEuUnUocCkKcj1BLnRzKHApCnE9bS5jJiZ0Lm4uYShtLmIuYS5j +KS5hPT09cwpvPW0uYQppZihxKW8uYz10Lm4uYShtLmIuYS5jKQplbHNlIG8uYz1BLlRsKHMscikKby5i +PSEwCnJldHVybn1pZihsIGluc3RhbmNlb2YgQS52cyYmKGwuYSYyNCkhPT0wKXtpZigobC5hJjE2KSE9 +PTApe3E9bS5hCnEuYz10Lm4uYShsLmMpCnEuYj0hMH1yZXR1cm59aWYodC5pLmIobCkpe249bS5iLmEK +cT1tLmEKcS5jPWwuVzcobmV3IEEualoobiksdC56KQpxLmI9ITF9fSwKJFM6MH0KQS5qWi5wcm90b3R5 +cGU9ewokMShhKXtyZXR1cm4gdGhpcy5hfSwKJFM6MzR9CkEucnEucHJvdG90eXBlPXsKJDAoKXt2YXIg +cyxyLHEscCxvLG4sbSxsCnRyeXtxPXRoaXMuYQpwPXEuYQpvPXAuJHRpCm49by5jCm09bi5hKHRoaXMu +YikKcS5jPXAuYi5iLmJ2KG8uQygiMi8oMSkiKS5hKHAuZCksbSxvLkMoIjIvIiksbil9Y2F0Y2gobCl7 +cz1BLlJ1KGwpCnI9QS50cyhsKQpxPXRoaXMuYQpxLmM9QS5UbChzLHIpCnEuYj0hMH19LAokUzowfQpB +LlJXLnByb3RvdHlwZT17CiQwKCl7dmFyIHMscixxLHAsbyxuLG09dGhpcwp0cnl7cz10Lm4uYShtLmEu +YS5jKQpwPW0uYgppZihwLmEuSFIocykmJnAuYS5lIT1udWxsKXtwLmM9cC5hLkt3KHMpCnAuYj0hMX19 +Y2F0Y2gobyl7cj1BLlJ1KG8pCnE9QS50cyhvKQpwPXQubi5hKG0uYS5hLmMpCm49bS5iCmlmKHAuYT09 +PXIpbi5jPXAKZWxzZSBuLmM9QS5UbChyLHEpCm4uYj0hMH19LAokUzowfQpBLk9NLnByb3RvdHlwZT17 +fQpBLnFoLnByb3RvdHlwZT17CmdrKGEpe3ZhciBzLHIscT10aGlzLHA9e30sbz1uZXcgQS52cygkLlgz +LHQuZkopCnAuYT0wCnM9QS5MaChxKQpyPXMuQygifigxKT8iKS5hKG5ldyBBLkI1KHAscSkpCnQuWi5h +KG5ldyBBLnVPKHAsbykpCkEuSkUocS5hLHEuYixyLCExLHMuYykKcmV0dXJuIG99fQpBLkI1LnByb3Rv +dHlwZT17CiQxKGEpe0EuTGgodGhpcy5iKS5jLmEoYSk7Kyt0aGlzLmEuYX0sCiRTKCl7cmV0dXJuIEEu +TGgodGhpcy5iKS5DKCJ+KDEpIil9fQpBLnVPLnByb3RvdHlwZT17CiQwKCl7dmFyIHM9dGhpcy5iLHI9 +cy4kdGkscT1yLkMoIjEvIikuYSh0aGlzLmEuYSkscD1zLmFoKCkKci5jLmEocSkKcy5hPTgKcy5jPXEK +QS5IWihzLHApfSwKJFM6MH0KQS5NTy5wcm90b3R5cGU9e30KQS5rVC5wcm90b3R5cGU9e30KQS54SS5w +cm90b3R5cGU9e30KQS5tMC5wcm90b3R5cGU9eyRpUW06MX0KQS5Fdi5wcm90b3R5cGU9ewokMCgpe3Zh +ciBzPXRoaXMuYSxyPXRoaXMuYgpBLmNiKHMsImVycm9yIix0LkspCkEuY2Iociwic3RhY2tUcmFjZSIs +dC5sKQpBLk8xKHMscil9LAokUzowfQpBLkppLnByb3RvdHlwZT17CmJIKGEpe3ZhciBzLHIscQp0Lk0u +YShhKQp0cnl7aWYoQi5OVT09PSQuWDMpe2EuJDAoKQpyZXR1cm59QS5UOChudWxsLG51bGwsdGhpcyxh +LHQuSCl9Y2F0Y2gocSl7cz1BLlJ1KHEpCnI9QS50cyhxKQpBLlNpKHQuSy5hKHMpLHQubC5hKHIpKX19 +LApEbChhLGIsYyl7dmFyIHMscixxCmMuQygifigwKSIpLmEoYSkKYy5hKGIpCnRyeXtpZihCLk5VPT09 +JC5YMyl7YS4kMShiKQpyZXR1cm59QS55dihudWxsLG51bGwsdGhpcyxhLGIsdC5ILGMpfWNhdGNoKHEp +e3M9QS5SdShxKQpyPUEudHMocSkKQS5TaSh0LksuYShzKSx0LmwuYShyKSl9fSwKR1koYSl7cmV0dXJu +IG5ldyBBLlZwKHRoaXMsdC5NLmEoYSkpfSwKUHkoYSxiKXtyZXR1cm4gbmV3IEEuT1IodGhpcyxiLkMo +In4oMCkiKS5hKGEpLGIpfSwKcShhLGIpe3JldHVybiBudWxsfSwKenooYSxiKXtiLkMoIjAoKSIpLmEo +YSkKaWYoJC5YMz09PUIuTlUpcmV0dXJuIGEuJDAoKQpyZXR1cm4gQS5UOChudWxsLG51bGwsdGhpcyxh +LGIpfSwKYnYoYSxiLGMsZCl7Yy5DKCJAPDA+IikuS3EoZCkuQygiMSgyKSIpLmEoYSkKZC5hKGIpCmlm +KCQuWDM9PT1CLk5VKXJldHVybiBhLiQxKGIpCnJldHVybiBBLnl2KG51bGwsbnVsbCx0aGlzLGEsYixj +LGQpfSwKcnAoYSxiLGMsZCxlLGYpe2QuQygiQDwwPiIpLktxKGUpLktxKGYpLkMoIjEoMiwzKSIpLmEo +YSkKZS5hKGIpCmYuYShjKQppZigkLlgzPT09Qi5OVSlyZXR1cm4gYS4kMihiLGMpCnJldHVybiBBLlF4 +KG51bGwsbnVsbCx0aGlzLGEsYixjLGQsZSxmKX0sCkxqKGEsYixjLGQpe3JldHVybiBiLkMoIkA8MD4i +KS5LcShjKS5LcShkKS5DKCIxKDIsMykiKS5hKGEpfX0KQS5WcC5wcm90b3R5cGU9ewokMCgpe3JldHVy +biB0aGlzLmEuYkgodGhpcy5iKX0sCiRTOjB9CkEuT1IucHJvdG90eXBlPXsKJDEoYSl7dmFyIHM9dGhp +cy5jCnJldHVybiB0aGlzLmEuRGwodGhpcy5iLHMuYShhKSxzKX0sCiRTKCl7cmV0dXJuIHRoaXMuYy5D +KCJ+KDApIil9fQpBLmI2LnByb3RvdHlwZT17CmdBKGEpe3ZhciBzPXRoaXMscj1uZXcgQS5sbShzLHMu +cixBLkxoKHMpLkMoImxtPDE+IikpCnIuYz1zLmUKcmV0dXJuIHJ9LApnayhhKXtyZXR1cm4gdGhpcy5h +fSwKZ2wwKGEpe3JldHVybiB0aGlzLmE9PT0wfSwKZ29yKGEpe3JldHVybiB0aGlzLmEhPT0wfSwKdGco +YSxiKXt2YXIgcyxyCmlmKGIhPT0iX19wcm90b19fIil7cz10aGlzLmIKaWYocz09bnVsbClyZXR1cm4h +MQpyZXR1cm4gdC5nLmEoc1tiXSkhPW51bGx9ZWxzZXtyPXRoaXMuUFIoYikKcmV0dXJuIHJ9fSwKUFIo +YSl7dmFyIHM9dGhpcy5kCmlmKHM9PW51bGwpcmV0dXJuITEKcmV0dXJuIHRoaXMudChzW3RoaXMuWShh +KV0sYSk+PTB9LAppKGEsYil7dmFyIHMscixxPXRoaXMKQS5MaChxKS5jLmEoYikKaWYodHlwZW9mIGI9 +PSJzdHJpbmciJiZiIT09Il9fcHJvdG9fXyIpe3M9cS5iCnJldHVybiBxLmJRKHM9PW51bGw/cS5iPUEu +VDIoKTpzLGIpfWVsc2UgaWYodHlwZW9mIGI9PSJudW1iZXIiJiYoYiYxMDczNzQxODIzKT09PWIpe3I9 +cS5jCnJldHVybiBxLmJRKHI9PW51bGw/cS5jPUEuVDIoKTpyLGIpfWVsc2UgcmV0dXJuIHEuQjcoYil9 +LApCNyhhKXt2YXIgcyxyLHEscD10aGlzCkEuTGgocCkuYy5hKGEpCnM9cC5kCmlmKHM9PW51bGwpcz1w +LmQ9QS5UMigpCnI9cC5ZKGEpCnE9c1tyXQppZihxPT1udWxsKXNbcl09W3AueW8oYSldCmVsc2V7aWYo +cC50KHEsYSk+PTApcmV0dXJuITEKcS5wdXNoKHAueW8oYSkpfXJldHVybiEwfSwKUihhLGIpe3ZhciBz +PXRoaXMKaWYodHlwZW9mIGI9PSJzdHJpbmciJiZiIT09Il9fcHJvdG9fXyIpcmV0dXJuIHMuSihzLmIs +YikKZWxzZSBpZih0eXBlb2YgYj09Im51bWJlciImJihiJjEwNzM3NDE4MjMpPT09YilyZXR1cm4gcy5K +KHMuYyxiKQplbHNlIHJldHVybiBzLk0oYil9LApNKGEpe3ZhciBzLHIscSxwLG89dGhpcyxuPW8uZApp +ZihuPT1udWxsKXJldHVybiExCnM9by5ZKGEpCnI9bltzXQpxPW8udChyLGEpCmlmKHE8MClyZXR1cm4h +MQpwPXIuc3BsaWNlKHEsMSlbMF0KaWYoMD09PXIubGVuZ3RoKWRlbGV0ZSBuW3NdCm8uVChwKQpyZXR1 +cm4hMH0sCmJRKGEsYil7QS5MaCh0aGlzKS5jLmEoYikKaWYodC5nLmEoYVtiXSkhPW51bGwpcmV0dXJu +ITEKYVtiXT10aGlzLnlvKGIpCnJldHVybiEwfSwKSihhLGIpe3ZhciBzCmlmKGE9PW51bGwpcmV0dXJu +ITEKcz10LmcuYShhW2JdKQppZihzPT1udWxsKXJldHVybiExCnRoaXMuVChzKQpkZWxldGUgYVtiXQpy +ZXR1cm4hMH0sClMoKXt0aGlzLnI9dGhpcy5yKzEmMTA3Mzc0MTgyM30sCnlvKGEpe3ZhciBzLHI9dGhp +cyxxPW5ldyBBLmJuKEEuTGgocikuYy5hKGEpKQppZihyLmU9PW51bGwpci5lPXIuZj1xCmVsc2V7cz1y +LmYKcy50b1N0cmluZwpxLmM9cwpyLmY9cy5iPXF9KytyLmEKci5TKCkKcmV0dXJuIHF9LApUKGEpe3Zh +ciBzPXRoaXMscj1hLmMscT1hLmIKaWYocj09bnVsbClzLmU9cQplbHNlIHIuYj1xCmlmKHE9PW51bGwp +cy5mPXIKZWxzZSBxLmM9cjstLXMuYQpzLlMoKX0sClkoYSl7cmV0dXJuIEouVTMoYSkmMTA3Mzc0MTgy +M30sCnQoYSxiKXt2YXIgcyxyCmlmKGE9PW51bGwpcmV0dXJuLTEKcz1hLmxlbmd0aApmb3Iocj0wO3I8 +czsrK3IpaWYoSi5STShhW3JdLmEsYikpcmV0dXJuIHIKcmV0dXJuLTF9fQpBLmJuLnByb3RvdHlwZT17 +fQpBLmxtLnByb3RvdHlwZT17CmdsKCl7dmFyIHM9dGhpcy5kCnJldHVybiBzPT1udWxsP3RoaXMuJHRp +LmMuYShzKTpzfSwKRygpe3ZhciBzPXRoaXMscj1zLmMscT1zLmEKaWYocy5iIT09cS5yKXRocm93IEEu +YihBLmE0KHEpKQplbHNlIGlmKHI9PW51bGwpe3Muc2oobnVsbCkKcmV0dXJuITF9ZWxzZXtzLnNqKHMu +JHRpLkMoIjE/IikuYShyLmEpKQpzLmM9ci5iCnJldHVybiEwfX0sCnNqKGEpe3RoaXMuZD10aGlzLiR0 +aS5DKCIxPyIpLmEoYSl9LAokaUFuOjF9CkEubVcucHJvdG90eXBlPXt9CkEudXkucHJvdG90eXBlPXsk +aWJROjEsJGljWDoxLCRpek06MX0KQS5sRC5wcm90b3R5cGU9ewpnQShhKXtyZXR1cm4gbmV3IEEuYTco +YSx0aGlzLmdrKGEpLEEueksoYSkuQygiYTc8bEQuRT4iKSl9LApFKGEsYil7cmV0dXJuIHRoaXMucShh +LGIpfSwKSyhhLGIpe3ZhciBzLHIKQS56SyhhKS5DKCJ+KGxELkUpIikuYShiKQpzPXRoaXMuZ2soYSkK +Zm9yKHI9MDtyPHM7KytyKXtiLiQxKHRoaXMucShhLHIpKQppZihzIT09dGhpcy5nayhhKSl0aHJvdyBB +LmIoQS5hNChhKSl9fSwKZ2wwKGEpe3JldHVybiB0aGlzLmdrKGEpPT09MH0sCmdvcihhKXtyZXR1cm4h +dGhpcy5nbDAoYSl9LApFMihhLGIsYyl7dmFyIHM9QS56SyhhKQpyZXR1cm4gbmV3IEEubEooYSxzLktx +KGMpLkMoIjEobEQuRSkiKS5hKGIpLHMuQygiQDxsRC5FPiIpLktxKGMpLkMoImxKPDEsMj4iKSl9LApl +UihhLGIpe3JldHVybiBBLnFDKGEsYixudWxsLEEueksoYSkuQygibEQuRSIpKX0sCmRyKGEsYil7cmV0 +dXJuIG5ldyBBLmpWKGEsQS56SyhhKS5DKCJAPGxELkU+IikuS3EoYikuQygialY8MSwyPiIpKX0sCmR1 +KGEsYixjLGQpe3ZhciBzCkEueksoYSkuQygibEQuRT8iKS5hKGQpCkEuakIoYixjLHRoaXMuZ2soYSkp +CmZvcihzPWI7czxjOysrcyl0aGlzLlk1KGEscyxkKX0sCiJbIihhKXtyZXR1cm4gQS54KGEsIlsiLCJd +Iil9fQpBLmlsLnByb3RvdHlwZT17fQpBLnJhLnByb3RvdHlwZT17CiQyKGEsYil7dmFyIHMscj10aGlz +LmEKaWYoIXIuYSl0aGlzLmIuYSs9IiwgIgpyLmE9ITEKcj10aGlzLmIKcz1yLmErPUEuRWooYSkKci5h +PXMrIjogIgpyLmErPUEuRWooYil9LAokUzo5fQpBLllrLnByb3RvdHlwZT17CksoYSxiKXt2YXIgcyxy +LHEscD1BLkxoKHRoaXMpCnAuQygifihZay5LLFlrLlYpIikuYShiKQpmb3Iocz1KLklUKHRoaXMuZ3Zj +KCkpLHA9cC5DKCJZay5WIik7cy5HKCk7KXtyPXMuZ2woKQpxPXRoaXMucSgwLHIpCmIuJDIocixxPT1u +dWxsP3AuYShxKTpxKX19LApnUHUoYSl7cmV0dXJuIEouTTEodGhpcy5ndmMoKSxuZXcgQS55USh0aGlz +KSxBLkxoKHRoaXMpLkMoIk4zPFlrLkssWWsuVj4iKSl9LAp4NChhKXtyZXR1cm4gSi56bCh0aGlzLmd2 +YygpLGEpfSwKZ2soYSl7cmV0dXJuIEouSG0odGhpcy5ndmMoKSl9LApnbDAoYSl7cmV0dXJuIEoudVUo +dGhpcy5ndmMoKSl9LAoiWyIoYSl7cmV0dXJuIEEubk8odGhpcyl9LAokaVowOjF9CkEueVEucHJvdG90 +eXBlPXsKJDEoYSl7dmFyIHM9dGhpcy5hLHI9QS5MaChzKQpyLkMoIllrLksiKS5hKGEpCnM9cy5xKDAs +YSkKaWYocz09bnVsbClzPXIuQygiWWsuViIpLmEocykKcmV0dXJuIG5ldyBBLk4zKGEscyxyLkMoIkA8 +WWsuSz4iKS5LcShyLkMoIllrLlYiKSkuQygiTjM8MSwyPiIpKX0sCiRTKCl7cmV0dXJuIEEuTGgodGhp +cy5hKS5DKCJOMzxZay5LLFlrLlY+KFlrLkspIil9fQpBLktQLnByb3RvdHlwZT17Clk1KGEsYixjKXt2 +YXIgcz1BLkxoKHRoaXMpCnMuYy5hKGIpCnMuelsxXS5hKGMpCnRocm93IEEuYihBLkw0KCJDYW5ub3Qg +bW9kaWZ5IHVubW9kaWZpYWJsZSBtYXAiKSl9fQpBLlBuLnByb3RvdHlwZT17CnEoYSxiKXtyZXR1cm4g +dGhpcy5hLnEoMCxiKX0sClk1KGEsYixjKXt2YXIgcz1BLkxoKHRoaXMpCnRoaXMuYS5ZNSgwLHMuYy5h +KGIpLHMuelsxXS5hKGMpKX0sCng0KGEpe3JldHVybiB0aGlzLmEueDQoYSl9LApLKGEsYil7dGhpcy5h +LksoMCxBLkxoKHRoaXMpLkMoIn4oMSwyKSIpLmEoYikpfSwKZ2wwKGEpe3ZhciBzPXRoaXMuYQpyZXR1 +cm4gcy5nbDAocyl9LApnayhhKXt2YXIgcz10aGlzLmEKcmV0dXJuIHMuZ2socyl9LAoiWyIoYSl7cmV0 +dXJuIHRoaXMuYVsiWyJdKDApfSwKZ1B1KGEpe3ZhciBzPXRoaXMuYQpyZXR1cm4gcy5nUHUocyl9LAok +aVowOjF9CkEuR2oucHJvdG90eXBlPXt9CkEubGYucHJvdG90eXBlPXsKZ2wwKGEpe3JldHVybiB0aGlz +LmdrKHRoaXMpPT09MH0sCmdvcihhKXtyZXR1cm4gdGhpcy5nayh0aGlzKSE9PTB9LApGVihhLGIpe3Zh +ciBzCmZvcihzPUouSVQoQS5MaCh0aGlzKS5DKCJjWDxsZi5FPiIpLmEoYikpO3MuRygpOyl0aGlzLmko +MCxzLmdsKCkpfSwKIlsiKGEpe3JldHVybiBBLngodGhpcywieyIsIn0iKX0sCkgoYSxiKXt2YXIgcyxy +LHEscD10aGlzLmdBKHRoaXMpCmlmKCFwLkcoKSlyZXR1cm4iIgppZihiPT09IiIpe3M9cC4kdGkuYwpy +PSIiCmRve3E9cC5kCnIrPUEuRWoocT09bnVsbD9zLmEocSk6cSl9d2hpbGUocC5HKCkpCnM9cn1lbHNl +e3M9cC5kCnM9IiIrQS5FaihzPT1udWxsP3AuJHRpLmMuYShzKTpzKQpmb3Iocj1wLiR0aS5jO3AuRygp +Oyl7cT1wLmQKcz1zK2IrQS5FaihxPT1udWxsP3IuYShxKTpxKX19cmV0dXJuIHMuY2hhckNvZGVBdCgw +KT09MD9zOnN9LAplUihhLGIpe3JldHVybiBBLmJLKHRoaXMsYixBLkxoKHRoaXMpLkMoImxmLkUiKSl9 +LApFKGEsYil7dmFyIHMscixxLHAsbz0iaW5kZXgiCkEuY2IoYixvLHQuUykKQS5rMShiLG8pCmZvcihz +PXRoaXMuZ0EodGhpcykscj1zLiR0aS5jLHE9MDtzLkcoKTspe3A9cy5kCmlmKHA9PW51bGwpcD1yLmEo +cCkKaWYoYj09PXEpcmV0dXJuIHA7KytxfXRocm93IEEuYihBLkNmKGIsdGhpcyxvLG51bGwscSkpfX0K +QS5Wai5wcm90b3R5cGU9eyRpYlE6MSwkaWNYOjEsJGlPbDoxfQpBLlh2LnByb3RvdHlwZT17JGliUTox +LCRpY1g6MSwkaU9sOjF9CkEublkucHJvdG90eXBlPXt9CkEuV1kucHJvdG90eXBlPXt9CkEuUlUucHJv +dG90eXBlPXt9CkEuRlAucHJvdG90eXBlPXt9CkEudXcucHJvdG90eXBlPXsKcShhLGIpe3ZhciBzLHI9 +dGhpcy5iCmlmKHI9PW51bGwpcmV0dXJuIHRoaXMuYy5xKDAsYikKZWxzZSBpZih0eXBlb2YgYiE9InN0 +cmluZyIpcmV0dXJuIG51bGwKZWxzZXtzPXJbYl0KcmV0dXJuIHR5cGVvZiBzPT0idW5kZWZpbmVkIj90 +aGlzLmZiKGIpOnN9fSwKZ2soYSl7cmV0dXJuIHRoaXMuYj09bnVsbD90aGlzLmMuYTp0aGlzLkNmKCku +bGVuZ3RofSwKZ2wwKGEpe3JldHVybiB0aGlzLmdrKHRoaXMpPT09MH0sCmd2Yygpe2lmKHRoaXMuYj09 +bnVsbCl7dmFyIHM9dGhpcy5jCnJldHVybiBuZXcgQS5pNShzLEEuTGgocykuQygiaTU8MT4iKSl9cmV0 +dXJuIG5ldyBBLmk4KHRoaXMpfSwKWTUoYSxiLGMpe3ZhciBzLHIscT10aGlzCmlmKHEuYj09bnVsbClx +LmMuWTUoMCxiLGMpCmVsc2UgaWYocS54NChiKSl7cz1xLmIKc1tiXT1jCnI9cS5hCmlmKHI9PW51bGw/ +cyE9bnVsbDpyIT09cylyW2JdPW51bGx9ZWxzZSBxLlhLKCkuWTUoMCxiLGMpfSwKeDQoYSl7aWYodGhp +cy5iPT1udWxsKXJldHVybiB0aGlzLmMueDQoYSkKcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3du +UHJvcGVydHkuY2FsbCh0aGlzLmEsYSl9LApLKGEsYil7dmFyIHMscixxLHAsbz10aGlzCnQuY0EuYShi +KQppZihvLmI9PW51bGwpcmV0dXJuIG8uYy5LKDAsYikKcz1vLkNmKCkKZm9yKHI9MDtyPHMubGVuZ3Ro +Oysrcil7cT1zW3JdCnA9by5iW3FdCmlmKHR5cGVvZiBwPT0idW5kZWZpbmVkIil7cD1BLlFlKG8uYVtx +XSkKby5iW3FdPXB9Yi4kMihxLHApCmlmKHMhPT1vLmMpdGhyb3cgQS5iKEEuYTQobykpfX0sCkNmKCl7 +dmFyIHM9dC5iTS5hKHRoaXMuYykKaWYocz09bnVsbClzPXRoaXMuYz1BLlFJKE9iamVjdC5rZXlzKHRo +aXMuYSksdC5zKQpyZXR1cm4gc30sClhLKCl7dmFyIHMscixxLHAsbyxuPXRoaXMKaWYobi5iPT1udWxs +KXJldHVybiBuLmMKcz1BLkZsKHQuTix0LnopCnI9bi5DZigpCmZvcihxPTA7cD1yLmxlbmd0aCxxPHA7 +KytxKXtvPXJbcV0Kcy5ZNSgwLG8sbi5xKDAsbykpfWlmKHA9PT0wKUIuTm0uaShyLCIiKQplbHNlIEIu +Tm0uVjEocikKbi5hPW4uYj1udWxsCnJldHVybiBuLmM9c30sCmZiKGEpe3ZhciBzCmlmKCFPYmplY3Qu +cHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hLGEpKXJldHVybiBudWxsCnM9QS5RZSh0 +aGlzLmFbYV0pCnJldHVybiB0aGlzLmJbYV09c319CkEuaTgucHJvdG90eXBlPXsKZ2soYSl7dmFyIHM9 +dGhpcy5hCnJldHVybiBzLmdrKHMpfSwKRShhLGIpe3ZhciBzPXRoaXMuYQppZihzLmI9PW51bGwpcz1z +Lmd2YygpLkUoMCxiKQplbHNle3M9cy5DZigpCmlmKCEoYj49MCYmYjxzLmxlbmd0aCkpcmV0dXJuIEEu +T0gocyxiKQpzPXNbYl19cmV0dXJuIHN9LApnQShhKXt2YXIgcz10aGlzLmEKaWYocy5iPT1udWxsKXtz +PXMuZ3ZjKCkKcz1zLmdBKHMpfWVsc2V7cz1zLkNmKCkKcz1uZXcgSi5tMShzLHMubGVuZ3RoLEEudDYo +cykuQygibTE8MT4iKSl9cmV0dXJuIHN9LAp0ZyhhLGIpe3JldHVybiB0aGlzLmEueDQoYil9fQpBLnhy +LnByb3RvdHlwZT17CiQwKCl7dmFyIHMscgp0cnl7cz1uZXcgVGV4dERlY29kZXIoInV0Zi04Iix7ZmF0 +YWw6dHJ1ZX0pCnJldHVybiBzfWNhdGNoKHIpe31yZXR1cm4gbnVsbH0sCiRTOjEwfQpBLk56LnByb3Rv +dHlwZT17CiQwKCl7dmFyIHMscgp0cnl7cz1uZXcgVGV4dERlY29kZXIoInV0Zi04Iix7ZmF0YWw6ZmFs +c2V9KQpyZXR1cm4gc31jYXRjaChyKXt9cmV0dXJuIG51bGx9LAokUzoxMH0KQS5DVi5wcm90b3R5cGU9 +ewp5cihhMSxhMixhMyl7dmFyIHMscixxLHAsbyxuLG0sbCxrLGosaSxoLGcsZixlLGQsYyxiLGEsYTA9 +IkludmFsaWQgYmFzZTY0IGVuY29kaW5nIGxlbmd0aCAiCmEzPUEuakIoYTIsYTMsYTEubGVuZ3RoKQpz +PSQuVjcoKQpmb3Iocj1zLmxlbmd0aCxxPWEyLHA9cSxvPW51bGwsbj0tMSxtPS0xLGw9MDtxPGEzO3E9 +ayl7az1xKzEKaj1CLnhCLlcoYTEscSkKaWYoaj09PTM3KXtpPWsrMgppZihpPD1hMyl7aD1BLm9vKEIu +eEIuVyhhMSxrKSkKZz1BLm9vKEIueEIuVyhhMSxrKzEpKQpmPWgqMTYrZy0oZyYyNTYpCmlmKGY9PT0z +NylmPS0xCms9aX1lbHNlIGY9LTF9ZWxzZSBmPWoKaWYoMDw9ZiYmZjw9MTI3KXtpZighKGY+PTAmJmY8 +cikpcmV0dXJuIEEuT0gocyxmKQplPXNbZl0KaWYoZT49MCl7Zj1CLnhCLk8oIkFCQ0RFRkdISUpLTE1O +T1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLGUpCmlmKGY9 +PT1qKWNvbnRpbnVlCmo9Zn1lbHNle2lmKGU9PT0tMSl7aWYobjwwKXtkPW89PW51bGw/bnVsbDpvLmEu +bGVuZ3RoCmlmKGQ9PW51bGwpZD0wCm49ZCsocS1wKQptPXF9KytsCmlmKGo9PT02MSljb250aW51ZX1q +PWZ9aWYoZSE9PS0yKXtpZihvPT1udWxsKXtvPW5ldyBBLk0oIiIpCmQ9b31lbHNlIGQ9bwpjPWQuYSs9 +Qi54Qi5OaihhMSxwLHEpCmQuYT1jK0EuTHcoaikKcD1rCmNvbnRpbnVlfX10aHJvdyBBLmIoQS5ycigi +SW52YWxpZCBiYXNlNjQgZGF0YSIsYTEscSkpfWlmKG8hPW51bGwpe3I9by5hKz1CLnhCLk5qKGExLHAs +YTMpCmQ9ci5sZW5ndGgKaWYobj49MClBLnhNKGExLG0sYTMsbixsLGQpCmVsc2V7Yj1CLmpuLnpZKGQt +MSw0KSsxCmlmKGI9PT0xKXRocm93IEEuYihBLnJyKGEwLGExLGEzKSkKZm9yKDtiPDQ7KXtyKz0iPSIK +by5hPXI7KytifX1yPW8uYQpyZXR1cm4gQi54Qi5pNyhhMSxhMixhMyxyLmNoYXJDb2RlQXQoMCk9PTA/ +cjpyKX1hPWEzLWEyCmlmKG4+PTApQS54TShhMSxtLGEzLG4sbCxhKQplbHNle2I9Qi5qbi56WShhLDQp +CmlmKGI9PT0xKXRocm93IEEuYihBLnJyKGEwLGExLGEzKSkKaWYoYj4xKWExPUIueEIuaTcoYTEsYTMs +YTMsYj09PTI/Ij09IjoiPSIpfXJldHVybiBhMX19CkEuVTgucHJvdG90eXBlPXt9CkEuVWsucHJvdG90 +eXBlPXt9CkEud0kucHJvdG90eXBlPXt9CkEuWmkucHJvdG90eXBlPXt9CkEuVWQucHJvdG90eXBlPXsK +IlsiKGEpe3ZhciBzPUEuaGwodGhpcy5hKQpyZXR1cm4odGhpcy5iIT1udWxsPyJDb252ZXJ0aW5nIG9i +amVjdCB0byBhbiBlbmNvZGFibGUgb2JqZWN0IGZhaWxlZDoiOiJDb252ZXJ0aW5nIG9iamVjdCBkaWQg +bm90IHJldHVybiBhbiBlbmNvZGFibGUgb2JqZWN0OiIpKyIgIitzfX0KQS5LOC5wcm90b3R5cGU9ewoi +WyIoYSl7cmV0dXJuIkN5Y2xpYyBlcnJvciBpbiBKU09OIHN0cmluZ2lmeSJ9fQpBLmJ5LnByb3RvdHlw +ZT17CnBXKGEsYixjKXt2YXIgcwp0LmZWLmEoYykKcz1BLkJTKGIsdGhpcy5nSGUoKS5hKQpyZXR1cm4g +c30sCk9CKGEsYil7dmFyIHMKdC5kQS5hKGIpCnM9QS51WChhLHRoaXMuZ1pFKCkuYixudWxsKQpyZXR1 +cm4gc30sCmdaRSgpe3JldHVybiBCLm5YfSwKZ0hlKCl7cmV0dXJuIEIuQTN9fQpBLm9qLnByb3RvdHlw +ZT17fQpBLk14LnByb3RvdHlwZT17fQpBLlNoLnByb3RvdHlwZT17ClJUKGEpe3ZhciBzLHIscSxwLG8s +bixtPWEubGVuZ3RoCmZvcihzPXRoaXMuYyxyPTAscT0wO3E8bTsrK3Epe3A9Qi54Qi5XKGEscSkKaWYo +cD45Mil7aWYocD49NTUyOTYpe289cCY2NDUxMgppZihvPT09NTUyOTYpe249cSsxCm49IShuPG0mJihC +LnhCLlcoYSxuKSY2NDUxMik9PT01NjMyMCl9ZWxzZSBuPSExCmlmKCFuKWlmKG89PT01NjMyMCl7bz1x +LTEKbz0hKG8+PTAmJihCLnhCLk8oYSxvKSY2NDUxMik9PT01NTI5Nil9ZWxzZSBvPSExCmVsc2Ugbz0h +MAppZihvKXtpZihxPnIpcy5hKz1CLnhCLk5qKGEscixxKQpyPXErMQpvPXMuYSs9QS5Mdyg5MikKbys9 +QS5MdygxMTcpCnMuYT1vCm8rPUEuTHcoMTAwKQpzLmE9bwpuPXA+Pj44JjE1Cm8rPUEuTHcobjwxMD80 +OCtuOjg3K24pCnMuYT1vCm49cD4+PjQmMTUKbys9QS5MdyhuPDEwPzQ4K246ODcrbikKcy5hPW8Kbj1w +JjE1CnMuYT1vK0EuTHcobjwxMD80OCtuOjg3K24pfX1jb250aW51ZX1pZihwPDMyKXtpZihxPnIpcy5h +Kz1CLnhCLk5qKGEscixxKQpyPXErMQpvPXMuYSs9QS5Mdyg5MikKc3dpdGNoKHApe2Nhc2UgODpzLmE9 +bytBLkx3KDk4KQpicmVhawpjYXNlIDk6cy5hPW8rQS5MdygxMTYpCmJyZWFrCmNhc2UgMTA6cy5hPW8r +QS5MdygxMTApCmJyZWFrCmNhc2UgMTI6cy5hPW8rQS5MdygxMDIpCmJyZWFrCmNhc2UgMTM6cy5hPW8r +QS5MdygxMTQpCmJyZWFrCmRlZmF1bHQ6bys9QS5MdygxMTcpCnMuYT1vCm8rPUEuTHcoNDgpCnMuYT1v +Cm8rPUEuTHcoNDgpCnMuYT1vCm49cD4+PjQmMTUKbys9QS5MdyhuPDEwPzQ4K246ODcrbikKcy5hPW8K +bj1wJjE1CnMuYT1vK0EuTHcobjwxMD80OCtuOjg3K24pCmJyZWFrfX1lbHNlIGlmKHA9PT0zNHx8cD09 +PTkyKXtpZihxPnIpcy5hKz1CLnhCLk5qKGEscixxKQpyPXErMQpvPXMuYSs9QS5Mdyg5MikKcy5hPW8r +QS5MdyhwKX19aWYocj09PTApcy5hKz1hCmVsc2UgaWYocjxtKXMuYSs9Qi54Qi5OaihhLHIsbSl9LApK +bihhKXt2YXIgcyxyLHEscApmb3Iocz10aGlzLmEscj1zLmxlbmd0aCxxPTA7cTxyOysrcSl7cD1zW3Fd +CmlmKGE9PW51bGw/cD09bnVsbDphPT09cCl0aHJvdyBBLmIobmV3IEEuSzgoYSxudWxsKSl9Qi5ObS5p +KHMsYSl9LAppVShhKXt2YXIgcyxyLHEscCxvPXRoaXMKaWYoby50TShhKSlyZXR1cm4Kby5KbihhKQp0 +cnl7cz1vLmIuJDEoYSkKaWYoIW8udE0ocykpe3E9QS5HeShhLG51bGwsby5nVksoKSkKdGhyb3cgQS5i +KHEpfXE9by5hCmlmKDA+PXEubGVuZ3RoKXJldHVybiBBLk9IKHEsLTEpCnEucG9wKCl9Y2F0Y2gocCl7 +cj1BLlJ1KHApCnE9QS5HeShhLHIsby5nVksoKSkKdGhyb3cgQS5iKHEpfX0sCnRNKGEpe3ZhciBzLHIs +cT10aGlzCmlmKHR5cGVvZiBhPT0ibnVtYmVyIil7aWYoIWlzRmluaXRlKGEpKXJldHVybiExCnEuYy5h +Kz1CLkNEWyJbIl0oYSkKcmV0dXJuITB9ZWxzZSBpZihhPT09ITApe3EuYy5hKz0idHJ1ZSIKcmV0dXJu +ITB9ZWxzZSBpZihhPT09ITEpe3EuYy5hKz0iZmFsc2UiCnJldHVybiEwfWVsc2UgaWYoYT09bnVsbCl7 +cS5jLmErPSJudWxsIgpyZXR1cm4hMH1lbHNlIGlmKHR5cGVvZiBhPT0ic3RyaW5nIil7cz1xLmMKcy5h +Kz0nIicKcS5SVChhKQpzLmErPSciJwpyZXR1cm4hMH1lbHNlIGlmKHQuai5iKGEpKXtxLkpuKGEpCnEu +bEsoYSkKcz1xLmEKaWYoMD49cy5sZW5ndGgpcmV0dXJuIEEuT0gocywtMSkKcy5wb3AoKQpyZXR1cm4h +MH1lbHNlIGlmKHQuZi5iKGEpKXtxLkpuKGEpCnI9cS5qdyhhKQpzPXEuYQppZigwPj1zLmxlbmd0aCly +ZXR1cm4gQS5PSChzLC0xKQpzLnBvcCgpCnJldHVybiByfWVsc2UgcmV0dXJuITF9LApsSyhhKXt2YXIg +cyxyLHE9dGhpcy5jCnEuYSs9IlsiCnM9Si5VNihhKQppZihzLmdvcihhKSl7dGhpcy5pVShzLnEoYSww +KSkKZm9yKHI9MTtyPHMuZ2soYSk7KytyKXtxLmErPSIsIgp0aGlzLmlVKHMucShhLHIpKX19cS5hKz0i +XSJ9LApqdyhhKXt2YXIgcyxyLHEscCxvLG4sbT10aGlzLGw9e30KaWYoYS5nbDAoYSkpe20uYy5hKz0i +e30iCnJldHVybiEwfXM9YS5nayhhKSoyCnI9QS5POChzLG51bGwsITEsdC5YKQpxPWwuYT0wCmwuYj0h +MAphLksoMCxuZXcgQS50aShsLHIpKQppZighbC5iKXJldHVybiExCnA9bS5jCnAuYSs9InsiCmZvcihv +PSciJztxPHM7cSs9MixvPScsIicpe3AuYSs9bwptLlJUKEEubihyW3FdKSkKcC5hKz0nIjonCm49cSsx +CmlmKCEobjxzKSlyZXR1cm4gQS5PSChyLG4pCm0uaVUocltuXSl9cC5hKz0ifSIKcmV0dXJuITB9fQpB +LnRpLnByb3RvdHlwZT17CiQyKGEsYil7dmFyIHMscgppZih0eXBlb2YgYSE9InN0cmluZyIpdGhpcy5h +LmI9ITEKcz10aGlzLmIKcj10aGlzLmEKQi5ObS5ZNShzLHIuYSsrLGEpCkIuTm0uWTUocyxyLmErKyxi +KX0sCiRTOjl9CkEudHUucHJvdG90eXBlPXsKZ1ZLKCl7dmFyIHM9dGhpcy5jLmEKcmV0dXJuIHMuY2hh +ckNvZGVBdCgwKT09MD9zOnN9fQpBLnU1LnByb3RvdHlwZT17CmdaRSgpe3JldHVybiBCLlFrfX0KQS5F +My5wcm90b3R5cGU9ewpXSihhKXt2YXIgcyxyLHEscD1BLmpCKDAsbnVsbCxhLmxlbmd0aCksbz1wLTAK +aWYobz09PTApcmV0dXJuIG5ldyBVaW50OEFycmF5KDApCnM9byozCnI9bmV3IFVpbnQ4QXJyYXkocykK +cT1uZXcgQS5SdyhyKQppZihxLkd4KGEsMCxwKSE9PXApe0IueEIuTyhhLHAtMSkKcS5STygpfXJldHVy +biBuZXcgVWludDhBcnJheShyLnN1YmFycmF5KDAsQS5yTSgwLHEuYixzKSkpfX0KQS5Sdy5wcm90b3R5 +cGU9ewpSTygpe3ZhciBzPXRoaXMscj1zLmMscT1zLmIscD1zLmI9cSsxLG89ci5sZW5ndGgKaWYoIShx +PG8pKXJldHVybiBBLk9IKHIscSkKcltxXT0yMzkKcT1zLmI9cCsxCmlmKCEocDxvKSlyZXR1cm4gQS5P +SChyLHApCnJbcF09MTkxCnMuYj1xKzEKaWYoIShxPG8pKXJldHVybiBBLk9IKHIscSkKcltxXT0xODl9 +LApPNihhLGIpe3ZhciBzLHIscSxwLG8sbj10aGlzCmlmKChiJjY0NTEyKT09PTU2MzIwKXtzPTY1NTM2 +KygoYSYxMDIzKTw8MTApfGImMTAyMwpyPW4uYwpxPW4uYgpwPW4uYj1xKzEKbz1yLmxlbmd0aAppZigh +KHE8bykpcmV0dXJuIEEuT0gocixxKQpyW3FdPXM+Pj4xOHwyNDAKcT1uLmI9cCsxCmlmKCEocDxvKSly +ZXR1cm4gQS5PSChyLHApCnJbcF09cz4+PjEyJjYzfDEyOApwPW4uYj1xKzEKaWYoIShxPG8pKXJldHVy +biBBLk9IKHIscSkKcltxXT1zPj4+NiY2M3wxMjgKbi5iPXArMQppZighKHA8bykpcmV0dXJuIEEuT0go +cixwKQpyW3BdPXMmNjN8MTI4CnJldHVybiEwfWVsc2V7bi5STygpCnJldHVybiExfX0sCkd4KGEsYixj +KXt2YXIgcyxyLHEscCxvLG4sbSxsPXRoaXMKaWYoYiE9PWMmJihCLnhCLk8oYSxjLTEpJjY0NTEyKT09 +PTU1Mjk2KS0tYwpmb3Iocz1sLmMscj1zLmxlbmd0aCxxPWI7cTxjOysrcSl7cD1CLnhCLlcoYSxxKQpp +ZihwPD0xMjcpe289bC5iCmlmKG8+PXIpYnJlYWsKbC5iPW8rMQpzW29dPXB9ZWxzZXtvPXAmNjQ1MTIK +aWYobz09PTU1Mjk2KXtpZihsLmIrND5yKWJyZWFrCm49cSsxCmlmKGwuTzYocCxCLnhCLlcoYSxuKSkp +cT1ufWVsc2UgaWYobz09PTU2MzIwKXtpZihsLmIrMz5yKWJyZWFrCmwuUk8oKX1lbHNlIGlmKHA8PTIw +NDcpe289bC5iCm09bysxCmlmKG0+PXIpYnJlYWsKbC5iPW0KaWYoIShvPHIpKXJldHVybiBBLk9IKHMs +bykKc1tvXT1wPj4+NnwxOTIKbC5iPW0rMQpzW21dPXAmNjN8MTI4fWVsc2V7bz1sLmIKaWYobysyPj1y +KWJyZWFrCm09bC5iPW8rMQppZighKG88cikpcmV0dXJuIEEuT0gocyxvKQpzW29dPXA+Pj4xMnwyMjQK +bz1sLmI9bSsxCmlmKCEobTxyKSlyZXR1cm4gQS5PSChzLG0pCnNbbV09cD4+PjYmNjN8MTI4CmwuYj1v +KzEKaWYoIShvPHIpKXJldHVybiBBLk9IKHMsbykKc1tvXT1wJjYzfDEyOH19fXJldHVybiBxfX0KQS5H +WS5wcm90b3R5cGU9ewpXSihhKXt2YXIgcyxyCnQuTC5hKGEpCnM9dGhpcy5hCnI9QS5reShzLGEsMCxu +dWxsKQppZihyIT1udWxsKXJldHVybiByCnJldHVybiBuZXcgQS5ieihzKS5OZShhLDAsbnVsbCwhMCl9 +fQpBLmJ6LnByb3RvdHlwZT17Ck5lKGEsYixjLGQpe3ZhciBzLHIscSxwLG8sbj10aGlzCnQuTC5hKGEp +CnM9QS5qQihiLGMsSi5IbShhKSkKaWYoYj09PXMpcmV0dXJuIiIKcj1BLmp5KGEsYixzKQpxPW4uaE8o +ciwwLHMtYiwhMCkKcD1uLmIKaWYoKHAmMSkhPT0wKXtvPUEuajQocCkKbi5iPTAKdGhyb3cgQS5iKEEu +cnIobyxhLGIrbi5jKSl9cmV0dXJuIHF9LApoTyhhLGIsYyxkKXt2YXIgcyxyLHE9dGhpcwppZihjLWI+ +MTAwMCl7cz1CLmpuLkJVKGIrYywyKQpyPXEuaE8oYSxiLHMsITEpCmlmKChxLmImMSkhPT0wKXJldHVy +biByCnJldHVybiByK3EuaE8oYSxzLGMsZCl9cmV0dXJuIHEuRWgoYSxiLGMsZCl9LApFaChhLGIsYyxk +KXt2YXIgcyxyLHEscCxvLG4sbSxsLGs9dGhpcyxqPTY1NTMzLGk9ay5iLGg9ay5jLGc9bmV3IEEuTSgi +IiksZj1iKzEsZT1hLmxlbmd0aAppZighKGI+PTAmJmI8ZSkpcmV0dXJuIEEuT0goYSxiKQpzPWFbYl0K +JGxhYmVsMCQwOmZvcihyPWsuYTshMDspe2Zvcig7ITA7Zj1vKXtxPUIueEIuVygiQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB -QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZGRkZGRkZGRkZG -RkZGRkZHR0dHR0dHR0dHR0dHR0dHSEhISEhISEhISEhISEhISEhISEhISEhISEhISUhISEpFRUJCQkJC -QkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQktDQ0NDQ0NDQ0NDQ0NEQ0xPTk5OTUVFRUVFRUVFRUVFIixz -KSYzMQpoPWk8PTMyP3MmNjE2OTQ+Pj5xOihzJjYzfGg8PDYpPj4+MAppPUIueEIuVygiIFx4MDAwOlhF -Q0NDQ0NOOmxEYiBceDAwMDpYRUNDQ0NDTnZsRGIgXHgwMDA6WEVDQ0NDQ046bERiIEFBQUFBXHgwMFx4 -MDBceDAwXHgwMFx4MDBBQUFBQTAwMDAwQUFBQUE6Ojo6OkFBQUFBR0cwMDBBQUFBQTAwS0tLQUFBQUFH -Ojo6OkFBQUFBOklJSUlBQUFBQTAwMFx4ODAwQUFBQUFceDAwXHgwMFx4MDBceDAwIEFBQUFBIixpK3Ep -CmlmKGk9PT0wKXtnLmErPUEuTHcoaCkKaWYoZj09PWMpYnJlYWsgJGxhYmVsMCQwCmJyZWFrfWVsc2Ug -aWYoKGkmMSkhPT0wKXtpZihyKXN3aXRjaChpKXtjYXNlIDY5OmNhc2UgNjc6Zy5hKz1BLkx3KGopCmJy -ZWFrCmNhc2UgNjU6Zy5hKz1BLkx3KGopOy0tZgpicmVhawpkZWZhdWx0OnA9Zy5hKz1BLkx3KGopCmcu -YT1wK0EuTHcoaikKYnJlYWt9ZWxzZXtrLmI9aQprLmM9Zi0xCnJldHVybiIifWk9MH1pZihmPT09Yyli -cmVhayAkbGFiZWwwJDAKbz1mKzEKaWYoIShmPj0wJiZmPGUpKXJldHVybiBBLk9IKGEsZikKcz1hW2Zd -fW89ZisxCmlmKCEoZj49MCYmZjxlKSlyZXR1cm4gQS5PSChhLGYpCnM9YVtmXQppZihzPDEyOCl7d2hp -bGUoITApe2lmKCEobzxjKSl7bj1jCmJyZWFrfW09bysxCmlmKCEobz49MCYmbzxlKSlyZXR1cm4gQS5P -SChhLG8pCnM9YVtvXQppZihzPj0xMjgpe249bS0xCm89bQpicmVha31vPW19aWYobi1mPDIwKWZvcihs -PWY7bDxuOysrbCl7aWYoIShsPGUpKXJldHVybiBBLk9IKGEsbCkKZy5hKz1BLkx3KGFbbF0pfWVsc2Ug -Zy5hKz1BLkhNKGEsZixuKQppZihuPT09YylicmVhayAkbGFiZWwwJDAKZj1vfWVsc2UgZj1vfWlmKGQm -Jmk+MzIpaWYocilnLmErPUEuTHcoaikKZWxzZXtrLmI9NzcKay5jPWMKcmV0dXJuIiJ9ay5iPWkKay5j -PWgKZT1nLmEKcmV0dXJuIGUuY2hhckNvZGVBdCgwKT09MD9lOmV9fQpBLldGLnByb3RvdHlwZT17CiQy -KGEsYil7dmFyIHMscixxCnQuZm8uYShhKQpzPXRoaXMuYgpyPXRoaXMuYQpxPXMuYSs9ci5hCnErPWEu -YQpzLmE9cQpzLmE9cSsiOiAiCnMuYSs9QS5obChiKQpyLmE9IiwgIn0sCiRTOjQ0fQpBLmlQLnByb3Rv -dHlwZT17CkROKGEsYil7aWYoYj09bnVsbClyZXR1cm4hMQpyZXR1cm4gYiBpbnN0YW5jZW9mIEEuaVAm -JnRoaXMuYT09PWIuYSYmITB9LApnbShhKXt2YXIgcz10aGlzLmEKcmV0dXJuKHNeQi5qbi53RyhzLDMw -KSkmMTA3Mzc0MTgyM30sCiJbIihhKXt2YXIgcz10aGlzLHI9QS5HcShBLnRKKHMpKSxxPUEuaDAoQS5O -UyhzKSkscD1BLmgwKEEuakEocykpLG89QS5oMChBLklYKHMpKSxuPUEuaDAoQS5jaChzKSksbT1BLmgw -KEEuSmQocykpLGw9QS5WeChBLm8xKHMpKQpyZXR1cm4gcisiLSIrcSsiLSIrcCsiICIrbysiOiIrbisi -OiIrbSsiLiIrbH19CkEuY2sucHJvdG90eXBlPXt9CkEuWFMucHJvdG90eXBlPXsKZ0lJKCl7cmV0dXJu -IEEudHModGhpcy4kdGhyb3duSnNFcnJvcil9fQpBLkM2LnByb3RvdHlwZT17CiJbIihhKXt2YXIgcz10 -aGlzLmEKaWYocyE9bnVsbClyZXR1cm4iQXNzZXJ0aW9uIGZhaWxlZDogIitBLmhsKHMpCnJldHVybiJB -c3NlcnRpb24gZmFpbGVkIn19CkEuRXoucHJvdG90eXBlPXt9CkEuRi5wcm90b3R5cGU9ewoiWyIoYSl7 -cmV0dXJuIlRocm93IG9mIG51bGwuIn19CkEuQVQucHJvdG90eXBlPXsKZ1ooKXtyZXR1cm4iSW52YWxp -ZCBhcmd1bWVudCIrKCF0aGlzLmE/IihzKSI6IiIpfSwKZ04oKXtyZXR1cm4iIn0sCiJbIihhKXt2YXIg -cz10aGlzLHI9cy5jLHE9cj09bnVsbD8iIjoiICgiK3IrIikiLHA9cy5kLG89cD09bnVsbD8iIjoiOiAi -K0EuRWoocCksbj1zLmdaKCkrcStvCmlmKCFzLmEpcmV0dXJuIG4KcmV0dXJuIG4rcy5nTigpKyI6ICIr -QS5obChzLmIpfX0KQS5iSi5wcm90b3R5cGU9ewpnWigpe3JldHVybiJSYW5nZUVycm9yIn0sCmdOKCl7 -dmFyIHMscj10aGlzLmUscT10aGlzLmYKaWYocj09bnVsbClzPXEhPW51bGw/IjogTm90IGxlc3MgdGhh -biBvciBlcXVhbCB0byAiK0EuRWoocSk6IiIKZWxzZSBpZihxPT1udWxsKXM9IjogTm90IGdyZWF0ZXIg -dGhhbiBvciBlcXVhbCB0byAiK0EuRWoocikKZWxzZSBpZihxPnIpcz0iOiBOb3QgaW4gaW5jbHVzaXZl -IHJhbmdlICIrQS5FaihyKSsiLi4iK0EuRWoocSkKZWxzZSBzPXE8cj8iOiBWYWxpZCB2YWx1ZSByYW5n -ZSBpcyBlbXB0eSI6IjogT25seSB2YWxpZCB2YWx1ZSBpcyAiK0EuRWoocikKcmV0dXJuIHN9fQpBLmVZ -LnByb3RvdHlwZT17CmdaKCl7cmV0dXJuIlJhbmdlRXJyb3IifSwKZ04oKXtpZihBLklaKHRoaXMuYik8 -MClyZXR1cm4iOiBpbmRleCBtdXN0IG5vdCBiZSBuZWdhdGl2ZSIKdmFyIHM9dGhpcy5mCmlmKHM9PT0w -KXJldHVybiI6IG5vIGluZGljZXMgYXJlIHZhbGlkIgpyZXR1cm4iOiBpbmRleCBzaG91bGQgYmUgbGVz -cyB0aGFuICIrc30sCmdrKGEpe3JldHVybiB0aGlzLmZ9fQpBLm1wLnByb3RvdHlwZT17CiJbIihhKXt2 -YXIgcyxyLHEscCxvLG4sbSxsLGs9dGhpcyxqPXt9LGk9bmV3IEEuTSgiIikKai5hPSIiCnM9ay5jCmZv -cihyPXMubGVuZ3RoLHE9MCxwPSIiLG89IiI7cTxyOysrcSxvPSIsICIpe249c1txXQppLmE9cCtvCnA9 -aS5hKz1BLmhsKG4pCmouYT0iLCAifWsuZC5LKDAsbmV3IEEuV0YoaixpKSkKbT1BLmhsKGsuYSkKbD1p -WyJbIl0oMCkKcmV0dXJuIk5vU3VjaE1ldGhvZEVycm9yOiBtZXRob2Qgbm90IGZvdW5kOiAnIitrLmIu -YSsiJ1xuUmVjZWl2ZXI6ICIrbSsiXG5Bcmd1bWVudHM6IFsiK2wrIl0ifX0KQS51Yi5wcm90b3R5cGU9 -ewoiWyIoYSl7cmV0dXJuIlVuc3VwcG9ydGVkIG9wZXJhdGlvbjogIit0aGlzLmF9fQpBLmRzLnByb3Rv -dHlwZT17CiJbIihhKXtyZXR1cm4iVW5pbXBsZW1lbnRlZEVycm9yOiAiK3RoaXMuYX19CkEubGoucHJv -dG90eXBlPXsKIlsiKGEpe3JldHVybiJCYWQgc3RhdGU6ICIrdGhpcy5hfX0KQS5VVi5wcm90b3R5cGU9 -ewoiWyIoYSl7dmFyIHM9dGhpcy5hCmlmKHM9PW51bGwpcmV0dXJuIkNvbmN1cnJlbnQgbW9kaWZpY2F0 -aW9uIGR1cmluZyBpdGVyYXRpb24uIgpyZXR1cm4iQ29uY3VycmVudCBtb2RpZmljYXRpb24gZHVyaW5n -IGl0ZXJhdGlvbjogIitBLmhsKHMpKyIuIn19CkEuazUucHJvdG90eXBlPXsKIlsiKGEpe3JldHVybiJP -dXQgb2YgTWVtb3J5In0sCmdJSSgpe3JldHVybiBudWxsfSwKJGlYUzoxfQpBLktZLnByb3RvdHlwZT17 -CiJbIihhKXtyZXR1cm4iU3RhY2sgT3ZlcmZsb3cifSwKZ0lJKCl7cmV0dXJuIG51bGx9LAokaVhTOjF9 -CkEucC5wcm90b3R5cGU9ewoiWyIoYSl7cmV0dXJuIlJlYWRpbmcgc3RhdGljIHZhcmlhYmxlICciK3Ro -aXMuYSsiJyBkdXJpbmcgaXRzIGluaXRpYWxpemF0aW9uIn19CkEuQ0QucHJvdG90eXBlPXsKIlsiKGEp -e3JldHVybiJFeGNlcHRpb246ICIrdGhpcy5hfSwKJGlSejoxfQpBLmFFLnByb3RvdHlwZT17CiJbIihh -KXt2YXIgcyxyLHEscCxvLG4sbSxsLGssaixpLGg9dGhpcy5hLGc9IiIhPT1oPyJGb3JtYXRFeGNlcHRp -b246ICIraDoiRm9ybWF0RXhjZXB0aW9uIixmPXRoaXMuYyxlPXRoaXMuYgppZih0eXBlb2YgZT09InN0 -cmluZyIpe2lmKGYhPW51bGwpcz1mPDB8fGY+ZS5sZW5ndGgKZWxzZSBzPSExCmlmKHMpZj1udWxsCmlm -KGY9PW51bGwpe2lmKGUubGVuZ3RoPjc4KWU9Qi54Qi5OaihlLDAsNzUpKyIuLi4iCnJldHVybiBnKyJc -biIrZX1mb3Iocj0xLHE9MCxwPSExLG89MDtvPGY7KytvKXtuPUIueEIuVyhlLG8pCmlmKG49PT0xMCl7 -aWYocSE9PW98fCFwKSsrcgpxPW8rMQpwPSExfWVsc2UgaWYobj09PTEzKXsrK3IKcT1vKzEKcD0hMH19 -Zz1yPjE/ZysoIiAoYXQgbGluZSAiK3IrIiwgY2hhcmFjdGVyICIrKGYtcSsxKSsiKVxuIik6ZysoIiAo -YXQgY2hhcmFjdGVyICIrKGYrMSkrIilcbiIpCm09ZS5sZW5ndGgKZm9yKG89ZjtvPG07KytvKXtuPUIu -eEIuTyhlLG8pCmlmKG49PT0xMHx8bj09PTEzKXttPW8KYnJlYWt9fWlmKG0tcT43OClpZihmLXE8NzUp -e2w9cSs3NQprPXEKaj0iIgppPSIuLi4ifWVsc2V7aWYobS1mPDc1KXtrPW0tNzUKbD1tCmk9IiJ9ZWxz -ZXtrPWYtMzYKbD1mKzM2Cmk9Ii4uLiJ9aj0iLi4uIn1lbHNle2w9bQprPXEKaj0iIgppPSIifXJldHVy -biBnK2orQi54Qi5OaihlLGssbCkraSsiXG4iK0IueEIuSXgoIiAiLGYtaytqLmxlbmd0aCkrIl5cbiJ9 -ZWxzZSByZXR1cm4gZiE9bnVsbD9nKygiIChhdCBvZmZzZXQgIitBLkVqKGYpKyIpIik6Z30sCiRpUno6 -MX0KQS5jWC5wcm90b3R5cGU9ewpkcihhLGIpe3JldHVybiBBLkdKKHRoaXMsQS5MaCh0aGlzKS5DKCJj -WC5FIiksYil9LApFMihhLGIsYyl7dmFyIHM9QS5MaCh0aGlzKQpyZXR1cm4gQS5LMSh0aGlzLHMuS3Eo -YykuQygiMShjWC5FKSIpLmEoYikscy5DKCJjWC5FIiksYyl9LApldihhLGIpe3ZhciBzPUEuTGgodGhp -cykKcmV0dXJuIG5ldyBBLlU1KHRoaXMscy5DKCJhMihjWC5FKSIpLmEoYikscy5DKCJVNTxjWC5FPiIp -KX0sCk4wKGEsYixjLGQpe3ZhciBzLHIKZC5hKGIpCkEuTGgodGhpcykuS3EoZCkuQygiMSgxLGNYLkUp -IikuYShjKQpmb3Iocz10aGlzLmdBKHRoaXMpLHI9YjtzLkcoKTspcj1jLiQyKHIscy5nbCgpKQpyZXR1 -cm4gcn0sCnR0KGEsYil7cmV0dXJuIEEuWTEodGhpcyxiLEEuTGgodGhpcykuQygiY1guRSIpKX0sCmJy -KGEpe3JldHVybiB0aGlzLnR0KGEsITApfSwKZ2soYSl7dmFyIHMscj10aGlzLmdBKHRoaXMpCmZvcihz -PTA7ci5HKCk7KSsrcwpyZXR1cm4gc30sCmdsMChhKXtyZXR1cm4hdGhpcy5nQSh0aGlzKS5HKCl9LApn -b3IoYSl7cmV0dXJuIXRoaXMuZ2wwKHRoaXMpfSwKZVIoYSxiKXtyZXR1cm4gQS5iSyh0aGlzLGIsQS5M -aCh0aGlzKS5DKCJjWC5FIikpfSwKZ3I4KGEpe3ZhciBzLHI9dGhpcy5nQSh0aGlzKQppZighci5HKCkp -dGhyb3cgQS5iKEEuV3AoKSkKcz1yLmdsKCkKaWYoci5HKCkpdGhyb3cgQS5iKEEuQW0oKSkKcmV0dXJu -IHN9LApFKGEsYil7dmFyIHMscixxCkEuazEoYiwiaW5kZXgiKQpmb3Iocz10aGlzLmdBKHRoaXMpLHI9 -MDtzLkcoKTspe3E9cy5nbCgpCmlmKGI9PT1yKXJldHVybiBxOysrcn10aHJvdyBBLmIoQS5DZihiLHRo -aXMsImluZGV4IixudWxsLHIpKX0sCiJbIihhKXtyZXR1cm4gQS5FUCh0aGlzLCIoIiwiKSIpfX0KQS5B -bi5wcm90b3R5cGU9e30KQS5OMy5wcm90b3R5cGU9ewoiWyIoYSl7cmV0dXJuIk1hcEVudHJ5KCIrQS5F -aih0aGlzLmEpKyI6ICIrQS5Faih0aGlzLmIpKyIpIn19CkEuYzgucHJvdG90eXBlPXsKZ20oYSl7cmV0 -dXJuIEEuTWgucHJvdG90eXBlLmdtLmNhbGwodGhpcyx0aGlzKX0sCiJbIihhKXtyZXR1cm4ibnVsbCJ9 -fQpBLk1oLnByb3RvdHlwZT17JGlNaDoxLApETihhLGIpe3JldHVybiB0aGlzPT09Yn0sCmdtKGEpe3Jl -dHVybiBBLmVRKHRoaXMpfSwKIlsiKGEpe3JldHVybiJJbnN0YW5jZSBvZiAnIitBLmxoKHRoaXMpKyIn -In0sCmU3KGEsYil7dC5vLmEoYikKdGhyb3cgQS5iKEEubHIodGhpcyxiLmdXYSgpLGIuZ25kKCksYi5n -Vm0oKSkpfSwKdG9TdHJpbmcoKXtyZXR1cm4gdGhpc1siWyJdKHRoaXMpfX0KQS5aZC5wcm90b3R5cGU9 -ewoiWyIoYSl7cmV0dXJuIiJ9LAokaUd6OjF9CkEuTS5wcm90b3R5cGU9ewpnayhhKXtyZXR1cm4gdGhp -cy5hLmxlbmd0aH0sCiJbIihhKXt2YXIgcz10aGlzLmEKcmV0dXJuIHMuY2hhckNvZGVBdCgwKT09MD9z -OnN9LAokaUJMOjF9CkEubjEucHJvdG90eXBlPXsKJDIoYSxiKXt2YXIgcyxyLHEscAp0LkkuYShhKQpB -Lm4oYikKcz1CLnhCLk9ZKGIsIj0iKQppZihzPT09LTEpe2lmKGIhPT0iIilhLlk1KDAsQS5rdShiLDAs -Yi5sZW5ndGgsdGhpcy5hLCEwKSwiIil9ZWxzZSBpZihzIT09MCl7cj1CLnhCLk5qKGIsMCxzKQpxPUIu -eEIueW4oYixzKzEpCnA9dGhpcy5hCmEuWTUoMCxBLmt1KHIsMCxyLmxlbmd0aCxwLCEwKSxBLmt1KHEs -MCxxLmxlbmd0aCxwLCEwKSl9cmV0dXJuIGF9LAokUzo0N30KQS5jUy5wcm90b3R5cGU9ewokMihhLGIp -e3Rocm93IEEuYihBLnJyKCJJbGxlZ2FsIElQdjQgYWRkcmVzcywgIithLHRoaXMuYSxiKSl9LAokUzox -OX0KQS5WQy5wcm90b3R5cGU9ewokMihhLGIpe3Rocm93IEEuYihBLnJyKCJJbGxlZ2FsIElQdjYgYWRk -cmVzcywgIithLHRoaXMuYSxiKSl9LAokUzo1Mn0KQS5KVC5wcm90b3R5cGU9ewokMihhLGIpe3ZhciBz -CmlmKGItYT40KXRoaXMuYS4kMigiYW4gSVB2NiBwYXJ0IGNhbiBvbmx5IGNvbnRhaW4gYSBtYXhpbXVt -IG9mIDQgaGV4IGRpZ2l0cyIsYSkKcz1BLlFBKEIueEIuTmoodGhpcy5iLGEsYiksMTYpCmlmKHM8MHx8 -cz42NTUzNSl0aGlzLmEuJDIoImVhY2ggcGFydCBtdXN0IGJlIGluIHRoZSByYW5nZSBvZiBgMHgwLi4w -eEZGRkZgIixhKQpyZXR1cm4gc30sCiRTOjIwfQpBLkRuLnByb3RvdHlwZT17CmduRCgpe3ZhciBzLHIs -cSxwLG89dGhpcyxuPW8udwppZihuPT09JCl7cz1vLmEKcj1zLmxlbmd0aCE9PTA/IiIrcysiOiI6IiIK -cT1vLmMKcD1xPT1udWxsCmlmKCFwfHxzPT09ImZpbGUiKXtzPXIrIi8vIgpyPW8uYgppZihyLmxlbmd0 -aCE9PTApcz1zK3IrIkAiCmlmKCFwKXMrPXEKcj1vLmQKaWYociE9bnVsbClzPXMrIjoiK0EuRWoocil9 -ZWxzZSBzPXIKcys9by5lCnI9by5mCmlmKHIhPW51bGwpcz1zKyI/IityCnI9by5yCmlmKHIhPW51bGwp -cz1zKyIjIityCmlmKG4hPT0kKUEucFIoIl90ZXh0IikKbj1vLnc9cy5jaGFyQ29kZUF0KDApPT0wP3M6 -c31yZXR1cm4gbn0sCmdGaigpe3ZhciBzLHIscT10aGlzLHA9cS54CmlmKHA9PT0kKXtzPXEuZQppZihz -Lmxlbmd0aCE9PTAmJkIueEIuVyhzLDApPT09NDcpcz1CLnhCLnluKHMsMSkKcj1zLmxlbmd0aD09PTA/ -Qi54RDpBLkFGKG5ldyBBLmxKKEEuUUkocy5zcGxpdCgiLyIpLHQucyksdC5kTy5hKEEuUEgoKSksdC5k -byksdC5OKQppZihxLnghPT0kKUEucFIoInBhdGhTZWdtZW50cyIpCnEuc0twKHIpCnA9cn1yZXR1cm4g -cH0sCmdtKGEpe3ZhciBzLHI9dGhpcyxxPXIueQppZihxPT09JCl7cz1CLnhCLmdtKHIuZ25EKCkpCmlm -KHIueSE9PSQpQS5wUigiaGFzaENvZGUiKQpyLnk9cwpxPXN9cmV0dXJuIHF9LApnaFkoKXt2YXIgcyxy -LHE9dGhpcyxwPXEuegppZihwPT09JCl7cz1xLmYKcj1uZXcgQS5HaihBLldYKHM9PW51bGw/IiI6cyks -dC5kdykKaWYocS56IT09JClBLnBSKCJxdWVyeVBhcmFtZXRlcnMiKQpxLnNOTShyKQpwPXJ9cmV0dXJu -IHB9LApna3UoKXtyZXR1cm4gdGhpcy5ifSwKZ0pmKGEpe3ZhciBzPXRoaXMuYwppZihzPT1udWxsKXJl -dHVybiIiCmlmKEIueEIubihzLCJbIikpcmV0dXJuIEIueEIuTmoocywxLHMubGVuZ3RoLTEpCnJldHVy -biBzfSwKZ3RwKGEpe3ZhciBzPXRoaXMuZApyZXR1cm4gcz09bnVsbD9BLndLKHRoaXMuYSk6c30sCmd0 -UCgpe3ZhciBzPXRoaXMuZgpyZXR1cm4gcz09bnVsbD8iIjpzfSwKZ0thKCl7dmFyIHM9dGhpcy5yCnJl -dHVybiBzPT1udWxsPyIiOnN9LApoQihhKXt2YXIgcz10aGlzLmEKaWYoYS5sZW5ndGghPT1zLmxlbmd0 -aClyZXR1cm4hMQpyZXR1cm4gQS5iVShhLHMsMCk+PTB9LApubShhLGIpe3ZhciBzLHIscSxwLG8sbixt -LGwsayxqPXRoaXMKdC5jOS5hKGIpCnM9ai5hCnI9cz09PSJmaWxlIgpxPWouYgpwPWouZApvPWouYwpp -ZighKG8hPW51bGwpKW89cS5sZW5ndGghPT0wfHxwIT1udWxsfHxyPyIiOm51bGwKbj1qLmUKaWYoIXIp -bT1vIT1udWxsJiZuLmxlbmd0aCE9PTAKZWxzZSBtPSEwCmlmKG0mJiFCLnhCLm4obiwiLyIpKW49Ii8i -K24KbD1uCms9QS5sZShudWxsLDAsMCxiKQpyZXR1cm4gQS5DZyhzLHEsbyxwLGwsayxqLnIpfSwKSmgo -YSxiKXt2YXIgcyxyLHEscCxvLG4KZm9yKHM9MCxyPTA7Qi54Qi5RaShiLCIuLi8iLHIpOyl7cis9Mzsr -K3N9cT1CLnhCLmNuKGEsIi8iKQp3aGlsZSghMCl7aWYoIShxPjAmJnM+MCkpYnJlYWsKcD1CLnhCLlBr -KGEsIi8iLHEtMSkKaWYocDwwKWJyZWFrCm89cS1wCm49byE9PTIKaWYoIW58fG89PT0zKWlmKEIueEIu -TyhhLHArMSk9PT00NiluPSFufHxCLnhCLk8oYSxwKzIpPT09NDYKZWxzZSBuPSExCmVsc2Ugbj0hMQpp -ZihuKWJyZWFrOy0tcwpxPXB9cmV0dXJuIEIueEIuaTcoYSxxKzEsbnVsbCxCLnhCLnluKGIsci0zKnMp -KX0sClpJKGEpe3JldHVybiB0aGlzLm1TKEEuaEsoYSkpfSwKbVMoYSl7dmFyIHMscixxLHAsbyxuLG0s -bCxrLGosaT10aGlzLGg9bnVsbAppZihhLmdGaSgpLmxlbmd0aCE9PTApe3M9YS5nRmkoKQppZihhLmdj -aigpKXtyPWEuZ2t1KCkKcT1hLmdKZihhKQpwPWEuZ3hBKCk/YS5ndHAoYSk6aH1lbHNle3A9aApxPXAK -cj0iIn1vPUEueGUoYS5nSWkoYSkpCm49YS5nUUQoKT9hLmd0UCgpOmh9ZWxzZXtzPWkuYQppZihhLmdj -aigpKXtyPWEuZ2t1KCkKcT1hLmdKZihhKQpwPUEud0IoYS5neEEoKT9hLmd0cChhKTpoLHMpCm89QS54 -ZShhLmdJaShhKSkKbj1hLmdRRCgpP2EuZ3RQKCk6aH1lbHNle3I9aS5iCnE9aS5jCnA9aS5kCm89aS5l -CmlmKGEuZ0lpKGEpPT09IiIpbj1hLmdRRCgpP2EuZ3RQKCk6aS5mCmVsc2V7bT1BLnVqKGksbykKaWYo -bT4wKXtsPUIueEIuTmoobywwLG0pCm89YS5ndFQoKT9sK0EueGUoYS5nSWkoYSkpOmwrQS54ZShpLkpo -KEIueEIueW4obyxsLmxlbmd0aCksYS5nSWkoYSkpKX1lbHNlIGlmKGEuZ3RUKCkpbz1BLnhlKGEuZ0lp -KGEpKQplbHNlIGlmKG8ubGVuZ3RoPT09MClpZihxPT1udWxsKW89cy5sZW5ndGg9PT0wP2EuZ0lpKGEp -OkEueGUoYS5nSWkoYSkpCmVsc2Ugbz1BLnhlKCIvIithLmdJaShhKSkKZWxzZXtrPWkuSmgobyxhLmdJ -aShhKSkKaj1zLmxlbmd0aD09PTAKaWYoIWp8fHEhPW51bGx8fEIueEIubihvLCIvIikpbz1BLnhlKGsp -CmVsc2Ugbz1BLndGKGssIWp8fHEhPW51bGwpfW49YS5nUUQoKT9hLmd0UCgpOmh9fX1yZXR1cm4gQS5D -ZyhzLHIscSxwLG8sbixhLmdaOCgpP2EuZ0thKCk6aCl9LApnY2ooKXtyZXR1cm4gdGhpcy5jIT1udWxs -fSwKZ3hBKCl7cmV0dXJuIHRoaXMuZCE9bnVsbH0sCmdRRCgpe3JldHVybiB0aGlzLmYhPW51bGx9LApn -WjgoKXtyZXR1cm4gdGhpcy5yIT1udWxsfSwKZ3RUKCl7cmV0dXJuIEIueEIubih0aGlzLmUsIi8iKX0s -CnQ0KCl7dmFyIHMscj10aGlzLHE9ci5hCmlmKHEhPT0iIiYmcSE9PSJmaWxlIil0aHJvdyBBLmIoQS5M -NCgiQ2Fubm90IGV4dHJhY3QgYSBmaWxlIHBhdGggZnJvbSBhICIrcSsiIFVSSSIpKQpxPXIuZgppZigo -cT09bnVsbD8iIjpxKSE9PSIiKXRocm93IEEuYihBLkw0KHUuaSkpCnE9ci5yCmlmKChxPT1udWxsPyIi -OnEpIT09IiIpdGhyb3cgQS5iKEEuTDQodS5sKSkKcT0kLndRKCkKaWYocSlxPUEubW4ocikKZWxzZXtp -ZihyLmMhPW51bGwmJnIuZ0pmKHIpIT09IiIpQS52KEEuTDQodS5qKSkKcz1yLmdGaigpCkEua0Uocywh -MSkKcT1BLmwoQi54Qi5uKHIuZSwiLyIpPyIiKyIvIjoiIixzLCIvIikKcT1xLmNoYXJDb2RlQXQoMCk9 -PTA/cTpxfXJldHVybiBxfSwKIlsiKGEpe3JldHVybiB0aGlzLmduRCgpfSwKRE4oYSxiKXt2YXIgcyxy -LHE9dGhpcwppZihiPT1udWxsKXJldHVybiExCmlmKHE9PT1iKXJldHVybiEwCmlmKHQuZEQuYihiKSlp -ZihxLmE9PT1iLmdGaSgpKWlmKHEuYyE9bnVsbD09PWIuZ2NqKCkpaWYocS5iPT09Yi5na3UoKSlpZihx -LmdKZihxKT09PWIuZ0pmKGIpKWlmKHEuZ3RwKHEpPT09Yi5ndHAoYikpaWYocS5lPT09Yi5nSWkoYikp -e3M9cS5mCnI9cz09bnVsbAppZighcj09PWIuZ1FEKCkpe2lmKHIpcz0iIgppZihzPT09Yi5ndFAoKSl7 -cz1xLnIKcj1zPT1udWxsCmlmKCFyPT09Yi5nWjgoKSl7aWYocilzPSIiCnM9cz09PWIuZ0thKCl9ZWxz -ZSBzPSExfWVsc2Ugcz0hMX1lbHNlIHM9ITF9ZWxzZSBzPSExCmVsc2Ugcz0hMQplbHNlIHM9ITEKZWxz -ZSBzPSExCmVsc2Ugcz0hMQplbHNlIHM9ITEKZWxzZSBzPSExCnJldHVybiBzfSwKc0twKGEpe3RoaXMu -eD10LmEuYShhKX0sCnNOTShhKXt0aGlzLno9dC5JLmEoYSl9LAokaWlEOjEsCmdGaSgpe3JldHVybiB0 -aGlzLmF9LApnSWkoYSl7cmV0dXJuIHRoaXMuZX19CkEuUloucHJvdG90eXBlPXsKJDEoYSl7cmV0dXJu -IEEuZVAoQi5aSixBLm4oYSksQi54TSwhMSl9LAokUzoyfQpBLk1FLnByb3RvdHlwZT17CiQyKGEsYil7 -dmFyIHM9dGhpcy5iLHI9dGhpcy5hCnMuYSs9ci5hCnIuYT0iJiIKcj1zLmErPUEuZVAoQi5GMyxhLEIu -eE0sITApCmlmKGIhPW51bGwmJmIubGVuZ3RoIT09MCl7cy5hPXIrIj0iCnMuYSs9QS5lUChCLkYzLGIs -Qi54TSwhMCl9fSwKJFM6MjJ9CkEueTUucHJvdG90eXBlPXsKJDIoYSxiKXt2YXIgcyxyCkEubihhKQpp -ZihiPT1udWxsfHx0eXBlb2YgYj09InN0cmluZyIpdGhpcy5hLiQyKGEsQS5rKGIpKQplbHNlIGZvcihz -PUouSVQodC5rLmEoYikpLHI9dGhpcy5hO3MuRygpOylyLiQyKGEsQS5uKHMuZ2woKSkpfSwKJFM6MTF9 -CkEuUEUucHJvdG90eXBlPXsKZ2xSKCl7dmFyIHMscixxLHAsbz10aGlzLG49bnVsbCxtPW8uYwppZiht -PT1udWxsKXttPW8uYgppZigwPj1tLmxlbmd0aClyZXR1cm4gQS5PSChtLDApCnM9by5hCm09bVswXSsx -CnI9Qi54Qi5YVShzLCI/IixtKQpxPXMubGVuZ3RoCmlmKHI+PTApe3A9QS5QSShzLHIrMSxxLEIuVkMs -ITEpCnE9cn1lbHNlIHA9bgptPW8uYz1uZXcgQS5xZSgiZGF0YSIsIiIsbixuLEEuUEkocyxtLHEsQi5X -ZCwhMSkscCxuKX1yZXR1cm4gbX0sCiJbIihhKXt2YXIgcyxyPXRoaXMuYgppZigwPj1yLmxlbmd0aCly -ZXR1cm4gQS5PSChyLDApCnM9dGhpcy5hCnJldHVybiByWzBdPT09LTE/ImRhdGE6IitzOnN9fQpBLnlJ -LnByb3RvdHlwZT17CiQyKGEsYil7dmFyIHM9dGhpcy5hCmlmKCEoYTxzLmxlbmd0aCkpcmV0dXJuIEEu -T0gocyxhKQpzPXNbYV0KQi5OQS5kdShzLDAsOTYsYikKcmV0dXJuIHN9LAokUzoyM30KQS5jNi5wcm90 -b3R5cGU9ewokMyhhLGIsYyl7dmFyIHMscixxCmZvcihzPWIubGVuZ3RoLHI9MDtyPHM7KytyKXtxPUIu -eEIuVyhiLHIpXjk2CmlmKCEocTw5NikpcmV0dXJuIEEuT0goYSxxKQphW3FdPWN9fSwKJFM6MTJ9CkEu -cWQucHJvdG90eXBlPXsKJDMoYSxiLGMpe3ZhciBzLHIscQpmb3Iocz1CLnhCLlcoYiwwKSxyPUIueEIu -VyhiLDEpO3M8PXI7KytzKXtxPShzXjk2KT4+PjAKaWYoIShxPDk2KSlyZXR1cm4gQS5PSChhLHEpCmFb -cV09Y319LAokUzoxMn0KQS5VZi5wcm90b3R5cGU9ewpnY2ooKXtyZXR1cm4gdGhpcy5jPjB9LApneEEo -KXtyZXR1cm4gdGhpcy5jPjAmJnRoaXMuZCsxPHRoaXMuZX0sCmdRRCgpe3JldHVybiB0aGlzLmY8dGhp -cy5yfSwKZ1o4KCl7cmV0dXJuIHRoaXMucjx0aGlzLmEubGVuZ3RofSwKZ3RUKCl7cmV0dXJuIEIueEIu -UWkodGhpcy5hLCIvIix0aGlzLmUpfSwKZ0ZpKCl7dmFyIHM9dGhpcy53CnJldHVybiBzPT1udWxsP3Ro -aXMudz10aGlzLlUyKCk6c30sClUyKCl7dmFyIHMscj10aGlzLHE9ci5iCmlmKHE8PTApcmV0dXJuIiIK -cz1xPT09NAppZihzJiZCLnhCLm4oci5hLCJodHRwIikpcmV0dXJuImh0dHAiCmlmKHE9PT01JiZCLnhC -Lm4oci5hLCJodHRwcyIpKXJldHVybiJodHRwcyIKaWYocyYmQi54Qi5uKHIuYSwiZmlsZSIpKXJldHVy -biJmaWxlIgppZihxPT09NyYmQi54Qi5uKHIuYSwicGFja2FnZSIpKXJldHVybiJwYWNrYWdlIgpyZXR1 -cm4gQi54Qi5OaihyLmEsMCxxKX0sCmdrdSgpe3ZhciBzPXRoaXMuYyxyPXRoaXMuYiszCnJldHVybiBz -PnI/Qi54Qi5Oaih0aGlzLmEscixzLTEpOiIifSwKZ0pmKGEpe3ZhciBzPXRoaXMuYwpyZXR1cm4gcz4w -P0IueEIuTmoodGhpcy5hLHMsdGhpcy5kKToiIn0sCmd0cChhKXt2YXIgcyxyPXRoaXMKaWYoci5neEEo -KSlyZXR1cm4gQS5RQShCLnhCLk5qKHIuYSxyLmQrMSxyLmUpLG51bGwpCnM9ci5iCmlmKHM9PT00JiZC -LnhCLm4oci5hLCJodHRwIikpcmV0dXJuIDgwCmlmKHM9PT01JiZCLnhCLm4oci5hLCJodHRwcyIpKXJl -dHVybiA0NDMKcmV0dXJuIDB9LApnSWkoYSl7cmV0dXJuIEIueEIuTmoodGhpcy5hLHRoaXMuZSx0aGlz -LmYpfSwKZ3RQKCl7dmFyIHM9dGhpcy5mLHI9dGhpcy5yCnJldHVybiBzPHI/Qi54Qi5Oaih0aGlzLmEs -cysxLHIpOiIifSwKZ0thKCl7dmFyIHM9dGhpcy5yLHI9dGhpcy5hCnJldHVybiBzPHIubGVuZ3RoP0Iu -eEIueW4ocixzKzEpOiIifSwKZ0ZqKCl7dmFyIHMscixxPXRoaXMuZSxwPXRoaXMuZixvPXRoaXMuYQpp -ZihCLnhCLlFpKG8sIi8iLHEpKSsrcQppZihxPT09cClyZXR1cm4gQi54RApzPUEuUUkoW10sdC5zKQpm -b3Iocj1xO3I8cDsrK3IpaWYoQi54Qi5PKG8scik9PT00Nyl7Qi5ObS5pKHMsQi54Qi5OaihvLHEscikp -CnE9cisxfUIuTm0uaShzLEIueEIuTmoobyxxLHApKQpyZXR1cm4gQS5BRihzLHQuTil9LApnaFkoKXtp -Zih0aGlzLmY+PXRoaXMucilyZXR1cm4gQi5DTQpyZXR1cm4gbmV3IEEuR2ooQS5XWCh0aGlzLmd0UCgp -KSx0LmR3KX0sCmtYKGEpe3ZhciBzPXRoaXMuZCsxCnJldHVybiBzK2EubGVuZ3RoPT09dGhpcy5lJiZC -LnhCLlFpKHRoaXMuYSxhLHMpfSwKTjkoKXt2YXIgcz10aGlzLHI9cy5yLHE9cy5hCmlmKHI+PXEubGVu -Z3RoKXJldHVybiBzCnJldHVybiBuZXcgQS5VZihCLnhCLk5qKHEsMCxyKSxzLmIscy5jLHMuZCxzLmUs -cy5mLHIscy53KX0sCm5tKGEsYil7dmFyIHMscixxLHAsbyxuLG0sbCxrLGosaT10aGlzLGg9bnVsbAp0 -LmM5LmEoYikKcz1pLmdGaSgpCnI9cz09PSJmaWxlIgpxPWkuYwpwPXE+MD9CLnhCLk5qKGkuYSxpLmIr -MyxxKToiIgpvPWkuZ3hBKCk/aS5ndHAoaSk6aApxPWkuYwppZihxPjApbj1CLnhCLk5qKGkuYSxxLGku -ZCkKZWxzZSBuPXAubGVuZ3RoIT09MHx8byE9bnVsbHx8cj8iIjpoCnE9aS5hCm09Qi54Qi5OaihxLGku -ZSxpLmYpCmlmKCFyKWw9biE9bnVsbCYmbS5sZW5ndGghPT0wCmVsc2UgbD0hMAppZihsJiYhQi54Qi5u -KG0sIi8iKSltPSIvIittCms9QS5sZShoLDAsMCxiKQpsPWkucgpqPWw8cS5sZW5ndGg/Qi54Qi55bihx -LGwrMSk6aApyZXR1cm4gQS5DZyhzLHAsbixvLG0sayxqKX0sClpJKGEpe3JldHVybiB0aGlzLm1TKEEu -aEsoYSkpfSwKbVMoYSl7aWYoYSBpbnN0YW5jZW9mIEEuVWYpcmV0dXJuIHRoaXMudTEodGhpcyxhKQpy -ZXR1cm4gdGhpcy5SZSgpLm1TKGEpfSwKdTEoYSxiKXt2YXIgcyxyLHEscCxvLG4sbSxsLGssaixpLGgs -ZyxmLGUsZCxjPWIuYgppZihjPjApcmV0dXJuIGIKcz1iLmMKaWYocz4wKXtyPWEuYgppZihyPD0wKXJl -dHVybiBiCnE9cj09PTQKaWYocSYmQi54Qi5uKGEuYSwiZmlsZSIpKXA9Yi5lIT09Yi5mCmVsc2UgaWYo -cSYmQi54Qi5uKGEuYSwiaHR0cCIpKXA9IWIua1goIjgwIikKZWxzZSBwPSEocj09PTUmJkIueEIubihh -LmEsImh0dHBzIikpfHwhYi5rWCgiNDQzIikKaWYocCl7bz1yKzEKcmV0dXJuIG5ldyBBLlVmKEIueEIu -TmooYS5hLDAsbykrQi54Qi55bihiLmEsYysxKSxyLHMrbyxiLmQrbyxiLmUrbyxiLmYrbyxiLnIrbyxh -LncpfWVsc2UgcmV0dXJuIHRoaXMuUmUoKS5tUyhiKX1uPWIuZQpjPWIuZgppZihuPT09Yyl7cz1iLnIK -aWYoYzxzKXtyPWEuZgpvPXItYwpyZXR1cm4gbmV3IEEuVWYoQi54Qi5OaihhLmEsMCxyKStCLnhCLnlu -KGIuYSxjKSxhLmIsYS5jLGEuZCxhLmUsYytvLHMrbyxhLncpfWM9Yi5hCmlmKHM8Yy5sZW5ndGgpe3I9 -YS5yCnJldHVybiBuZXcgQS5VZihCLnhCLk5qKGEuYSwwLHIpK0IueEIueW4oYyxzKSxhLmIsYS5jLGEu -ZCxhLmUsYS5mLHMrKHItcyksYS53KX1yZXR1cm4gYS5OOSgpfXM9Yi5hCmlmKEIueEIuUWkocywiLyIs -bikpe209YS5lCmw9QS5SeCh0aGlzKQprPWw+MD9sOm0Kbz1rLW4KcmV0dXJuIG5ldyBBLlVmKEIueEIu -TmooYS5hLDAsaykrQi54Qi55bihzLG4pLGEuYixhLmMsYS5kLG0sYytvLGIucitvLGEudyl9aj1hLmUK -aT1hLmYKaWYoaj09PWkmJmEuYz4wKXtmb3IoO0IueEIuUWkocywiLi4vIixuKTspbis9MwpvPWotbisx -CnJldHVybiBuZXcgQS5VZihCLnhCLk5qKGEuYSwwLGopKyIvIitCLnhCLnluKHMsbiksYS5iLGEuYyxh -LmQsaixjK28sYi5yK28sYS53KX1oPWEuYQpsPUEuUngodGhpcykKaWYobD49MClnPWwKZWxzZSBmb3Io -Zz1qO0IueEIuUWkoaCwiLi4vIixnKTspZys9MwpmPTAKd2hpbGUoITApe2U9biszCmlmKCEoZTw9YyYm -Qi54Qi5RaShzLCIuLi8iLG4pKSlicmVhazsrK2YKbj1lfWZvcihkPSIiO2k+Zzspey0taQppZihCLnhC -Lk8oaCxpKT09PTQ3KXtpZihmPT09MCl7ZD0iLyIKYnJlYWt9LS1mCmQ9Ii8ifX1pZihpPT09ZyYmYS5i -PD0wJiYhQi54Qi5RaShoLCIvIixqKSl7bi09ZiozCmQ9IiJ9bz1pLW4rZC5sZW5ndGgKcmV0dXJuIG5l -dyBBLlVmKEIueEIuTmooaCwwLGkpK2QrQi54Qi55bihzLG4pLGEuYixhLmMsYS5kLGosYytvLGIucitv -LGEudyl9LAp0NCgpe3ZhciBzLHIscT10aGlzLHA9cS5iCmlmKHA+PTApe3M9IShwPT09NCYmQi54Qi5u -KHEuYSwiZmlsZSIpKQpwPXN9ZWxzZSBwPSExCmlmKHApdGhyb3cgQS5iKEEuTDQoIkNhbm5vdCBleHRy -YWN0IGEgZmlsZSBwYXRoIGZyb20gYSAiK3EuZ0ZpKCkrIiBVUkkiKSkKcD1xLmYKcz1xLmEKaWYocDxz -Lmxlbmd0aCl7aWYocDxxLnIpdGhyb3cgQS5iKEEuTDQodS5pKSkKdGhyb3cgQS5iKEEuTDQodS5sKSl9 -cj0kLndRKCkKaWYocilwPUEubW4ocSkKZWxzZXtpZihxLmM8cS5kKUEudihBLkw0KHUuaikpCnA9Qi54 -Qi5OaihzLHEuZSxwKX1yZXR1cm4gcH0sCmdtKGEpe3ZhciBzPXRoaXMueApyZXR1cm4gcz09bnVsbD90 -aGlzLng9Qi54Qi5nbSh0aGlzLmEpOnN9LApETihhLGIpe2lmKGI9PW51bGwpcmV0dXJuITEKaWYodGhp -cz09PWIpcmV0dXJuITAKcmV0dXJuIHQuZEQuYihiKSYmdGhpcy5hPT09YlsiWyJdKDApfSwKUmUoKXt2 -YXIgcz10aGlzLHI9bnVsbCxxPXMuZ0ZpKCkscD1zLmdrdSgpLG89cy5jPjA/cy5nSmYocyk6cixuPXMu -Z3hBKCk/cy5ndHAocyk6cixtPXMuYSxsPXMuZixrPUIueEIuTmoobSxzLmUsbCksaj1zLnIKbD1sPGo/ -cy5ndFAoKTpyCnJldHVybiBBLkNnKHEscCxvLG4sayxsLGo8bS5sZW5ndGg/cy5nS2EoKTpyKX0sCiJb -IihhKXtyZXR1cm4gdGhpcy5hfSwKJGlpRDoxfQpBLnFlLnByb3RvdHlwZT17fQpBLnFFLnByb3RvdHlw -ZT17fQpBLkdoLnByb3RvdHlwZT17CnNMVShhLGIpe2EuaHJlZj1ifSwKIlsiKGEpe3JldHVybiBTdHJp -bmcoYSl9LAokaUdoOjF9CkEuZlkucHJvdG90eXBlPXsKIlsiKGEpe3JldHVybiBTdHJpbmcoYSl9fQpB -LnJaLnByb3RvdHlwZT17JGlyWjoxfQpBLkF6LnByb3RvdHlwZT17JGlBejoxfQpBLlFQLnByb3RvdHlw -ZT17JGlRUDoxfQpBLm54LnByb3RvdHlwZT17CmdrKGEpe3JldHVybiBhLmxlbmd0aH19CkEub0oucHJv -dG90eXBlPXsKZ2soYSl7cmV0dXJuIGEubGVuZ3RofX0KQS5pZC5wcm90b3R5cGU9e30KQS5RRi5wcm90 -b3R5cGU9e30KQS5OaC5wcm90b3R5cGU9ewoiWyIoYSl7cmV0dXJuIFN0cmluZyhhKX19CkEuYWUucHJv -dG90eXBlPXsKRGMoYSxiKXtyZXR1cm4gYS5jcmVhdGVIVE1MRG9jdW1lbnQoYil9fQpBLklCLnByb3Rv -dHlwZT17CiJbIihhKXt2YXIgcyxyLHEscD1hLmxlZnQKcC50b1N0cmluZwpzPWEudG9wCnMudG9TdHJp -bmcKcj1hLndpZHRoCnIudG9TdHJpbmcKcT1hLmhlaWdodApxLnRvU3RyaW5nCnJldHVybiJSZWN0YW5n -bGUgKCIrQS5FaihwKSsiLCAiK0EuRWoocykrIikgIitBLkVqKHIpKyIgeCAiK0EuRWoocSl9LApETihh -LGIpe3ZhciBzLHIKaWYoYj09bnVsbClyZXR1cm4hMQppZih0LnEuYihiKSl7cz1hLmxlZnQKcy50b1N0 -cmluZwpyPWIubGVmdApyLnRvU3RyaW5nCmlmKHM9PT1yKXtzPWEudG9wCnMudG9TdHJpbmcKcj1iLnRv -cApyLnRvU3RyaW5nCmlmKHM9PT1yKXtzPWEud2lkdGgKcy50b1N0cmluZwpyPWIud2lkdGgKci50b1N0 -cmluZwppZihzPT09cil7cz1hLmhlaWdodApzLnRvU3RyaW5nCnI9Yi5oZWlnaHQKci50b1N0cmluZwpy -PXM9PT1yCnM9cn1lbHNlIHM9ITF9ZWxzZSBzPSExfWVsc2Ugcz0hMX1lbHNlIHM9ITEKcmV0dXJuIHN9 -LApnbShhKXt2YXIgcyxyLHEscD1hLmxlZnQKcC50b1N0cmluZwpzPWEudG9wCnMudG9TdHJpbmcKcj1h -LndpZHRoCnIudG9TdHJpbmcKcT1hLmhlaWdodApxLnRvU3RyaW5nCnJldHVybiBBLmY1KHAscyxyLHEp -fSwKJGl0bjoxfQpBLm43LnByb3RvdHlwZT17CmdrKGEpe3JldHVybiBhLmxlbmd0aH19CkEud3oucHJv -dG90eXBlPXsKZ2soYSl7cmV0dXJuIHRoaXMuYS5sZW5ndGh9LApxKGEsYil7dmFyIHMKQS5JWihiKQpz -PXRoaXMuYQppZighKGI+PTAmJmI8cy5sZW5ndGgpKXJldHVybiBBLk9IKHMsYikKcmV0dXJuIHRoaXMu -JHRpLmMuYShzW2JdKX0sClk1KGEsYixjKXt0aGlzLiR0aS5jLmEoYykKdGhyb3cgQS5iKEEuTDQoIkNh -bm5vdCBtb2RpZnkgbGlzdCIpKX19CkEuY3YucHJvdG90eXBlPXsKZ1FnKGEpe3JldHVybiBuZXcgQS5p -NyhhKX0sCmdQKGEpe3JldHVybiBuZXcgQS5JNChhKX0sCnNQKGEsYil7dmFyIHMKdC5PLmEoYikKcz10 -aGlzLmdQKGEpCnMuVjEoMCkKcy5GVigwLGIpfSwKIlsiKGEpe3JldHVybiBhLmxvY2FsTmFtZX0sCkZG -KGEpe3ZhciBzPSEhYS5zY3JvbGxJbnRvVmlld0lmTmVlZGVkCmlmKHMpYS5zY3JvbGxJbnRvVmlld0lm -TmVlZGVkKCkKZWxzZSBhLnNjcm9sbEludG9WaWV3KCl9LApueihhLGIsYyxkLGUpe3ZhciBzLHI9dGhp -cy5yNihhLGMsZCxlKQpzd2l0Y2goYi50b0xvd2VyQ2FzZSgpKXtjYXNlImJlZm9yZWJlZ2luIjpzPWEu -cGFyZW50Tm9kZQpzLnRvU3RyaW5nCkouRWgocyxyLGEpCmJyZWFrCmNhc2UiYWZ0ZXJiZWdpbiI6cz1h -LmNoaWxkTm9kZXMKdGhpcy5tSyhhLHIscy5sZW5ndGg+MD9zWzBdOm51bGwpCmJyZWFrCmNhc2UiYmVm -b3JlZW5kIjphLmFwcGVuZENoaWxkKHIpCmJyZWFrCmNhc2UiYWZ0ZXJlbmQiOnM9YS5wYXJlbnROb2Rl -CnMudG9TdHJpbmcKSi5FaChzLHIsYS5uZXh0U2libGluZykKYnJlYWsKZGVmYXVsdDpBLnYoQS54WSgi -SW52YWxpZCBwb3NpdGlvbiAiK2IsbnVsbCkpfX0sCnI2KGEsYixjLGQpe3ZhciBzLHIscSxwCmlmKGM9 -PW51bGwpe2lmKGQ9PW51bGwpe3M9JC5sdAppZihzPT1udWxsKXtzPUEuUUkoW10sdC5EKQpyPW5ldyBB -LnZEKHMpCkIuTm0uaShzLEEuVHcobnVsbCkpCkIuTm0uaShzLEEuQmwoKSkKJC5sdD1yCmQ9cn1lbHNl -IGQ9c31zPSQuRVUKaWYocz09bnVsbCl7cz1uZXcgQS5LbyhkKQokLkVVPXMKYz1zfWVsc2V7cy5hPWQK -Yz1zfX1lbHNlIGlmKGQhPW51bGwpdGhyb3cgQS5iKEEueFkoInZhbGlkYXRvciBjYW4gb25seSBiZSBw -YXNzZWQgaWYgdHJlZVNhbml0aXplciBpcyBudWxsIixudWxsKSkKaWYoJC54bz09bnVsbCl7cz1kb2N1 -bWVudApyPXMuaW1wbGVtZW50YXRpb24Kci50b1N0cmluZwpyPUIubUguRGMociwiIikKJC54bz1yCiQu -Qk89ci5jcmVhdGVSYW5nZSgpCnI9JC54by5jcmVhdGVFbGVtZW50KCJiYXNlIikKdC5jUi5hKHIpCnM9 -cy5iYXNlVVJJCnMudG9TdHJpbmcKci5ocmVmPXMKJC54by5oZWFkLmFwcGVuZENoaWxkKHIpfXM9JC54 -bwppZihzLmJvZHk9PW51bGwpe3I9cy5jcmVhdGVFbGVtZW50KCJib2R5IikKQi5CWi5zR1Mocyx0LnIu -YShyKSl9cz0kLnhvCmlmKHQuci5iKGEpKXtzPXMuYm9keQpzLnRvU3RyaW5nCnE9c31lbHNle3MudG9T -dHJpbmcKcT1zLmNyZWF0ZUVsZW1lbnQoYS50YWdOYW1lKQokLnhvLmJvZHkuYXBwZW5kQ2hpbGQocSl9 -aWYoImNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCIgaW4gd2luZG93LlJhbmdlLnByb3RvdHlwZSYmIUIu -Tm0udGcoQi5TcSxhLnRhZ05hbWUpKXskLkJPLnNlbGVjdE5vZGVDb250ZW50cyhxKQpzPSQuQk8Kcy50 -b1N0cmluZwpwPXMuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGI9PW51bGw/Im51bGwiOmIpfWVsc2V7 -Si53ZihxLGIpCnA9JC54by5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKZm9yKDtzPXEuZmlyc3RDaGls -ZCxzIT1udWxsOylwLmFwcGVuZENoaWxkKHMpfWlmKHEhPT0kLnhvLmJvZHkpSi5MdChxKQpjLlBuKHAp -CmRvY3VtZW50LmFkb3B0Tm9kZShwKQpyZXR1cm4gcH0sCkFIKGEsYixjKXtyZXR1cm4gdGhpcy5yNihh -LGIsYyxudWxsKX0sCnNoZihhLGIpe3RoaXMuWUMoYSxiKX0sCnBrKGEsYixjKXt0aGlzLnNhNChhLG51 -bGwpCmEuYXBwZW5kQ2hpbGQodGhpcy5yNihhLGIsbnVsbCxjKSl9LApZQyhhLGIpe3JldHVybiB0aGlz -LnBrKGEsYixudWxsKX0sCnNSTihhLGIpe2EuaW5uZXJIVE1MPWJ9LApnbnMoYSl7cmV0dXJuIGEudGFn -TmFtZX0sCmdWbChhKXtyZXR1cm4gbmV3IEEuQ3EoYSwiY2xpY2siLCExLHQuUSl9LAokaWN2OjF9CkEu -Q3YucHJvdG90eXBlPXsKJDEoYSl7cmV0dXJuIHQuaC5iKHQuQS5hKGEpKX0sCiRTOjI1fQpBLmVhLnBy -b3RvdHlwZT17JGllYToxfQpBLkQwLnByb3RvdHlwZT17Ck9uKGEsYixjLGQpe3QuYncuYShjKQppZihj -IT1udWxsKXRoaXMudihhLGIsYyxkKX0sCkIoYSxiLGMpe3JldHVybiB0aGlzLk9uKGEsYixjLG51bGwp -fSwKdihhLGIsYyxkKXtyZXR1cm4gYS5hZGRFdmVudExpc3RlbmVyKGIsQS50Uih0LmJ3LmEoYyksMSks -ZCl9LAokaUQwOjF9CkEuaEgucHJvdG90eXBlPXskaWhIOjF9CkEuaDQucHJvdG90eXBlPXsKZ2soYSl7 -cmV0dXJuIGEubGVuZ3RofX0KQS5ici5wcm90b3R5cGU9ewpnayhhKXtyZXR1cm4gYS5sZW5ndGh9fQpB -LlZiLnByb3RvdHlwZT17CnNHUyhhLGIpe2EuYm9keT1ifX0KQS5mSi5wcm90b3R5cGU9ewplbyhhLGIs -YyxkKXtyZXR1cm4gYS5vcGVuKGIsYywhMCl9LAokaWZKOjF9CkEud2EucHJvdG90eXBlPXt9CkEuU2cu -cHJvdG90eXBlPXskaVNnOjF9CkEudTgucHJvdG90eXBlPXsKZ0RyKGEpe2lmKCJvcmlnaW4iIGluIGEp -cmV0dXJuIGEub3JpZ2luCnJldHVybiBhLnByb3RvY29sKyIvLyIrYS5ob3N0fSwKIlsiKGEpe3JldHVy -biBTdHJpbmcoYSl9LAokaXU4OjF9CkEuQWoucHJvdG90eXBlPXskaUFqOjF9CkEuZTcucHJvdG90eXBl -PXsKZ3I4KGEpe3ZhciBzPXRoaXMuYSxyPXMuY2hpbGROb2Rlcy5sZW5ndGgKaWYocj09PTApdGhyb3cg -QS5iKEEuUFYoIk5vIGVsZW1lbnRzIikpCmlmKHI+MSl0aHJvdyBBLmIoQS5QVigiTW9yZSB0aGFuIG9u -ZSBlbGVtZW50IikpCnM9cy5maXJzdENoaWxkCnMudG9TdHJpbmcKcmV0dXJuIHN9LApGVihhLGIpe3Zh -ciBzLHIscSxwLG8KdC5laC5hKGIpCmlmKGIgaW5zdGFuY2VvZiBBLmU3KXtzPWIuYQpyPXRoaXMuYQpp -ZihzIT09cilmb3IocT1zLmNoaWxkTm9kZXMubGVuZ3RoLHA9MDtwPHE7KytwKXtvPXMuZmlyc3RDaGls -ZApvLnRvU3RyaW5nCnIuYXBwZW5kQ2hpbGQobyl9cmV0dXJufWZvcihzPWIuZ0EoYikscj10aGlzLmE7 -cy5HKCk7KXIuYXBwZW5kQ2hpbGQocy5nbCgpKX0sClk1KGEsYixjKXt2YXIgcyxyCnQuQS5hKGMpCnM9 -dGhpcy5hCnI9cy5jaGlsZE5vZGVzCmlmKCEoYj49MCYmYjxyLmxlbmd0aCkpcmV0dXJuIEEuT0gocixi -KQpzLnJlcGxhY2VDaGlsZChjLHJbYl0pfSwKZ0EoYSl7dmFyIHM9dGhpcy5hLmNoaWxkTm9kZXMKcmV0 -dXJuIG5ldyBBLlc5KHMscy5sZW5ndGgsQS56SyhzKS5DKCJXOTxHbS5FPiIpKX0sCmdrKGEpe3JldHVy -biB0aGlzLmEuY2hpbGROb2Rlcy5sZW5ndGh9LApxKGEsYil7dmFyIHMKQS5JWihiKQpzPXRoaXMuYS5j -aGlsZE5vZGVzCmlmKCEoYj49MCYmYjxzLmxlbmd0aCkpcmV0dXJuIEEuT0gocyxiKQpyZXR1cm4gc1ti -XX19CkEuS1YucHJvdG90eXBlPXsKd2coYSl7dmFyIHM9YS5wYXJlbnROb2RlCmlmKHMhPW51bGwpcy5y -ZW1vdmVDaGlsZChhKX0sCkQ0KGEpe3ZhciBzCmZvcig7cz1hLmZpcnN0Q2hpbGQscyE9bnVsbDspYS5y -ZW1vdmVDaGlsZChzKX0sCiJbIihhKXt2YXIgcz1hLm5vZGVWYWx1ZQpyZXR1cm4gcz09bnVsbD90aGlz -LlUoYSk6c30sCnNhNChhLGIpe2EudGV4dENvbnRlbnQ9Yn0sCm1LKGEsYixjKXtyZXR1cm4gYS5pbnNl -cnRCZWZvcmUoYixjKX0sCiRpS1Y6MX0KQS5CSC5wcm90b3R5cGU9ewpnayhhKXtyZXR1cm4gYS5sZW5n -dGh9LApxKGEsYil7QS5JWihiKQppZihiPj4+MCE9PWJ8fGI+PWEubGVuZ3RoKXRocm93IEEuYihBLkNm -KGIsYSxudWxsLG51bGwsbnVsbCkpCnJldHVybiBhW2JdfSwKWTUoYSxiLGMpe3QuQS5hKGMpCnRocm93 -IEEuYihBLkw0KCJDYW5ub3QgYXNzaWduIGVsZW1lbnQgb2YgaW1tdXRhYmxlIExpc3QuIikpfSwKZ3RI -KGEpe2lmKGEubGVuZ3RoPjApcmV0dXJuIGFbMF0KdGhyb3cgQS5iKEEuUFYoIk5vIGVsZW1lbnRzIikp -fSwKRShhLGIpe2lmKCEoYj49MCYmYjxhLmxlbmd0aCkpcmV0dXJuIEEuT0goYSxiKQpyZXR1cm4gYVti -XX0sCiRpYlE6MSwKJGlYajoxLAokaWNYOjEsCiRpek06MX0KQS5TTi5wcm90b3R5cGU9e30KQS5ldy5w -cm90b3R5cGU9eyRpZXc6MX0KQS5scC5wcm90b3R5cGU9ewpnayhhKXtyZXR1cm4gYS5sZW5ndGh9fQpB -LlRiLnByb3RvdHlwZT17CnI2KGEsYixjLGQpe3ZhciBzLHIKaWYoImNyZWF0ZUNvbnRleHR1YWxGcmFn -bWVudCIgaW4gd2luZG93LlJhbmdlLnByb3RvdHlwZSlyZXR1cm4gdGhpcy5EVyhhLGIsYyxkKQpzPUEu -VTkoIjx0YWJsZT4iK0EuRWooYikrIjwvdGFibGU+IixjLGQpCnI9ZG9jdW1lbnQuY3JlYXRlRG9jdW1l -bnRGcmFnbWVudCgpCm5ldyBBLmU3KHIpLkZWKDAsbmV3IEEuZTcocykpCnJldHVybiByfX0KQS5Jdi5w -cm90b3R5cGU9ewpyNihhLGIsYyxkKXt2YXIgcyxyCmlmKCJjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQi -IGluIHdpbmRvdy5SYW5nZS5wcm90b3R5cGUpcmV0dXJuIHRoaXMuRFcoYSxiLGMsZCkKcz1kb2N1bWVu -dApyPXMuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCnM9bmV3IEEuZTcoQi5JZS5yNihzLmNyZWF0ZUVs -ZW1lbnQoInRhYmxlIiksYixjLGQpKQpzPW5ldyBBLmU3KHMuZ3I4KHMpKQpuZXcgQS5lNyhyKS5GVigw -LG5ldyBBLmU3KHMuZ3I4KHMpKSkKcmV0dXJuIHJ9fQpBLldQLnByb3RvdHlwZT17CnI2KGEsYixjLGQp -e3ZhciBzLHIKaWYoImNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCIgaW4gd2luZG93LlJhbmdlLnByb3Rv -dHlwZSlyZXR1cm4gdGhpcy5EVyhhLGIsYyxkKQpzPWRvY3VtZW50CnI9cy5jcmVhdGVEb2N1bWVudEZy -YWdtZW50KCkKcz1uZXcgQS5lNyhCLkllLnI2KHMuY3JlYXRlRWxlbWVudCgidGFibGUiKSxiLGMsZCkp -Cm5ldyBBLmU3KHIpLkZWKDAsbmV3IEEuZTcocy5ncjgocykpKQpyZXR1cm4gcn19CkEueVkucHJvdG90 -eXBlPXsKcGsoYSxiLGMpe3ZhciBzLHIKdGhpcy5zYTQoYSxudWxsKQpzPWEuY29udGVudApzLnRvU3Ry -aW5nCkouYlQocykKcj10aGlzLnI2KGEsYixudWxsLGMpCmEuY29udGVudC5hcHBlbmRDaGlsZChyKX0s -CllDKGEsYil7cmV0dXJuIHRoaXMucGsoYSxiLG51bGwpfSwKJGl5WToxfQpBLnc2LnByb3RvdHlwZT17 -fQpBLks1LnByb3RvdHlwZT17ClBvKGEsYixjKXt2YXIgcz1BLlAxKGEub3BlbihiLGMpKQpyZXR1cm4g -c30sCmdtVyhhKXtyZXR1cm4gdC5GLmEoYS5sb2NhdGlvbil9LAp1cyhhLGIpe3JldHVybiBhLmNvbmZp -cm0oYil9LAokaUs1OjEsCiRpdjY6MX0KQS5DbS5wcm90b3R5cGU9eyRpQ206MX0KQS5DUS5wcm90b3R5 -cGU9eyRpQ1E6MX0KQS53NC5wcm90b3R5cGU9ewoiWyIoYSl7dmFyIHMscixxLHA9YS5sZWZ0CnAudG9T -dHJpbmcKcz1hLnRvcApzLnRvU3RyaW5nCnI9YS53aWR0aApyLnRvU3RyaW5nCnE9YS5oZWlnaHQKcS50 -b1N0cmluZwpyZXR1cm4iUmVjdGFuZ2xlICgiK0EuRWoocCkrIiwgIitBLkVqKHMpKyIpICIrQS5Faihy -KSsiIHggIitBLkVqKHEpfSwKRE4oYSxiKXt2YXIgcyxyCmlmKGI9PW51bGwpcmV0dXJuITEKaWYodC5x -LmIoYikpe3M9YS5sZWZ0CnMudG9TdHJpbmcKcj1iLmxlZnQKci50b1N0cmluZwppZihzPT09cil7cz1h -LnRvcApzLnRvU3RyaW5nCnI9Yi50b3AKci50b1N0cmluZwppZihzPT09cil7cz1hLndpZHRoCnMudG9T -dHJpbmcKcj1iLndpZHRoCnIudG9TdHJpbmcKaWYocz09PXIpe3M9YS5oZWlnaHQKcy50b1N0cmluZwpy -PWIuaGVpZ2h0CnIudG9TdHJpbmcKcj1zPT09cgpzPXJ9ZWxzZSBzPSExfWVsc2Ugcz0hMX1lbHNlIHM9 -ITF9ZWxzZSBzPSExCnJldHVybiBzfSwKZ20oYSl7dmFyIHMscixxLHA9YS5sZWZ0CnAudG9TdHJpbmcK -cz1hLnRvcApzLnRvU3RyaW5nCnI9YS53aWR0aApyLnRvU3RyaW5nCnE9YS5oZWlnaHQKcS50b1N0cmlu -ZwpyZXR1cm4gQS5mNShwLHMscixxKX19CkEucmgucHJvdG90eXBlPXsKZ2soYSl7cmV0dXJuIGEubGVu -Z3RofSwKcShhLGIpe0EuSVooYikKaWYoYj4+PjAhPT1ifHxiPj1hLmxlbmd0aCl0aHJvdyBBLmIoQS5D -ZihiLGEsbnVsbCxudWxsLG51bGwpKQpyZXR1cm4gYVtiXX0sClk1KGEsYixjKXt0LkEuYShjKQp0aHJv -dyBBLmIoQS5MNCgiQ2Fubm90IGFzc2lnbiBlbGVtZW50IG9mIGltbXV0YWJsZSBMaXN0LiIpKX0sCkUo -YSxiKXtpZighKGI+PTAmJmI8YS5sZW5ndGgpKXJldHVybiBBLk9IKGEsYikKcmV0dXJuIGFbYl19LAok -aWJROjEsCiRpWGo6MSwKJGljWDoxLAokaXpNOjF9CkEuY2YucHJvdG90eXBlPXsKSyhhLGIpe3ZhciBz -LHIscSxwLG8sbgp0LmVBLmEoYikKZm9yKHM9dGhpcy5ndmMoKSxyPXMubGVuZ3RoLHE9dGhpcy5hLHA9 -MDtwPHMubGVuZ3RoO3MubGVuZ3RoPT09cnx8KDAsQS5saykocyksKytwKXtvPXNbcF0Kbj1xLmdldEF0 -dHJpYnV0ZShvKQpiLiQyKG8sbj09bnVsbD9BLm4obik6bil9fSwKZ3ZjKCl7dmFyIHMscixxLHAsbyxu -LG09dGhpcy5hLmF0dHJpYnV0ZXMKbS50b1N0cmluZwpzPUEuUUkoW10sdC5zKQpmb3Iocj1tLmxlbmd0 -aCxxPXQuaDkscD0wO3A8cjsrK3Ape2lmKCEocDxtLmxlbmd0aCkpcmV0dXJuIEEuT0gobSxwKQpvPXEu -YShtW3BdKQppZihvLm5hbWVzcGFjZVVSST09bnVsbCl7bj1vLm5hbWUKbi50b1N0cmluZwpCLk5tLmko -cyxuKX19cmV0dXJuIHN9LApnbDAoYSl7cmV0dXJuIHRoaXMuZ3ZjKCkubGVuZ3RoPT09MH19CkEuaTcu -cHJvdG90eXBlPXsKeDQoYSl7dmFyIHM9dGhpcy5hLmhhc0F0dHJpYnV0ZShhKQpyZXR1cm4gc30sCnEo -YSxiKXtyZXR1cm4gdGhpcy5hLmdldEF0dHJpYnV0ZShBLm4oYikpfSwKWTUoYSxiLGMpe3RoaXMuYS5z -ZXRBdHRyaWJ1dGUoYixjKX0sCmdrKGEpe3JldHVybiB0aGlzLmd2YygpLmxlbmd0aH19CkEuU3kucHJv -dG90eXBlPXsKeDQoYSl7dmFyIHM9dGhpcy5hLmEuaGFzQXR0cmlidXRlKCJkYXRhLSIrdGhpcy5PVShh -KSkKcmV0dXJuIHN9LApxKGEsYil7cmV0dXJuIHRoaXMuYS5hLmdldEF0dHJpYnV0ZSgiZGF0YS0iK3Ro -aXMuT1UoQS5uKGIpKSl9LApZNShhLGIsYyl7dGhpcy5hLmEuc2V0QXR0cmlidXRlKCJkYXRhLSIrdGhp -cy5PVShiKSxjKX0sCksoYSxiKXt0aGlzLmEuSygwLG5ldyBBLktTKHRoaXMsdC5lQS5hKGIpKSl9LApn -dmMoKXt2YXIgcz1BLlFJKFtdLHQucykKdGhpcy5hLksoMCxuZXcgQS5BMyh0aGlzLHMpKQpyZXR1cm4g -c30sCmdrKGEpe3JldHVybiB0aGlzLmd2YygpLmxlbmd0aH0sCmdsMChhKXtyZXR1cm4gdGhpcy5ndmMo -KS5sZW5ndGg9PT0wfSwKeHEoYSl7dmFyIHMscixxPUEuUUkoYS5zcGxpdCgiLSIpLHQucykKZm9yKHM9 -MTtzPHEubGVuZ3RoOysrcyl7cj1xW3NdCmlmKHIubGVuZ3RoPjApQi5ObS5ZNShxLHMsclswXS50b1Vw -cGVyQ2FzZSgpK0IueEIueW4ociwxKSl9cmV0dXJuIEIuTm0uSChxLCIiKX0sCk9VKGEpe3ZhciBzLHIs -cSxwLG8KZm9yKHM9YS5sZW5ndGgscj0wLHE9IiI7cjxzOysrcil7cD1hW3JdCm89cC50b0xvd2VyQ2Fz -ZSgpCnE9KHAhPT1vJiZyPjA/cSsiLSI6cSkrb31yZXR1cm4gcS5jaGFyQ29kZUF0KDApPT0wP3E6cX19 -CkEuS1MucHJvdG90eXBlPXsKJDIoYSxiKXtpZihCLnhCLm4oYSwiZGF0YS0iKSl0aGlzLmIuJDIodGhp -cy5hLnhxKEIueEIueW4oYSw1KSksYil9LAokUzoxM30KQS5BMy5wcm90b3R5cGU9ewokMihhLGIpe2lm -KEIueEIubihhLCJkYXRhLSIpKUIuTm0uaSh0aGlzLmIsdGhpcy5hLnhxKEIueEIueW4oYSw1KSkpfSwK -JFM6MTN9CkEuSTQucHJvdG90eXBlPXsKRCgpe3ZhciBzLHIscSxwLG89QS5Mcyh0Lk4pCmZvcihzPXRo -aXMuYS5jbGFzc05hbWUuc3BsaXQoIiAiKSxyPXMubGVuZ3RoLHE9MDtxPHI7KytxKXtwPUouVDAoc1tx -XSkKaWYocC5sZW5ndGghPT0wKW8uaSgwLHApfXJldHVybiBvfSwKWChhKXt0aGlzLmEuY2xhc3NOYW1l -PXQuQy5hKGEpLkgoMCwiICIpfSwKZ2soYSl7cmV0dXJuIHRoaXMuYS5jbGFzc0xpc3QubGVuZ3RofSwK -Z2wwKGEpe3JldHVybiB0aGlzLmEuY2xhc3NMaXN0Lmxlbmd0aD09PTB9LApnb3IoYSl7cmV0dXJuIHRo -aXMuYS5jbGFzc0xpc3QubGVuZ3RoIT09MH0sClYxKGEpe3RoaXMuYS5jbGFzc05hbWU9IiJ9LAp0Zyhh -LGIpe3ZhciBzPXRoaXMuYS5jbGFzc0xpc3QuY29udGFpbnMoYikKcmV0dXJuIHN9LAppKGEsYil7dmFy -IHMscgpBLm4oYikKcz10aGlzLmEuY2xhc3NMaXN0CnI9cy5jb250YWlucyhiKQpzLmFkZChiKQpyZXR1 -cm4hcn0sClIoYSxiKXt2YXIgcyxyLHEKaWYodHlwZW9mIGI9PSJzdHJpbmciKXtzPXRoaXMuYS5jbGFz -c0xpc3QKcj1zLmNvbnRhaW5zKGIpCnMucmVtb3ZlKGIpCnE9cn1lbHNlIHE9ITEKcmV0dXJuIHF9LApG -VihhLGIpe0EuVE4odGhpcy5hLHQuTy5hKGIpKX19CkEuRmsucHJvdG90eXBlPXt9CkEuUk8ucHJvdG90 -eXBlPXt9CkEuQ3EucHJvdG90eXBlPXt9CkEueEMucHJvdG90eXBlPXt9CkEudk4ucHJvdG90eXBlPXsK -JDEoYSl7cmV0dXJuIHRoaXMuYS4kMSh0LkIuYShhKSl9LAokUzoyN30KQS5KUS5wcm90b3R5cGU9ewpD -WShhKXt2YXIgcwppZigkLm9yLmE9PT0wKXtmb3Iocz0wO3M8MjYyOysrcykkLm9yLlk1KDAsQi5jbVtz -XSxBLnBTKCkpCmZvcihzPTA7czwxMjsrK3MpJC5vci5ZNSgwLEIuQklbc10sQS5WNCgpKX19LAppMChh -KXtyZXR1cm4gJC5BTigpLnRnKDAsQS5yUyhhKSl9LApFYihhLGIsYyl7dmFyIHM9JC5vci5xKDAsQS5y -UyhhKSsiOjoiK2IpCmlmKHM9PW51bGwpcz0kLm9yLnEoMCwiKjo6IitiKQppZihzPT1udWxsKXJldHVy -biExCnJldHVybiBBLnA4KHMuJDQoYSxiLGMsdGhpcykpfSwKJGlrRjoxfQpBLkdtLnByb3RvdHlwZT17 -CmdBKGEpe3JldHVybiBuZXcgQS5XOShhLHRoaXMuZ2soYSksQS56SyhhKS5DKCJXOTxHbS5FPiIpKX19 -CkEudkQucHJvdG90eXBlPXsKaTAoYSl7cmV0dXJuIEIuTm0uVnIodGhpcy5hLG5ldyBBLlV2KGEpKX0s -CkViKGEsYixjKXtyZXR1cm4gQi5ObS5Wcih0aGlzLmEsbmV3IEEuRWcoYSxiLGMpKX0sCiRpa0Y6MX0K -QS5Vdi5wcm90b3R5cGU9ewokMShhKXtyZXR1cm4gdC5mNi5hKGEpLmkwKHRoaXMuYSl9LAokUzoxNH0K -QS5FZy5wcm90b3R5cGU9ewokMShhKXtyZXR1cm4gdC5mNi5hKGEpLkViKHRoaXMuYSx0aGlzLmIsdGhp -cy5jKX0sCiRTOjE0fQpBLm02LnByb3RvdHlwZT17CkNZKGEsYixjLGQpe3ZhciBzLHIscQp0aGlzLmEu -RlYoMCxjKQpzPWIuZXYoMCxuZXcgQS5FbygpKQpyPWIuZXYoMCxuZXcgQS5XaygpKQp0aGlzLmIuRlYo -MCxzKQpxPXRoaXMuYwpxLkZWKDAsQi54RCkKcS5GVigwLHIpfSwKaTAoYSl7cmV0dXJuIHRoaXMuYS50 -ZygwLEEuclMoYSkpfSwKRWIoYSxiLGMpe3ZhciBzLHI9dGhpcyxxPUEuclMoYSkscD1yLmMsbz1xKyI6 -OiIrYgppZihwLnRnKDAsbykpcmV0dXJuIHIuZC5EdChjKQplbHNle3M9Iio6OiIrYgppZihwLnRnKDAs -cykpcmV0dXJuIHIuZC5EdChjKQplbHNle3A9ci5iCmlmKHAudGcoMCxvKSlyZXR1cm4hMAplbHNlIGlm -KHAudGcoMCxzKSlyZXR1cm4hMAplbHNlIGlmKHAudGcoMCxxKyI6OioiKSlyZXR1cm4hMAplbHNlIGlm -KHAudGcoMCwiKjo6KiIpKXJldHVybiEwfX1yZXR1cm4hMX0sCiRpa0Y6MX0KQS5Fby5wcm90b3R5cGU9 -ewokMShhKXtyZXR1cm4hQi5ObS50ZyhCLkJJLEEubihhKSl9LAokUzo0fQpBLldrLnByb3RvdHlwZT17 -CiQxKGEpe3JldHVybiBCLk5tLnRnKEIuQkksQS5uKGEpKX0sCiRTOjR9CkEuY3QucHJvdG90eXBlPXsK -RWIoYSxiLGMpe2lmKHRoaXMuakYoYSxiLGMpKXJldHVybiEwCmlmKGI9PT0idGVtcGxhdGUiJiZjPT09 -IiIpcmV0dXJuITAKaWYoYS5nZXRBdHRyaWJ1dGUoInRlbXBsYXRlIik9PT0iIilyZXR1cm4gdGhpcy5l -LnRnKDAsYikKcmV0dXJuITF9fQpBLklBLnByb3RvdHlwZT17CiQxKGEpe3JldHVybiJURU1QTEFURTo6 -IitBLm4oYSl9LAokUzoyfQpBLk93LnByb3RvdHlwZT17CmkwKGEpe3ZhciBzCmlmKHQuYU8uYihhKSly -ZXR1cm4hMQpzPXQuZzcuYihhKQppZihzJiZBLnJTKGEpPT09ImZvcmVpZ25PYmplY3QiKXJldHVybiEx -CmlmKHMpcmV0dXJuITAKcmV0dXJuITF9LApFYihhLGIsYyl7aWYoYj09PSJpcyJ8fEIueEIubihiLCJv -biIpKXJldHVybiExCnJldHVybiB0aGlzLmkwKGEpfSwKJGlrRjoxfQpBLlc5LnByb3RvdHlwZT17Ckco -KXt2YXIgcz10aGlzLHI9cy5jKzEscT1zLmIKaWYocjxxKXtzLnNwKEoueDkocy5hLHIpKQpzLmM9cgpy -ZXR1cm4hMH1zLnNwKG51bGwpCnMuYz1xCnJldHVybiExfSwKZ2woKXt2YXIgcz10aGlzLmQKcmV0dXJu -IHM9PW51bGw/dGhpcy4kdGkuYy5hKHMpOnN9LApzcChhKXt0aGlzLmQ9dGhpcy4kdGkuQygiMT8iKS5h -KGEpfSwKJGlBbjoxfQpBLmRXLnByb3RvdHlwZT17JGlEMDoxLCRpdjY6MX0KQS5tay5wcm90b3R5cGU9 -eyRpeTA6MX0KQS5Lby5wcm90b3R5cGU9ewpQbihhKXt2YXIgcyxyPW5ldyBBLmZtKHRoaXMpCmRve3M9 -dGhpcy5iCnIuJDIoYSxudWxsKX13aGlsZShzIT09dGhpcy5iKX0sCkVQKGEsYil7Kyt0aGlzLmIKaWYo -Yj09bnVsbHx8YiE9PWEucGFyZW50Tm9kZSlKLkx0KGEpCmVsc2UgYi5yZW1vdmVDaGlsZChhKX0sCkk0 -KGEsYil7dmFyIHMscixxLHAsbyxuPSEwLG09bnVsbCxsPW51bGwKdHJ5e209Si5pZyhhKQpsPW0uYS5n -ZXRBdHRyaWJ1dGUoImlzIikKdC5oLmEoYSkKcz1mdW5jdGlvbihjKXtpZighKGMuYXR0cmlidXRlcyBp -bnN0YW5jZW9mIE5hbWVkTm9kZU1hcCkpcmV0dXJuIHRydWUKaWYoYy5pZD09Imxhc3RDaGlsZCJ8fGMu -bmFtZT09Imxhc3RDaGlsZCJ8fGMuaWQ9PSJwcmV2aW91c1NpYmxpbmcifHxjLm5hbWU9PSJwcmV2aW91 -c1NpYmxpbmcifHxjLmlkPT0iY2hpbGRyZW4ifHxjLm5hbWU9PSJjaGlsZHJlbiIpcmV0dXJuIHRydWUK -dmFyIGs9Yy5jaGlsZE5vZGVzCmlmKGMubGFzdENoaWxkJiZjLmxhc3RDaGlsZCE9PWtbay5sZW5ndGgt -MV0pcmV0dXJuIHRydWUKaWYoYy5jaGlsZHJlbilpZighKGMuY2hpbGRyZW4gaW5zdGFuY2VvZiBIVE1M -Q29sbGVjdGlvbnx8Yy5jaGlsZHJlbiBpbnN0YW5jZW9mIE5vZGVMaXN0KSlyZXR1cm4gdHJ1ZQp2YXIg -aj0wCmlmKGMuY2hpbGRyZW4paj1jLmNoaWxkcmVuLmxlbmd0aApmb3IodmFyIGk9MDtpPGo7aSsrKXt2 -YXIgaD1jLmNoaWxkcmVuW2ldCmlmKGguaWQ9PSJhdHRyaWJ1dGVzInx8aC5uYW1lPT0iYXR0cmlidXRl -cyJ8fGguaWQ9PSJsYXN0Q2hpbGQifHxoLm5hbWU9PSJsYXN0Q2hpbGQifHxoLmlkPT0icHJldmlvdXNT -aWJsaW5nInx8aC5uYW1lPT0icHJldmlvdXNTaWJsaW5nInx8aC5pZD09ImNoaWxkcmVuInx8aC5uYW1l -PT0iY2hpbGRyZW4iKXJldHVybiB0cnVlfXJldHVybiBmYWxzZX0oYSkKbj1BLm9UKHMpPyEwOiEoYS5h -dHRyaWJ1dGVzIGluc3RhbmNlb2YgTmFtZWROb2RlTWFwKX1jYXRjaChwKXt9cj0iZWxlbWVudCB1bnBy -aW50YWJsZSIKdHJ5e3I9Si5ZUyhhKX1jYXRjaChwKXt9dHJ5e3E9QS5yUyhhKQp0aGlzLmtSKHQuaC5h -KGEpLGIsbixyLHEsdC5mLmEobSksQS5rKGwpKX1jYXRjaChwKXtpZihBLlJ1KHApIGluc3RhbmNlb2Yg -QS5BVCl0aHJvdyBwCmVsc2V7dGhpcy5FUChhLGIpCndpbmRvdwpvPUEuRWoocikKaWYodHlwZW9mIGNv -bnNvbGUhPSJ1bmRlZmluZWQiKXdpbmRvdy5jb25zb2xlLndhcm4oIlJlbW92aW5nIGNvcnJ1cHRlZCBl -bGVtZW50ICIrbyl9fX0sCmtSKGEsYixjLGQsZSxmLGcpe3ZhciBzLHIscSxwLG8sbixtLGw9dGhpcwpp -ZihjKXtsLkVQKGEsYikKd2luZG93CmlmKHR5cGVvZiBjb25zb2xlIT0idW5kZWZpbmVkIil3aW5kb3cu -Y29uc29sZS53YXJuKCJSZW1vdmluZyBlbGVtZW50IGR1ZSB0byBjb3JydXB0ZWQgYXR0cmlidXRlcyBv -biA8IitkKyI+IikKcmV0dXJufWlmKCFsLmEuaTAoYSkpe2wuRVAoYSxiKQp3aW5kb3cKcz1BLkVqKGIp -CmlmKHR5cGVvZiBjb25zb2xlIT0idW5kZWZpbmVkIil3aW5kb3cuY29uc29sZS53YXJuKCJSZW1vdmlu -ZyBkaXNhbGxvd2VkIGVsZW1lbnQgPCIrZSsiPiBmcm9tICIrcykKcmV0dXJufWlmKGchPW51bGwpaWYo -IWwuYS5FYihhLCJpcyIsZykpe2wuRVAoYSxiKQp3aW5kb3cKaWYodHlwZW9mIGNvbnNvbGUhPSJ1bmRl -ZmluZWQiKXdpbmRvdy5jb25zb2xlLndhcm4oIlJlbW92aW5nIGRpc2FsbG93ZWQgdHlwZSBleHRlbnNp -b24gPCIrZSsnIGlzPSInK2crJyI+JykKcmV0dXJufXM9Zi5ndmMoKQpyPUEuUUkocy5zbGljZSgwKSxB -LnQ2KHMpKQpmb3IocT1mLmd2YygpLmxlbmd0aC0xLHM9Zi5hLHA9IlJlbW92aW5nIGRpc2FsbG93ZWQg -YXR0cmlidXRlIDwiK2UrIiAiO3E+PTA7LS1xKXtpZighKHE8ci5sZW5ndGgpKXJldHVybiBBLk9IKHIs -cSkKbz1yW3FdCm49bC5hCm09Si5jSChvKQpBLm4obykKaWYoIW4uRWIoYSxtLEEubihzLmdldEF0dHJp -YnV0ZShvKSkpKXt3aW5kb3cKbj1zLmdldEF0dHJpYnV0ZShvKQppZih0eXBlb2YgY29uc29sZSE9InVu -ZGVmaW5lZCIpd2luZG93LmNvbnNvbGUud2FybihwK28rJz0iJytBLkVqKG4pKyciPicpCnMucmVtb3Zl -QXR0cmlidXRlKG8pfX1pZih0LmFXLmIoYSkpe3M9YS5jb250ZW50CnMudG9TdHJpbmcKbC5QbihzKX19 -LAokaW9uOjF9CkEuZm0ucHJvdG90eXBlPXsKJDIoYSxiKXt2YXIgcyxyLHEscCxvLG4sbT10aGlzLmEK -c3dpdGNoKGEubm9kZVR5cGUpe2Nhc2UgMTptLkk0KGEsYikKYnJlYWsKY2FzZSA4OmNhc2UgMTE6Y2Fz -ZSAzOmNhc2UgNDpicmVhawpkZWZhdWx0Om0uRVAoYSxiKX1zPWEubGFzdENoaWxkCmZvcihxPXQuQTtz -IT1udWxsOyl7cj1udWxsCnRyeXtyPXMucHJldmlvdXNTaWJsaW5nCmlmKHIhPW51bGwpe3A9ci5uZXh0 -U2libGluZwpvPXMKbz1wPT1udWxsP28hPW51bGw6cCE9PW8KcD1vfWVsc2UgcD0hMQppZihwKXtwPUEu -UFYoIkNvcnJ1cHQgSFRNTCIpCnRocm93IEEuYihwKX19Y2F0Y2gobil7cD1xLmEocyk7KyttLmIKbz1w -LnBhcmVudE5vZGUKaWYoYSE9PW8pe2lmKG8hPW51bGwpby5yZW1vdmVDaGlsZChwKX1lbHNlIGEucmVt -b3ZlQ2hpbGQocCkKcz1udWxsCnI9YS5sYXN0Q2hpbGR9aWYocyE9bnVsbCl0aGlzLiQyKHMsYSkKcz1y -fX0sCiRTOjMwfQpBLlk4LnByb3RvdHlwZT17fQpBLm5xLnByb3RvdHlwZT17fQpBLkFyLnByb3RvdHlw -ZT17fQpBLnRELnByb3RvdHlwZT17fQpBLnVmLnByb3RvdHlwZT17fQpBLmlKLnByb3RvdHlwZT17ClZI -KGEpe3ZhciBzLHI9dGhpcy5hLHE9ci5sZW5ndGgKZm9yKHM9MDtzPHE7KytzKWlmKHJbc109PT1hKXJl -dHVybiBzCkIuTm0uaShyLGEpCkIuTm0uaSh0aGlzLmIsbnVsbCkKcmV0dXJuIHF9LApQdihhKXt2YXIg -cyxyLHEscD10aGlzLG89e30KaWYoYT09bnVsbClyZXR1cm4gYQppZihBLnJRKGEpKXJldHVybiBhCmlm -KHR5cGVvZiBhPT0ibnVtYmVyIilyZXR1cm4gYQppZih0eXBlb2YgYT09InN0cmluZyIpcmV0dXJuIGEK -aWYoYSBpbnN0YW5jZW9mIEEuaVApcmV0dXJuIG5ldyBEYXRlKGEuYSkKaWYodC5mdi5iKGEpKXRocm93 -IEEuYihBLlNZKCJzdHJ1Y3R1cmVkIGNsb25lIG9mIFJlZ0V4cCIpKQppZih0LmM4LmIoYSkpcmV0dXJu -IGEKaWYodC53LmIoYSkpcmV0dXJuIGEKaWYodC54LmIoYSkpcmV0dXJuIGEKcz10LmRFLmIoYSl8fCEx -CmlmKHMpcmV0dXJuIGEKaWYodC5mLmIoYSkpe3I9cC5WSChhKQpzPXAuYgppZighKHI8cy5sZW5ndGgp -KXJldHVybiBBLk9IKHMscikKcT1vLmE9c1tyXQppZihxIT1udWxsKXJldHVybiBxCnE9e30Kby5hPXEK -Qi5ObS5ZNShzLHIscSkKYS5LKDAsbmV3IEEuRTIobyxwKSkKcmV0dXJuIG8uYX1pZih0LmouYihhKSl7 -cj1wLlZIKGEpCm89cC5iCmlmKCEocjxvLmxlbmd0aCkpcmV0dXJuIEEuT0gobyxyKQpxPW9bcl0KaWYo -cSE9bnVsbClyZXR1cm4gcQpyZXR1cm4gcC5layhhLHIpfWlmKHQuZUguYihhKSl7cj1wLlZIKGEpCnM9 -cC5iCmlmKCEocjxzLmxlbmd0aCkpcmV0dXJuIEEuT0gocyxyKQpxPW8uYj1zW3JdCmlmKHEhPW51bGwp -cmV0dXJuIHEKcT17fQpvLmI9cQpCLk5tLlk1KHMscixxKQpwLmltKGEsbmV3IEEuamcobyxwKSkKcmV0 -dXJuIG8uYn10aHJvdyBBLmIoQS5TWSgic3RydWN0dXJlZCBjbG9uZSBvZiBvdGhlciB0eXBlIikpfSwK -ZWsoYSxiKXt2YXIgcyxyPUouVTYoYSkscT1yLmdrKGEpLHA9bmV3IEFycmF5KHEpCkIuTm0uWTUodGhp -cy5iLGIscCkKZm9yKHM9MDtzPHE7KytzKUIuTm0uWTUocCxzLHRoaXMuUHYoci5xKGEscykpKQpyZXR1 -cm4gcH19CkEuRTIucHJvdG90eXBlPXsKJDIoYSxiKXt0aGlzLmEuYVthXT10aGlzLmIuUHYoYil9LAok -UzozMX0KQS5qZy5wcm90b3R5cGU9ewokMihhLGIpe3RoaXMuYS5iW2FdPXRoaXMuYi5QdihiKX0sCiRT -OjMyfQpBLkJmLnByb3RvdHlwZT17CmltKGEsYil7dmFyIHMscixxLHAKdC5iOC5hKGIpCmZvcihzPU9i -amVjdC5rZXlzKGEpLHI9cy5sZW5ndGgscT0wO3E8cjsrK3Epe3A9c1txXQpiLiQyKHAsYVtwXSl9fX0K -QS5Bcy5wcm90b3R5cGU9ewpWKGEpe3ZhciBzCkEubihhKQpzPSQuaEcoKS5iCmlmKHMudGVzdChhKSly -ZXR1cm4gYQp0aHJvdyBBLmIoQS5MMyhhLCJ2YWx1ZSIsIk5vdCBhIHZhbGlkIGNsYXNzIHRva2VuIikp -fSwKIlsiKGEpe3JldHVybiB0aGlzLkQoKS5IKDAsIiAiKX0sCmdBKGEpe3ZhciBzPXRoaXMuRCgpCnJl -dHVybiBBLnJqKHMscy5yLEEuTGgocykuYyl9LApnbDAoYSl7cmV0dXJuIHRoaXMuRCgpLmE9PT0wfSwK -Z29yKGEpe3JldHVybiB0aGlzLkQoKS5hIT09MH0sCmdrKGEpe3JldHVybiB0aGlzLkQoKS5hfSwKdGco -YSxiKXt0aGlzLlYoYikKcmV0dXJuIHRoaXMuRCgpLnRnKDAsYil9LAppKGEsYil7dmFyIHMKQS5uKGIp -CnRoaXMuVihiKQpzPXRoaXMuT1MobmV3IEEuR0UoYikpCnJldHVybiBBLnA4KHM9PW51bGw/ITE6cyl9 -LApSKGEsYil7dmFyIHMscgppZih0eXBlb2YgYiE9InN0cmluZyIpcmV0dXJuITEKdGhpcy5WKGIpCnM9 -dGhpcy5EKCkKcj1zLlIoMCxiKQp0aGlzLlgocykKcmV0dXJuIHJ9LApGVihhLGIpe3RoaXMuT1MobmV3 -IEEuTjcodGhpcyx0Lk8uYShiKSkpfSwKZVIoYSxiKXt2YXIgcz10aGlzLkQoKQpyZXR1cm4gQS5iSyhz -LGIsQS5MaChzKS5DKCJsZi5FIikpfSwKRShhLGIpe3JldHVybiB0aGlzLkQoKS5FKDAsYil9LApWMShh -KXt0aGlzLk9TKG5ldyBBLnVRKCkpfSwKT1MoYSl7dmFyIHMscgp0LmJVLmEoYSkKcz10aGlzLkQoKQpy -PWEuJDEocykKdGhpcy5YKHMpCnJldHVybiByfX0KQS5HRS5wcm90b3R5cGU9ewokMShhKXtyZXR1cm4g -dC5DLmEoYSkuaSgwLHRoaXMuYSl9LAokUzozM30KQS5ONy5wcm90b3R5cGU9ewokMShhKXt2YXIgcz10 -aGlzLmIscj1BLnQ2KHMpCnJldHVybiB0LkMuYShhKS5GVigwLG5ldyBBLmxKKHMsci5DKCJxVSgxKSIp -LmEodGhpcy5hLmd1TSgpKSxyLkMoImxKPDEscVU+IikpKX0sCiRTOjE1fQpBLnVRLnByb3RvdHlwZT17 -CiQxKGEpe3QuQy5hKGEpCmlmKGEuYT4wKXthLmI9YS5jPWEuZD1hLmU9YS5mPW51bGwKYS5hPTAKYS5T -KCl9cmV0dXJuIG51bGx9LAokUzoxNX0KQS5oRi5wcm90b3R5cGU9eyRpaEY6MX0KQS5EVi5wcm90b3R5 -cGU9ewokMShhKXt2YXIgcwp0LlkuYShhKQpzPWZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gZnVuY3Rpb24o -KXtyZXR1cm4gYihjLGQsdGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoYXJndW1lbnRzKSl9 -fShBLlI0LGEsITEpCkEuRG0ocywkLncoKSxhKQpyZXR1cm4gc30sCiRTOjN9CkEuUEMucHJvdG90eXBl -PXsKJDEoYSl7cmV0dXJuIG5ldyB0aGlzLmEoYSl9LAokUzozfQpBLlFTLnByb3RvdHlwZT17CiQxKGEp -e3JldHVybiBuZXcgQS5yNyhhPT1udWxsP3QuSy5hKGEpOmEpfSwKJFM6MzV9CkEubnAucHJvdG90eXBl -PXsKJDEoYSl7dmFyIHM9YT09bnVsbD90LksuYShhKTphCnJldHVybiBuZXcgQS5UeihzLHQuYW0pfSwK -JFM6NTR9CkEuVXQucHJvdG90eXBlPXsKJDEoYSl7cmV0dXJuIG5ldyBBLkU0KGE9PW51bGw/dC5LLmEo -YSk6YSl9LAokUzozN30KQS5FNC5wcm90b3R5cGU9ewpxKGEsYil7aWYodHlwZW9mIGIhPSJzdHJpbmci -JiZ0eXBlb2YgYiE9Im51bWJlciIpdGhyb3cgQS5iKEEueFkoInByb3BlcnR5IGlzIG5vdCBhIFN0cmlu -ZyBvciBudW0iLG51bGwpKQpyZXR1cm4gQS5kVSh0aGlzLmFbYl0pfSwKWTUoYSxiLGMpe2lmKHR5cGVv -ZiBiIT0ic3RyaW5nIiYmdHlwZW9mIGIhPSJudW1iZXIiKXRocm93IEEuYihBLnhZKCJwcm9wZXJ0eSBp -cyBub3QgYSBTdHJpbmcgb3IgbnVtIixudWxsKSkKdGhpcy5hW2JdPUEud1koYyl9LApETihhLGIpe2lm -KGI9PW51bGwpcmV0dXJuITEKcmV0dXJuIGIgaW5zdGFuY2VvZiBBLkU0JiZ0aGlzLmE9PT1iLmF9LAoi -WyIoYSl7dmFyIHMscgp0cnl7cz1TdHJpbmcodGhpcy5hKQpyZXR1cm4gc31jYXRjaChyKXtzPXRoaXMu -eGIoMCkKcmV0dXJuIHN9fSwKVjcoYSxiKXt2YXIgcyxyPXRoaXMuYQppZihiPT1udWxsKXM9bnVsbApl -bHNle3M9QS50NihiKQpzPUEuUFcobmV3IEEubEooYixzLkMoIkAoMSkiKS5hKEEuaUcoKSkscy5DKCJs -SjwxLEA+IikpLCEwLHQueil9cmV0dXJuIEEuZFUoclthXS5hcHBseShyLHMpKX0sCmdtKGEpe3JldHVy -biAwfX0KQS5yNy5wcm90b3R5cGU9e30KQS5Uei5wcm90b3R5cGU9ewpjUChhKXt2YXIgcz10aGlzLHI9 -YTwwfHxhPj1zLmdrKHMpCmlmKHIpdGhyb3cgQS5iKEEuVEUoYSwwLHMuZ2socyksbnVsbCxudWxsKSl9 -LApxKGEsYil7aWYoQS5vayhiKSl0aGlzLmNQKGIpCnJldHVybiB0aGlzLiR0aS5jLmEodGhpcy5Vcigw -LGIpKX0sClk1KGEsYixjKXt0aGlzLmNQKGIpCnRoaXMuYmgoMCxiLGMpfSwKZ2soYSl7dmFyIHM9dGhp -cy5hLmxlbmd0aAppZih0eXBlb2Ygcz09PSJudW1iZXIiJiZzPj4+MD09PXMpcmV0dXJuIHMKdGhyb3cg -QS5iKEEuUFYoIkJhZCBKc0FycmF5IGxlbmd0aCIpKX0sCiRpYlE6MSwKJGljWDoxLAokaXpNOjF9CkEu -dmcucHJvdG90eXBlPXsKWTUoYSxiLGMpe3JldHVybiB0aGlzLmU0KDAsYixjKX19CkEubmQucHJvdG90 -eXBlPXskaW5kOjF9CkEuS2UucHJvdG90eXBlPXsKRCgpe3ZhciBzLHIscSxwLG89dGhpcy5hLmdldEF0 -dHJpYnV0ZSgiY2xhc3MiKSxuPUEuTHModC5OKQppZihvPT1udWxsKXJldHVybiBuCmZvcihzPW8uc3Bs -aXQoIiAiKSxyPXMubGVuZ3RoLHE9MDtxPHI7KytxKXtwPUouVDAoc1txXSkKaWYocC5sZW5ndGghPT0w -KW4uaSgwLHApfXJldHVybiBufSwKWChhKXt0aGlzLmEuc2V0QXR0cmlidXRlKCJjbGFzcyIsYS5IKDAs -IiAiKSl9fQpBLmhpLnByb3RvdHlwZT17CmdQKGEpe3JldHVybiBuZXcgQS5LZShhKX0sCnNoZihhLGIp -e3RoaXMuWUMoYSxiKX0sCnI2KGEsYixjLGQpe3ZhciBzLHIscSxwLG8KaWYoZD09bnVsbCl7cz1BLlFJ -KFtdLHQuRCkKZD1uZXcgQS52RChzKQpCLk5tLmkocyxBLlR3KG51bGwpKQpCLk5tLmkocyxBLkJsKCkp -CkIuTm0uaShzLG5ldyBBLk93KCkpfWM9bmV3IEEuS28oZCkKcz1kb2N1bWVudApyPXMuYm9keQpyLnRv -U3RyaW5nCnE9Qi5SWS5BSChyLCc8c3ZnIHZlcnNpb249IjEuMSI+JytBLkVqKGIpKyI8L3N2Zz4iLGMp -CnA9cy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKcz1uZXcgQS5lNyhxKQpvPXMuZ3I4KHMpCmZvcig7 -cz1vLmZpcnN0Q2hpbGQscyE9bnVsbDspcC5hcHBlbmRDaGlsZChzKQpyZXR1cm4gcH0sCm56KGEsYixj -LGQsZSl7dGhyb3cgQS5iKEEuTDQoIkNhbm5vdCBpbnZva2UgaW5zZXJ0QWRqYWNlbnRIdG1sIG9uIFNW -Ry4iKSl9LApnVmwoYSl7cmV0dXJuIG5ldyBBLkNxKGEsImNsaWNrIiwhMSx0LlEpfSwKJGloaToxfQpB -LmQyLnByb3RvdHlwZT17Ckx0KCl7dmFyIHMscixxLHAsbz10aGlzLG49dC5OLG09dC5YLGw9QS5GbChu -LG0pLGs9by5hCmlmKGshPW51bGwpe3M9QS5RSShbXSx0LmQpCmZvcihyPWsubGVuZ3RoLHE9MDtxPGsu -bGVuZ3RoO2subGVuZ3RoPT09cnx8KDAsQS5saykoayksKytxKXtwPWtbcV0Kcy5wdXNoKEEuRUYoWyJk -ZXNjcmlwdGlvbiIscC5hLCJocmVmIixwLmJdLG4sbSkpfWwuWTUoMCwiZWRpdHMiLHMpfWwuWTUoMCwi -ZXhwbGFuYXRpb24iLG8uYikKbC5ZNSgwLCJsaW5lIixvLmMpCmwuWTUoMCwiZGlzcGxheVBhdGgiLG8u -ZCkKbC5ZNSgwLCJ1cmlQYXRoIixvLmUpCm49by5mCmlmKG4hPW51bGwpe209QS5RSShbXSx0LmQpCmZv -cihrPW4ubGVuZ3RoLHE9MDtxPG4ubGVuZ3RoO24ubGVuZ3RoPT09a3x8KDAsQS5saykobiksKytxKW0u -cHVzaChuW3FdLkx0KCkpCmwuWTUoMCwidHJhY2VzIixtKX1yZXR1cm4gbH19CkEuU2UucHJvdG90eXBl -PXsKTHQoKXtyZXR1cm4gQS5FRihbImRlc2NyaXB0aW9uIix0aGlzLmEsImhyZWYiLHRoaXMuYl0sdC5O -LHQuWCl9fQpBLk1sLnByb3RvdHlwZT17Ckx0KCl7cmV0dXJuIEEuRUYoWyJocmVmIix0aGlzLmEsImxp -bmUiLHRoaXMuYiwicGF0aCIsdGhpcy5jXSx0Lk4sdC5YKX19CkEueUQucHJvdG90eXBlPXsKTHQoKXt2 -YXIgcyxyLHEscD1BLlFJKFtdLHQuZCkKZm9yKHM9dGhpcy5iLHI9cy5sZW5ndGgscT0wO3E8cy5sZW5n -dGg7cy5sZW5ndGg9PT1yfHwoMCxBLmxrKShzKSwrK3EpcC5wdXNoKHNbcV0uTHQoKSkKcmV0dXJuIEEu -RUYoWyJkZXNjcmlwdGlvbiIsdGhpcy5hLCJlbnRyaWVzIixwXSx0Lk4sdC5YKX19CkEud2IucHJvdG90 -eXBlPXsKTHQoKXt2YXIgcyxyLHEscD10aGlzLG89QS5GbCh0Lk4sdC5YKQpvLlk1KDAsImRlc2NyaXB0 -aW9uIixwLmEpCnM9cC5iCmlmKHMhPW51bGwpby5ZNSgwLCJmdW5jdGlvbiIscykKcz1wLmMKaWYocyE9 -bnVsbClvLlk1KDAsImxpbmsiLHMuTHQoKSkKcz1wLmQKaWYocy5sZW5ndGghPT0wKXtyPUEudDYocykK -cT1yLkMoImxKPDEsWjA8cVUsTWg/Pj4iKQpvLlk1KDAsImhpbnRBY3Rpb25zIixBLlkxKG5ldyBBLmxK -KHMsci5DKCJaMDxxVSxNaD8+KDEpIikuYShuZXcgQS5iMCgpKSxxKSwhMCxxLkMoImFMLkUiKSkpfXJl -dHVybiBvfX0KQS5hTi5wcm90b3R5cGU9ewokMShhKXtyZXR1cm4gQS5ueih0LkcuYShhKSl9LAokUzoz -OH0KQS5iMC5wcm90b3R5cGU9ewokMShhKXtyZXR1cm4gdC5KLmEoYSkuTHQoKX0sCiRTOjM5fQpBLmo4 -LnByb3RvdHlwZT17Ckx0KCl7cmV0dXJuIEEuRUYoWyJsaW5lIix0aGlzLmEsImV4cGxhbmF0aW9uIix0 -aGlzLmIsIm9mZnNldCIsdGhpcy5jXSx0Lk4sdC5YKX19CkEucXAucHJvdG90eXBlPXsKTHQoKXt2YXIg -cyxyLHEscCxvLG4sbSxsPXRoaXMsaz10Lk4saj1BLkZsKGssdC5hUykKZm9yKHM9bC5kLHM9cy5nUHUo -cykscz1zLmdBKHMpLHI9dC5YLHE9dC5kO3MuRygpOyl7cD1zLmdsKCkKbz1wLmEKbj1BLlFJKFtdLHEp -CmZvcihwPUouSVQocC5iKTtwLkcoKTspe209cC5nbCgpCm4ucHVzaChBLkVGKFsibGluZSIsbS5hLCJl -eHBsYW5hdGlvbiIsbS5iLCJvZmZzZXQiLG0uY10sayxyKSl9ai5ZNSgwLG8sbil9cmV0dXJuIEEuRUYo -WyJyZWdpb25zIixsLmEsIm5hdmlnYXRpb25Db250ZW50IixsLmIsInNvdXJjZUNvZGUiLGwuYywiZWRp -dHMiLGpdLGsscil9fQpBLm1RLnByb3RvdHlwZT17fQpBLmUucHJvdG90eXBlPXsKJDEoYSl7dmFyIHMs -cixxLHAsbyxuLG0KdC5CLmEoYSkKcz10LkYKcj1zLmEod2luZG93LmxvY2F0aW9uKS5wYXRobmFtZQpx -PUEuRzYocy5hKHdpbmRvdy5sb2NhdGlvbikuaHJlZikKcD1BLmFLKHMuYSh3aW5kb3cubG9jYXRpb24p -LmhyZWYpCkEuR2UoKQppZihyIT09Ii8iKXtzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5yb290Iiku -dGV4dENvbnRlbnQKcy50b1N0cmluZwpzPXIhPT1CLnhCLmJTKHMpfWVsc2Ugcz0hMQppZihzKXtyLnRv -U3RyaW5nCkEuRzcocixxLHAsITAsbmV3IEEuVlcocixxLHApKX1zPWRvY3VtZW50Cm89cy5xdWVyeVNl -bGVjdG9yKCIuYXBwbHktbWlncmF0aW9uIikKby50b1N0cmluZwpvPUoucUYobykKbj1vLiR0aQptPW4u -QygifigxKT8iKS5hKG5ldyBBLm9aKCkpCnQuWi5hKG51bGwpCkEuSkUoby5hLG8uYixtLCExLG4uYykK -bj1zLnF1ZXJ5U2VsZWN0b3IoIi5yZXJ1bi1taWdyYXRpb24iKQpuLnRvU3RyaW5nCm49Si5xRihuKQpt -PW4uJHRpCkEuSkUobi5hLG4uYixtLkMoIn4oMSk/IikuYShuZXcgQS55OCgpKSwhMSxtLmMpCm09cy5x -dWVyeVNlbGVjdG9yKCIucmVwb3J0LXByb2JsZW0iKQptLnRvU3RyaW5nCm09Si5xRihtKQpuPW0uJHRp -CkEuSkUobS5hLG0uYixuLkMoIn4oMSk/IikuYShuZXcgQS5IaSgpKSwhMSxuLmMpCnM9cy5xdWVyeVNl -bGVjdG9yKCIucG9wdXAtcGFuZSAuY2xvc2UiKQpzLnRvU3RyaW5nCnM9Si5xRihzKQpuPXMuJHRpCkEu -SkUocy5hLHMuYixuLkMoIn4oMSk/IikuYShuZXcgQS5CVCgpKSwhMSxuLmMpCm49JC5jMCgpCm4udG9T -dHJpbmcKbj1KLnFGKG4pCnM9bi4kdGkKQS5KRShuLmEsbi5iLHMuQygifigxKT8iKS5hKG5ldyBBLlBZ -KCkpLCExLHMuYyl9LAokUzoxNn0KQS5WVy5wcm90b3R5cGU9ewokMCgpe0EuRnIodGhpcy5hLHRoaXMu -Yix0aGlzLmMpfSwKJFM6MH0KQS5vWi5wcm90b3R5cGU9ewokMShhKXt2YXIgcyxyLHEscCxvCnQuVi5h -KGEpCmlmKEIub2wudXMod2luZG93LCJUaGlzIHdpbGwgYXBwbHkgdGhlIGNoYW5nZXMgeW91J3ZlIHBy -ZXZpZXdlZCB0byB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5LiBJdCBpcyByZWNvbW1lbmRlZCB5b3UgY29t -bWl0IGFueSBjaGFuZ2VzIHlvdSBtYWRlIGJlZm9yZSBkb2luZyB0aGlzLiIpKXtzPUEuUUkoW10sdC5k -KQpmb3Iocj0kLklSLHE9ci5sZW5ndGgscD0wO3A8ci5sZW5ndGg7ci5sZW5ndGg9PT1xfHwoMCxBLmxr -KShyKSwrK3Apcy5wdXNoKHJbcF0uTHQoKSkKcz1BLnR5KCIvYXBwbHktbWlncmF0aW9uIixBLkVGKFsi -bmF2aWdhdGlvblRyZWUiLHNdLHQuTix0LmFTKSkuVzcobmV3IEEuanIoKSx0LlApCm89bmV3IEEucWwo -KQp0LmI3LmEobnVsbCkKcj1zLiR0aQpxPSQuWDMKaWYocSE9PUIuTlUpbz1BLlZIKG8scSkKcy54Zihu -ZXcgQS5GZShuZXcgQS52cyhxLHIpLDIsbnVsbCxvLHIuQygiQDwxPiIpLktxKHIuYykuQygiRmU8MSwy -PiIpKSl9fSwKJFM6MX0KQS5qci5wcm90b3R5cGU9ewokMShhKXt2YXIgcwp0LmZuLmEoYSkKcz1kb2N1 -bWVudC5ib2R5CnMuY2xhc3NMaXN0LnJlbW92ZSgicHJvcG9zZWQiKQpzLmNsYXNzTGlzdC5hZGQoImFw -cGxpZWQiKX0sCiRTOjQyfQpBLnFsLnByb3RvdHlwZT17CiQyKGEsYil7QS5DMigiQ291bGRuJ3QgYXBw -bHkgbWlncmF0aW9uIix0LksuYShhKSxiKX0sCiRTOjQzfQpBLnk4LnByb3RvdHlwZT17CiQxKGEpe3Jl -dHVybiB0aGlzLnhuKHQuVi5hKGEpKX0sCnhuKGEpe3ZhciBzPTAscj1BLkZYKHQuSCkscT0xLHAsbz1b -XSxuLG0sbCxrLGosaQp2YXIgJGFzeW5jJCQxPUEubHooZnVuY3Rpb24oYixjKXtpZihiPT09MSl7cD1j -CnM9cX13aGlsZSh0cnVlKXN3aXRjaChzKXtjYXNlIDA6cT0zCmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0 -LmFkZCgicmVydW5uaW5nIikKcz02CnJldHVybiBBLmpRKEEudHkoIi9yZXJ1bi1taWdyYXRpb24iLG51 -bGwpLCRhc3luYyQkMSkKY2FzZSA2Om49YwprPW4Kay50b1N0cmluZwppZihBLnA4KEoueDkoaywic3Vj -Y2VzcyIpKSl0LkYuYSh3aW5kb3cubG9jYXRpb24pLnJlbG9hZCgpCmVsc2UgQS5LMCh0LmV3LmEoSi54 -OShuLCJlcnJvcnMiKSkpCm8ucHVzaCg1KQpzPTQKYnJlYWsKY2FzZSAzOnE9MgppPXAKbT1BLlJ1KGkp -Cmw9QS50cyhpKQpBLkMyKCJGYWlsZWQgdG8gcmVydW4gbWlncmF0aW9uIixtLGwpCm8ucHVzaCg1KQpz -PTQKYnJlYWsKY2FzZSAyOm89WzFdCmNhc2UgNDpxPTEKZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVt -b3ZlKCJyZXJ1bm5pbmciKQpzPW8ucG9wKCkKYnJlYWsKY2FzZSA1OnJldHVybiBBLnlDKG51bGwscikK -Y2FzZSAxOnJldHVybiBBLmYzKHAscil9fSkKcmV0dXJuIEEuREkoJGFzeW5jJCQxLHIpfSwKJFM6MTd9 -CkEuSGkucHJvdG90eXBlPXsKJDEoYSl7dC5WLmEoYSkKQi5vbC5Qbyh3aW5kb3csQS5YZCgiaHR0cHMi -LCJnaXRodWIuY29tIiwiZGFydC1sYW5nL3Nkay9pc3N1ZXMvbmV3IixBLkVGKFsidGl0bGUiLCJDdXN0 -b21lci1yZXBvcnRlZCBpc3N1ZSB3aXRoIE5OQkQgbWlncmF0aW9uIHRvb2wiLCJsYWJlbHMiLHUuZCwi -Ym9keSIsIiMjIyMgU3RlcHMgdG8gcmVwcm9kdWNlXG5cbiMjIyMgV2hhdCBkaWQgeW91IGV4cGVjdCB0 -byBoYXBwZW4/XG5cbiMjIyMgV2hhdCBhY3R1YWxseSBoYXBwZW5lZD9cblxuX1NjcmVlbnNob3RzIGFy -ZSBhcHByZWNpYXRlZF9cblxuKipEYXJ0IFNESyB2ZXJzaW9uKio6ICIrQS5Faihkb2N1bWVudC5nZXRF -bGVtZW50QnlJZCgic2RrLXZlcnNpb24iKS50ZXh0Q29udGVudCkrIlxuXG5UaGFua3MgZm9yIGZpbGlu -ZyFcbiJdLHQuTix0LnopKS5nbkQoKSwicmVwb3J0LXByb2JsZW0iKX0sCiRTOjF9CkEuQlQucHJvdG90 -eXBlPXsKJDEoYSl7dmFyIHMKdC5WLmEoYSkKcz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIucG9wdXAt -cGFuZSIpLnN0eWxlCnMuZGlzcGxheT0ibm9uZSIKcmV0dXJuIm5vbmUifSwKJFM6MX0KQS5QWS5wcm90 -b3R5cGU9ewokMShhKXt2YXIgcyxyLHEscCxvCnQuVi5hKGEpCnM9JC5EOSgpLmlubmVyVGV4dApyPXQu -aC5hKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5uYXYtcGFuZWwgW2RhdGEtbmFtZSo9IicrQS5Maihz -KSsnIl0nKS5wYXJlbnROb2RlKQpxPXIucXVlcnlTZWxlY3RvcigiLnN0YXR1cy1pY29uIikKcD0kLklS -CnAudG9TdHJpbmcKbz1BLnl3KHAscykKaWYobyBpbnN0YW5jZW9mIEEuY0Qpe3A9by53CnAudG9TdHJp -bmd9ZWxzZSBwPSExCmlmKHApe0EuT3QobykKQS54bihxLG8pCkEuQVIocixvKX19LAokUzoxfQpBLkwu -cHJvdG90eXBlPXsKJDEoYSl7dmFyIHMscixxLHAKdC5CLmEoYSkKcz10LkYKcj1zLmEod2luZG93Lmxv -Y2F0aW9uKS5wYXRobmFtZQpyLnRvU3RyaW5nCnE9QS5HNihzLmEod2luZG93LmxvY2F0aW9uKS5ocmVm -KQpwPUEuYUsocy5hKHdpbmRvdy5sb2NhdGlvbikuaHJlZikKaWYoci5sZW5ndGg+MSlBLkc3KHIscSxw -LCExLG51bGwpCmVsc2V7QS5CRShyLEEud1IoKSwhMCkKQS5CWCgiJm5ic3A7IixudWxsKX19LAokUzox -Nn0KQS5XeC5wcm90b3R5cGU9ewokMShhKXt2YXIgcyxyLHEscCxvPSJjb2xsYXBzZWQiCnQuVi5hKGEp -CnM9dGhpcy5hCnI9Si5ZRShzKQpxPXRoaXMuYgpwPUouWUUocSkKaWYoIXIuZ1AocykudGcoMCxvKSl7 -ci5nUChzKS5pKDAsbykKcC5nUChxKS5pKDAsbyl9ZWxzZXtyLmdQKHMpLlIoMCxvKQpwLmdQKHEpLlIo -MCxvKX19LAokUzoxfQpBLkhvLnByb3RvdHlwZT17CiQxKGEpe3JldHVybiBBLnQyKHQuVi5hKGEpLHRo -aXMuYSl9LAokUzoxfQpBLklDLnByb3RvdHlwZT17CiQxKGEpe3ZhciBzLHIscSxwCnQuVi5hKGEpCnM9 -dGhpcy5hCnI9cy5nZXRBdHRyaWJ1dGUoImRhdGEtIituZXcgQS5TeShuZXcgQS5pNyhzKSkuT1UoIm9m -ZnNldCIpKQpyLnRvU3RyaW5nCnE9QS5RQShyLG51bGwpCnM9cy5nZXRBdHRyaWJ1dGUoImRhdGEtIitu -ZXcgQS5TeShuZXcgQS5pNyhzKSkuT1UoImxpbmUiKSkKcy50b1N0cmluZwpwPUEuUUEocyxudWxsKQpz -PXRoaXMuYgpzLnRvU3RyaW5nCkEuaFgocyxxLHApfSwKJFM6MX0KQS5mQy5wcm90b3R5cGU9ewokMShh -KXt0LnAuYShhKQp0aGlzLmEuYU0oMCx0aGlzLmIpfSwKJFM6NDV9CkEuVG0ucHJvdG90eXBlPXsKJDEo -YSl7QS5uKGEpCnJldHVybiBhLmxlbmd0aD40MD9CLnhCLk5qKGEsMCw0MCkrIi4uLiI6YX0sCiRTOjJ9 -CkEublQucHJvdG90eXBlPXsKJDAoKXtBLkZyKHRoaXMuYSx0aGlzLmIsdGhpcy5jKX0sCiRTOjB9CkEu -TlkucHJvdG90eXBlPXsKJDAoKXtBLkZyKHRoaXMuYSxudWxsLG51bGwpfSwKJFM6MH0KQS51ZS5wcm90 -b3R5cGU9ewokMShhKXt0LmYuYShhKQpyZXR1cm4gQS5FaihhLnEoMCwic2V2ZXJpdHkiKSkrIiAtICIr -QS5FaihhLnEoMCwibWVzc2FnZSIpKSsiIGF0ICIrQS5FaihhLnEoMCwibG9jYXRpb24iKSkrIiAtICgi -K0EuRWooYS5xKDAsImNvZGUiKSkrIikifSwKJFM6NDZ9CkEuR0gucHJvdG90eXBlPXsKJDEoYSl7dC5o -LmEoYSkKJC56QigpCnQuZXMuYSgkLm93KCkucSgwLCJobGpzIikpLlY3KCJoaWdobGlnaHRCbG9jayIs -W2FdKX0sCiRTOjE4fQpBLkVFLnByb3RvdHlwZT17CiQyKGEsYil7cmV0dXJuIEEuSVooYSkrSi5IbSh0 -LmVlLmEoYikuYil9LAokUzo0OH0KQS5QTi5wcm90b3R5cGU9ewokMShhKXt2YXIgcyxyCnQuVi5hKGEp -LnByZXZlbnREZWZhdWx0KCkKcz10aGlzLmEKcj10aGlzLmIKQS5hZih0LkYuYSh3aW5kb3cubG9jYXRp -b24pLnBhdGhuYW1lLHMsciwhMCxuZXcgQS5RTChzLHIpKQpBLmhYKHRoaXMuYyxzLHIpfSwKJFM6MX0K -QS5RTC5wcm90b3R5cGU9ewokMCgpe0EuRnIodC5GLmEod2luZG93LmxvY2F0aW9uKS5wYXRobmFtZSx0 -aGlzLmEsdGhpcy5iKX0sCiRTOjB9CkEuVlMucHJvdG90eXBlPXsKJDEoYSl7dmFyIHMscj0ic2VsZWN0 -ZWQtZmlsZSIKdC5oLmEoYSkKcz1KLllFKGEpCmlmKGEuZ2V0QXR0cmlidXRlKCJkYXRhLSIrbmV3IEEu -U3kobmV3IEEuaTcoYSkpLk9VKCJuYW1lIikpPT09dGhpcy5hLmEpcy5nUChhKS5pKDAscikKZWxzZSBz -LmdQKGEpLlIoMCxyKX0sCiRTOjE4fQpBLlRELnByb3RvdHlwZT17CiQxKGEpe3ZhciBzLHIKdC5WLmEo -YSkKcz10aGlzLmEKc3dpdGNoKHMuZ0woKS5hKXtjYXNlIDA6YnJlYWsKY2FzZSAyOnMubkcoKQpicmVh -awpjYXNlIDM6cy5jMigpCmJyZWFrCmNhc2UgMTpzLmMyKCkKYnJlYWt9cj10aGlzLmIKQS5iTChyLHMp -CkEueG4odGhpcy5jLHMpCkEuQVIocixzKX0sCiRTOjF9CkEuSWYucHJvdG90eXBlPXsKJDEoYSl7dmFy -IHMKdC5WLmEoYSkKcz10aGlzLmEKQS5PdChzKQpBLnhuKHRoaXMuYixzKQpBLkFSKHRoaXMuYyxzKX0s -CiRTOjF9CkEudEIucHJvdG90eXBlPXsKJDEoYSl7cmV0dXJuIEEudDIodC5WLmEoYSksITApfSwKJFM6 -MX0KQS5tMi5wcm90b3R5cGU9ewokMShhKXtyZXR1cm4gdGhpcy5SSSh0LlYuYShhKSl9LApSSShhKXt2 -YXIgcz0wLHI9QS5GWCh0LkgpLHE9MSxwLG89dGhpcyxuLG0sbCxrLGosaSxoLGcsZgp2YXIgJGFzeW5j -JCQxPUEubHooZnVuY3Rpb24oYixjKXtpZihiPT09MSl7cD1jCnM9cX13aGlsZSh0cnVlKXN3aXRjaChz -KXtjYXNlIDA6cT0zCmo9ZG9jdW1lbnQKbj1CLkNELnpRKGoucXVlcnlTZWxlY3RvcigiLmNvbnRlbnQi -KS5zY3JvbGxUb3ApCmk9dC5OCnM9NgpyZXR1cm4gQS5qUShBLnR5KEEuUTQoIi9hcHBseS1oaW50IixB -LkZsKGksaSkpLG8uYS5MdCgpKSwkYXN5bmMkJDEpCmNhc2UgNjppPW8uYgpoPWkuYQpoLnRvU3RyaW5n -Cm09QS5VcyhoKQpzPTcKcmV0dXJuIEEualEoQS5HNyhtLG51bGwsaS5iLCExLG51bGwpLCRhc3luYyQk -MSkKY2FzZSA3OmouYm9keS5jbGFzc0xpc3QuYWRkKCJuZWVkcy1yZXJ1biIpCmo9ai5xdWVyeVNlbGVj -dG9yKCIuY29udGVudCIpCmoudG9TdHJpbmcKai5zY3JvbGxUb3A9Qi5qbi56UShuKQpxPTEKcz01CmJy -ZWFrCmNhc2UgMzpxPTIKZj1wCmw9QS5SdShmKQprPUEudHMoZikKQS5DMigiY291bGRuJ3QgYXBwbHkg -aGludCIsbCxrKQpzPTUKYnJlYWsKY2FzZSAyOnM9MQpicmVhawpjYXNlIDU6cmV0dXJuIEEueUMobnVs -bCxyKQpjYXNlIDE6cmV0dXJuIEEuZjMocCxyKX19KQpyZXR1cm4gQS5ESSgkYXN5bmMkJDEscil9LAok -UzoxN30KQS5RVy5wcm90b3R5cGU9ewoiWyIoYSl7cmV0dXJuIHRoaXMuYSsiOlxuIit0aGlzLmJ9LAok -aVJ6OjF9CkEuWEEucHJvdG90eXBlPXsKRWIoYSxiLGMpe3JldHVybiEwfSwKaTAoYSl7cmV0dXJuITB9 -LAokaWtGOjF9CkEudnQucHJvdG90eXBlPXsKZ0woKXt2YXIgcyxyLHEscCxvLG4sbSxsPXRoaXMuZApp -ZihsLmxlbmd0aD09PTApcmV0dXJuIEIuY3cKcz1CLk5tLmd0SChsKS5nTCgpCmZvcihyPWwubGVuZ3Ro -LHE9ITAscD0hMCxvPTA7bzxsLmxlbmd0aDtsLmxlbmd0aD09PXJ8fCgwLEEubGspKGwpLCsrbyl7bj1s -W29dLmdMKCkKaWYobiE9cylzPW51bGwKbT1uIT09Qi5jdwppZihtJiZuIT09Qi5XRClxPSExCmlmKG0m -Jm4hPT1CLlhqKXA9ITF9aWYocyE9bnVsbClyZXR1cm4gcwppZihxKXJldHVybiBCLldECmlmKHApcmV0 -dXJuIEIuWGoKcmV0dXJuIEIuZGN9LApMVigpe3ZhciBzLHIscSxwPXRoaXMuZAppZihwIT1udWxsKWZv -cihzPXAubGVuZ3RoLHI9MDtyPHM7KytyKXtxPXBbcl0KaWYocS5iIT09JClBLmJ0KCJwYXJlbnQiKQpx -LmI9dGhpc319LApjMigpe3ZhciBzLHIscSxwLG8KZm9yKHM9dGhpcy5kLHI9cy5sZW5ndGgscT0wO3E8 -cy5sZW5ndGg7cy5sZW5ndGg9PT1yfHwoMCxBLmxrKShzKSwrK3Epe3A9c1txXQppZihwIGluc3RhbmNl -b2YgQS52dClwLmMyKCkKZWxzZXtpZihwIGluc3RhbmNlb2YgQS5jRCl7bz1wLncKby50b1N0cmluZwpv -PW8mJnAucj09PUIuWGp9ZWxzZSBvPSExCmlmKG8pcC5yPUIuV0R9fX0sCm5HKCl7dmFyIHMscixxLHAs -bwpmb3Iocz10aGlzLmQscj1zLmxlbmd0aCxxPTA7cTxzLmxlbmd0aDtzLmxlbmd0aD09PXJ8fCgwLEEu -bGspKHMpLCsrcSl7cD1zW3FdCmlmKHAgaW5zdGFuY2VvZiBBLnZ0KXAubkcoKQplbHNle2lmKHAgaW5z -dGFuY2VvZiBBLmNEKXtvPXAudwpvLnRvU3RyaW5nCm89byYmcC5yPT09Qi5XRH1lbHNlIG89ITEKaWYo -bylwLnI9Qi5Yan19fSwKTHQoKXt2YXIgcyxyPUEuRmwodC5OLHQuWCkKci5ZNSgwLCJ0eXBlIiwiZGly -ZWN0b3J5IikKci5ZNSgwLCJuYW1lIix0aGlzLmEpCnM9dGhpcy5kCnMudG9TdHJpbmcKci5ZNSgwLCJz -dWJ0cmVlIixBLlZEKHMpKQpzPXRoaXMuYwppZihzIT1udWxsKXIuWTUoMCwicGF0aCIscykKcmV0dXJu -IHJ9fQpBLmNELnByb3RvdHlwZT17Ckx0KCl7dmFyIHMscj10aGlzLHE9QS5GbCh0Lk4sdC5YKQpxLlk1 -KDAsInR5cGUiLCJmaWxlIikKcS5ZNSgwLCJuYW1lIixyLmEpCnM9ci5jCmlmKHMhPW51bGwpcS5ZNSgw -LCJwYXRoIixzKQpzPXIuZAppZihzIT1udWxsKXEuWTUoMCwiaHJlZiIscykKcz1yLmUKaWYocyE9bnVs -bClxLlk1KDAsImVkaXRDb3VudCIscykKcz1yLmYKaWYocyE9bnVsbClxLlk1KDAsIndhc0V4cGxpY2l0 -bHlPcHRlZE91dCIscykKcz1yLnIKaWYocyE9bnVsbClxLlk1KDAsIm1pZ3JhdGlvblN0YXR1cyIscy5h -KQpzPXIudwppZihzIT1udWxsKXEuWTUoMCwibWlncmF0aW9uU3RhdHVzQ2FuQmVDaGFuZ2VkIixzKQpy -ZXR1cm4gcX0sCmdMKCl7cmV0dXJuIHRoaXMucn19CkEuRDgucHJvdG90eXBlPXt9CkEuTzkucHJvdG90 -eXBlPXsKIlsiKGEpe3JldHVybiJOYXZpZ2F0aW9uVHJlZU5vZGVUeXBlLiIrdGhpcy5ifX0KQS5HYi5w -cm90b3R5cGU9ewoiWyIoYSl7cmV0dXJuIlVuaXRNaWdyYXRpb25TdGF0dXMuIit0aGlzLmJ9fQpBLkxM -LnByb3RvdHlwZT17Ckx0KCl7cmV0dXJuIEEuRUYoWyJub2RlSWQiLHRoaXMuYiwia2luZCIsdGhpcy5h -LmFdLHQuTix0LlgpfX0KQS5NRC5wcm90b3R5cGU9ewokMShhKXtyZXR1cm4gdC5ncC5hKGEpLmE9PT10 -aGlzLmEucSgwLCJraW5kIil9LAokUzo0OX0KQS5INy5wcm90b3R5cGU9ewoiWyIoYSl7cmV0dXJuIkhp -bnRBY3Rpb25LaW5kLiIrdGhpcy5ifX0KQS5sSS5wcm90b3R5cGU9ewpXTyhhLGIpe3ZhciBzLHIscT10 -LmQ0CkEuWUYoImFic29sdXRlIixBLlFJKFtiLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSxx -KSkKcz10aGlzLmEKcz1zLllyKGIpPjAmJiFzLmhLKGIpCmlmKHMpcmV0dXJuIGIKcz1BLmFiKCkKcj1B -LlFJKFtzLGIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLHEpCkEuWUYoImpvaW4iLHIpCnJl -dHVybiB0aGlzLklQKG5ldyBBLnU2KHIsdC5lSikpfSwKemYoYSl7dmFyIHMscixxPUEuQ0woYSx0aGlz -LmEpCnEuSVYoKQpzPXEuZApyPXMubGVuZ3RoCmlmKHI9PT0wKXtzPXEuYgpyZXR1cm4gcz09bnVsbD8i -LiI6c31pZihyPT09MSl7cz1xLmIKcmV0dXJuIHM9PW51bGw/Ii4iOnN9aWYoMD49cilyZXR1cm4gQS5P +QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGRkZG +RkZGRkZGRkZGRkZGR0dHR0dHR0dHR0dHR0dHR0hISEhISEhISEhISEhISEhISEhISEhISEhISElISEhK +RUVCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJLQ0NDQ0NDQ0NDQ0NDRENMT05OTk1FRUVFRUVF +RUVFRSIscykmMzEKaD1pPD0zMj9zJjYxNjk0Pj4+cToocyY2M3xoPDw2KT4+PjAKaT1CLnhCLlcoIiBc +eDAwMDpYRUNDQ0NDTjpsRGIgXHgwMDA6WEVDQ0NDQ052bERiIFx4MDAwOlhFQ0NDQ0NOOmxEYiBBQUFB +QVx4MDBceDAwXHgwMFx4MDBceDAwQUFBQUEwMDAwMEFBQUFBOjo6OjpBQUFBQUdHMDAwQUFBQUEwMEtL +S0FBQUFBRzo6OjpBQUFBQTpJSUlJQUFBQUEwMDBceDgwMEFBQUFBXHgwMFx4MDBceDAwXHgwMCBBQUFB +QSIsaStxKQppZihpPT09MCl7Zy5hKz1BLkx3KGgpCmlmKGY9PT1jKWJyZWFrICRsYWJlbDAkMApicmVh +a31lbHNlIGlmKChpJjEpIT09MCl7aWYocilzd2l0Y2goaSl7Y2FzZSA2OTpjYXNlIDY3OmcuYSs9QS5M +dyhqKQpicmVhawpjYXNlIDY1OmcuYSs9QS5MdyhqKTstLWYKYnJlYWsKZGVmYXVsdDpwPWcuYSs9QS5M +dyhqKQpnLmE9cCtBLkx3KGopCmJyZWFrfWVsc2V7ay5iPWkKay5jPWYtMQpyZXR1cm4iIn1pPTB9aWYo +Zj09PWMpYnJlYWsgJGxhYmVsMCQwCm89ZisxCmlmKCEoZj49MCYmZjxlKSlyZXR1cm4gQS5PSChhLGYp +CnM9YVtmXX1vPWYrMQppZighKGY+PTAmJmY8ZSkpcmV0dXJuIEEuT0goYSxmKQpzPWFbZl0KaWYoczwx +Mjgpe3doaWxlKCEwKXtpZighKG88Yykpe249YwpicmVha31tPW8rMQppZighKG8+PTAmJm88ZSkpcmV0 +dXJuIEEuT0goYSxvKQpzPWFbb10KaWYocz49MTI4KXtuPW0tMQpvPW0KYnJlYWt9bz1tfWlmKG4tZjwy +MClmb3IobD1mO2w8bjsrK2wpe2lmKCEobDxlKSlyZXR1cm4gQS5PSChhLGwpCmcuYSs9QS5MdyhhW2xd +KX1lbHNlIGcuYSs9QS5ITShhLGYsbikKaWYobj09PWMpYnJlYWsgJGxhYmVsMCQwCmY9b31lbHNlIGY9 +b31pZihkJiZpPjMyKWlmKHIpZy5hKz1BLkx3KGopCmVsc2V7ay5iPTc3CmsuYz1jCnJldHVybiIifWsu +Yj1pCmsuYz1oCmU9Zy5hCnJldHVybiBlLmNoYXJDb2RlQXQoMCk9PTA/ZTplfX0KQS5XRi5wcm90b3R5 +cGU9ewokMihhLGIpe3ZhciBzLHIscQp0LmZvLmEoYSkKcz10aGlzLmIKcj10aGlzLmEKcT1zLmErPXIu +YQpxKz1hLmEKcy5hPXEKcy5hPXErIjogIgpzLmErPUEuaGwoYikKci5hPSIsICJ9LAokUzo0NH0KQS5p +UC5wcm90b3R5cGU9ewpETihhLGIpe2lmKGI9PW51bGwpcmV0dXJuITEKcmV0dXJuIGIgaW5zdGFuY2Vv +ZiBBLmlQJiZ0aGlzLmE9PT1iLmEmJiEwfSwKZ20oYSl7dmFyIHM9dGhpcy5hCnJldHVybihzXkIuam4u +d0cocywzMCkpJjEwNzM3NDE4MjN9LAoiWyIoYSl7dmFyIHM9dGhpcyxyPUEuR3EoQS50SihzKSkscT1B +LmgwKEEuTlMocykpLHA9QS5oMChBLmpBKHMpKSxvPUEuaDAoQS5JWChzKSksbj1BLmgwKEEuY2gocykp +LG09QS5oMChBLkpkKHMpKSxsPUEuVngoQS5vMShzKSkKcmV0dXJuIHIrIi0iK3ErIi0iK3ArIiAiK28r +IjoiK24rIjoiK20rIi4iK2x9fQpBLmNrLnByb3RvdHlwZT17fQpBLlhTLnByb3RvdHlwZT17CmdJSSgp +e3JldHVybiBBLnRzKHRoaXMuJHRocm93bkpzRXJyb3IpfX0KQS5DNi5wcm90b3R5cGU9ewoiWyIoYSl7 +dmFyIHM9dGhpcy5hCmlmKHMhPW51bGwpcmV0dXJuIkFzc2VydGlvbiBmYWlsZWQ6ICIrQS5obChzKQpy +ZXR1cm4iQXNzZXJ0aW9uIGZhaWxlZCJ9fQpBLkV6LnByb3RvdHlwZT17fQpBLkYucHJvdG90eXBlPXsK +IlsiKGEpe3JldHVybiJUaHJvdyBvZiBudWxsLiJ9fQpBLkFULnByb3RvdHlwZT17CmdaKCl7cmV0dXJu +IkludmFsaWQgYXJndW1lbnQiKyghdGhpcy5hPyIocykiOiIiKX0sCmdOKCl7cmV0dXJuIiJ9LAoiWyIo +YSl7dmFyIHM9dGhpcyxyPXMuYyxxPXI9PW51bGw/IiI6IiAoIityKyIpIixwPXMuZCxvPXA9PW51bGw/ +IiI6IjogIitBLkVqKHApLG49cy5nWigpK3ErbwppZighcy5hKXJldHVybiBuCnJldHVybiBuK3MuZ04o +KSsiOiAiK0EuaGwocy5iKX19CkEuYkoucHJvdG90eXBlPXsKZ1ooKXtyZXR1cm4iUmFuZ2VFcnJvciJ9 +LApnTigpe3ZhciBzLHI9dGhpcy5lLHE9dGhpcy5mCmlmKHI9PW51bGwpcz1xIT1udWxsPyI6IE5vdCBs +ZXNzIHRoYW4gb3IgZXF1YWwgdG8gIitBLkVqKHEpOiIiCmVsc2UgaWYocT09bnVsbClzPSI6IE5vdCBn +cmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gIitBLkVqKHIpCmVsc2UgaWYocT5yKXM9IjogTm90IGluIGlu +Y2x1c2l2ZSByYW5nZSAiK0EuRWoocikrIi4uIitBLkVqKHEpCmVsc2Ugcz1xPHI/IjogVmFsaWQgdmFs +dWUgcmFuZ2UgaXMgZW1wdHkiOiI6IE9ubHkgdmFsaWQgdmFsdWUgaXMgIitBLkVqKHIpCnJldHVybiBz +fX0KQS5lWS5wcm90b3R5cGU9ewpnWigpe3JldHVybiJSYW5nZUVycm9yIn0sCmdOKCl7aWYoQS5JWih0 +aGlzLmIpPDApcmV0dXJuIjogaW5kZXggbXVzdCBub3QgYmUgbmVnYXRpdmUiCnZhciBzPXRoaXMuZgpp +ZihzPT09MClyZXR1cm4iOiBubyBpbmRpY2VzIGFyZSB2YWxpZCIKcmV0dXJuIjogaW5kZXggc2hvdWxk +IGJlIGxlc3MgdGhhbiAiK3N9LApnayhhKXtyZXR1cm4gdGhpcy5mfX0KQS5tcC5wcm90b3R5cGU9ewoi +WyIoYSl7dmFyIHMscixxLHAsbyxuLG0sbCxrPXRoaXMsaj17fSxpPW5ldyBBLk0oIiIpCmouYT0iIgpz +PWsuYwpmb3Iocj1zLmxlbmd0aCxxPTAscD0iIixvPSIiO3E8cjsrK3Esbz0iLCAiKXtuPXNbcV0KaS5h +PXArbwpwPWkuYSs9QS5obChuKQpqLmE9IiwgIn1rLmQuSygwLG5ldyBBLldGKGosaSkpCm09QS5obChr +LmEpCmw9aVsiWyJdKDApCnJldHVybiJOb1N1Y2hNZXRob2RFcnJvcjogbWV0aG9kIG5vdCBmb3VuZDog +JyIray5iLmErIidcblJlY2VpdmVyOiAiK20rIlxuQXJndW1lbnRzOiBbIitsKyJdIn19CkEudWIucHJv +dG90eXBlPXsKIlsiKGEpe3JldHVybiJVbnN1cHBvcnRlZCBvcGVyYXRpb246ICIrdGhpcy5hfX0KQS5k +cy5wcm90b3R5cGU9ewoiWyIoYSl7cmV0dXJuIlVuaW1wbGVtZW50ZWRFcnJvcjogIit0aGlzLmF9fQpB +LmxqLnByb3RvdHlwZT17CiJbIihhKXtyZXR1cm4iQmFkIHN0YXRlOiAiK3RoaXMuYX19CkEuVVYucHJv +dG90eXBlPXsKIlsiKGEpe3ZhciBzPXRoaXMuYQppZihzPT1udWxsKXJldHVybiJDb25jdXJyZW50IG1v +ZGlmaWNhdGlvbiBkdXJpbmcgaXRlcmF0aW9uLiIKcmV0dXJuIkNvbmN1cnJlbnQgbW9kaWZpY2F0aW9u +IGR1cmluZyBpdGVyYXRpb246ICIrQS5obChzKSsiLiJ9fQpBLms1LnByb3RvdHlwZT17CiJbIihhKXty +ZXR1cm4iT3V0IG9mIE1lbW9yeSJ9LApnSUkoKXtyZXR1cm4gbnVsbH0sCiRpWFM6MX0KQS5LWS5wcm90 +b3R5cGU9ewoiWyIoYSl7cmV0dXJuIlN0YWNrIE92ZXJmbG93In0sCmdJSSgpe3JldHVybiBudWxsfSwK +JGlYUzoxfQpBLnAucHJvdG90eXBlPXsKIlsiKGEpe3JldHVybiJSZWFkaW5nIHN0YXRpYyB2YXJpYWJs +ZSAnIit0aGlzLmErIicgZHVyaW5nIGl0cyBpbml0aWFsaXphdGlvbiJ9fQpBLkNELnByb3RvdHlwZT17 +CiJbIihhKXtyZXR1cm4iRXhjZXB0aW9uOiAiK3RoaXMuYX0sCiRpUno6MX0KQS5hRS5wcm90b3R5cGU9 +ewoiWyIoYSl7dmFyIHMscixxLHAsbyxuLG0sbCxrLGosaSxoPXRoaXMuYSxnPSIiIT09aD8iRm9ybWF0 +RXhjZXB0aW9uOiAiK2g6IkZvcm1hdEV4Y2VwdGlvbiIsZj10aGlzLmMsZT10aGlzLmIKaWYodHlwZW9m +IGU9PSJzdHJpbmciKXtpZihmIT1udWxsKXM9ZjwwfHxmPmUubGVuZ3RoCmVsc2Ugcz0hMQppZihzKWY9 +bnVsbAppZihmPT1udWxsKXtpZihlLmxlbmd0aD43OCllPUIueEIuTmooZSwwLDc1KSsiLi4uIgpyZXR1 +cm4gZysiXG4iK2V9Zm9yKHI9MSxxPTAscD0hMSxvPTA7bzxmOysrbyl7bj1CLnhCLlcoZSxvKQppZihu +PT09MTApe2lmKHEhPT1vfHwhcCkrK3IKcT1vKzEKcD0hMX1lbHNlIGlmKG49PT0xMyl7KytyCnE9bysx +CnA9ITB9fWc9cj4xP2crKCIgKGF0IGxpbmUgIityKyIsIGNoYXJhY3RlciAiKyhmLXErMSkrIilcbiIp +OmcrKCIgKGF0IGNoYXJhY3RlciAiKyhmKzEpKyIpXG4iKQptPWUubGVuZ3RoCmZvcihvPWY7bzxtOysr +byl7bj1CLnhCLk8oZSxvKQppZihuPT09MTB8fG49PT0xMyl7bT1vCmJyZWFrfX1pZihtLXE+NzgpaWYo +Zi1xPDc1KXtsPXErNzUKaz1xCmo9IiIKaT0iLi4uIn1lbHNle2lmKG0tZjw3NSl7az1tLTc1Cmw9bQpp +PSIifWVsc2V7az1mLTM2Cmw9ZiszNgppPSIuLi4ifWo9Ii4uLiJ9ZWxzZXtsPW0Kaz1xCmo9IiIKaT0i +In1yZXR1cm4gZytqK0IueEIuTmooZSxrLGwpK2krIlxuIitCLnhCLkl4KCIgIixmLWsrai5sZW5ndGgp +KyJeXG4ifWVsc2UgcmV0dXJuIGYhPW51bGw/ZysoIiAoYXQgb2Zmc2V0ICIrQS5FaihmKSsiKSIpOmd9 +LAokaVJ6OjF9CkEuY1gucHJvdG90eXBlPXsKZHIoYSxiKXtyZXR1cm4gQS5HSih0aGlzLEEuTGgodGhp +cykuQygiY1guRSIpLGIpfSwKRTIoYSxiLGMpe3ZhciBzPUEuTGgodGhpcykKcmV0dXJuIEEuSzEodGhp +cyxzLktxKGMpLkMoIjEoY1guRSkiKS5hKGIpLHMuQygiY1guRSIpLGMpfSwKZXYoYSxiKXt2YXIgcz1B +LkxoKHRoaXMpCnJldHVybiBuZXcgQS5VNSh0aGlzLHMuQygiYTIoY1guRSkiKS5hKGIpLHMuQygiVTU8 +Y1guRT4iKSl9LApOMChhLGIsYyxkKXt2YXIgcyxyCmQuYShiKQpBLkxoKHRoaXMpLktxKGQpLkMoIjEo +MSxjWC5FKSIpLmEoYykKZm9yKHM9dGhpcy5nQSh0aGlzKSxyPWI7cy5HKCk7KXI9Yy4kMihyLHMuZ2wo +KSkKcmV0dXJuIHJ9LAp0dChhLGIpe3JldHVybiBBLlkxKHRoaXMsYixBLkxoKHRoaXMpLkMoImNYLkUi +KSl9LApicihhKXtyZXR1cm4gdGhpcy50dChhLCEwKX0sCmdrKGEpe3ZhciBzLHI9dGhpcy5nQSh0aGlz +KQpmb3Iocz0wO3IuRygpOykrK3MKcmV0dXJuIHN9LApnbDAoYSl7cmV0dXJuIXRoaXMuZ0EodGhpcyku +RygpfSwKZ29yKGEpe3JldHVybiF0aGlzLmdsMCh0aGlzKX0sCmVSKGEsYil7cmV0dXJuIEEuYksodGhp +cyxiLEEuTGgodGhpcykuQygiY1guRSIpKX0sCmdyOChhKXt2YXIgcyxyPXRoaXMuZ0EodGhpcykKaWYo +IXIuRygpKXRocm93IEEuYihBLldwKCkpCnM9ci5nbCgpCmlmKHIuRygpKXRocm93IEEuYihBLkFtKCkp +CnJldHVybiBzfSwKRShhLGIpe3ZhciBzLHIscQpBLmsxKGIsImluZGV4IikKZm9yKHM9dGhpcy5nQSh0 +aGlzKSxyPTA7cy5HKCk7KXtxPXMuZ2woKQppZihiPT09cilyZXR1cm4gcTsrK3J9dGhyb3cgQS5iKEEu +Q2YoYix0aGlzLCJpbmRleCIsbnVsbCxyKSl9LAoiWyIoYSl7cmV0dXJuIEEuRVAodGhpcywiKCIsIiki +KX19CkEuQW4ucHJvdG90eXBlPXt9CkEuTjMucHJvdG90eXBlPXsKIlsiKGEpe3JldHVybiJNYXBFbnRy +eSgiK0EuRWoodGhpcy5hKSsiOiAiK0EuRWoodGhpcy5iKSsiKSJ9fQpBLmM4LnByb3RvdHlwZT17Cmdt +KGEpe3JldHVybiBBLk1oLnByb3RvdHlwZS5nbS5jYWxsKHRoaXMsdGhpcyl9LAoiWyIoYSl7cmV0dXJu +Im51bGwifX0KQS5NaC5wcm90b3R5cGU9eyRpTWg6MSwKRE4oYSxiKXtyZXR1cm4gdGhpcz09PWJ9LApn +bShhKXtyZXR1cm4gQS5lUSh0aGlzKX0sCiJbIihhKXtyZXR1cm4iSW5zdGFuY2Ugb2YgJyIrQS5saCh0 +aGlzKSsiJyJ9LAplNyhhLGIpe3Quby5hKGIpCnRocm93IEEuYihBLmxyKHRoaXMsYi5nV2EoKSxiLmdu +ZCgpLGIuZ1ZtKCkpKX0sCnRvU3RyaW5nKCl7cmV0dXJuIHRoaXNbIlsiXSh0aGlzKX19CkEuWmQucHJv +dG90eXBlPXsKIlsiKGEpe3JldHVybiIifSwKJGlHejoxfQpBLk0ucHJvdG90eXBlPXsKZ2soYSl7cmV0 +dXJuIHRoaXMuYS5sZW5ndGh9LAoiWyIoYSl7dmFyIHM9dGhpcy5hCnJldHVybiBzLmNoYXJDb2RlQXQo +MCk9PTA/czpzfSwKJGlCTDoxfQpBLm4xLnByb3RvdHlwZT17CiQyKGEsYil7dmFyIHMscixxLHAKdC5J +LmEoYSkKQS5uKGIpCnM9Qi54Qi5PWShiLCI9IikKaWYocz09PS0xKXtpZihiIT09IiIpYS5ZNSgwLEEu +a3UoYiwwLGIubGVuZ3RoLHRoaXMuYSwhMCksIiIpfWVsc2UgaWYocyE9PTApe3I9Qi54Qi5OaihiLDAs +cykKcT1CLnhCLnluKGIscysxKQpwPXRoaXMuYQphLlk1KDAsQS5rdShyLDAsci5sZW5ndGgscCwhMCks +QS5rdShxLDAscS5sZW5ndGgscCwhMCkpfXJldHVybiBhfSwKJFM6NDd9CkEuY1MucHJvdG90eXBlPXsK +JDIoYSxiKXt0aHJvdyBBLmIoQS5ycigiSWxsZWdhbCBJUHY0IGFkZHJlc3MsICIrYSx0aGlzLmEsYikp +fSwKJFM6MTl9CkEuVkMucHJvdG90eXBlPXsKJDIoYSxiKXt0aHJvdyBBLmIoQS5ycigiSWxsZWdhbCBJ +UHY2IGFkZHJlc3MsICIrYSx0aGlzLmEsYikpfSwKJFM6NTJ9CkEuSlQucHJvdG90eXBlPXsKJDIoYSxi +KXt2YXIgcwppZihiLWE+NCl0aGlzLmEuJDIoImFuIElQdjYgcGFydCBjYW4gb25seSBjb250YWluIGEg +bWF4aW11bSBvZiA0IGhleCBkaWdpdHMiLGEpCnM9QS5RQShCLnhCLk5qKHRoaXMuYixhLGIpLDE2KQpp +ZihzPDB8fHM+NjU1MzUpdGhpcy5hLiQyKCJlYWNoIHBhcnQgbXVzdCBiZSBpbiB0aGUgcmFuZ2Ugb2Yg +YDB4MC4uMHhGRkZGYCIsYSkKcmV0dXJuIHN9LAokUzoyMH0KQS5Ebi5wcm90b3R5cGU9ewpnbkQoKXt2 +YXIgcyxyLHEscCxvPXRoaXMsbj1vLncKaWYobj09PSQpe3M9by5hCnI9cy5sZW5ndGghPT0wPyIiK3Mr +IjoiOiIiCnE9by5jCnA9cT09bnVsbAppZighcHx8cz09PSJmaWxlIil7cz1yKyIvLyIKcj1vLmIKaWYo +ci5sZW5ndGghPT0wKXM9cytyKyJAIgppZighcClzKz1xCnI9by5kCmlmKHIhPW51bGwpcz1zKyI6IitB +LkVqKHIpfWVsc2Ugcz1yCnMrPW8uZQpyPW8uZgppZihyIT1udWxsKXM9cysiPyIrcgpyPW8ucgppZihy +IT1udWxsKXM9cysiIyIrcgppZihuIT09JClBLnBSKCJfdGV4dCIpCm49by53PXMuY2hhckNvZGVBdCgw +KT09MD9zOnN9cmV0dXJuIG59LApnRmooKXt2YXIgcyxyLHE9dGhpcyxwPXEueAppZihwPT09JCl7cz1x +LmUKaWYocy5sZW5ndGghPT0wJiZCLnhCLlcocywwKT09PTQ3KXM9Qi54Qi55bihzLDEpCnI9cy5sZW5n +dGg9PT0wP0IueEQ6QS5BRihuZXcgQS5sSihBLlFJKHMuc3BsaXQoIi8iKSx0LnMpLHQuZE8uYShBLlBI +KCkpLHQuZG8pLHQuTikKaWYocS54IT09JClBLnBSKCJwYXRoU2VnbWVudHMiKQpxLnNrRChyKQpwPXJ9 +cmV0dXJuIHB9LApnbShhKXt2YXIgcyxyPXRoaXMscT1yLnkKaWYocT09PSQpe3M9Qi54Qi5nbShyLmdu +RCgpKQppZihyLnkhPT0kKUEucFIoImhhc2hDb2RlIikKci55PXMKcT1zfXJldHVybiBxfSwKZ2hZKCl7 +dmFyIHMscixxPXRoaXMscD1xLnoKaWYocD09PSQpe3M9cS5mCnI9bmV3IEEuR2ooQS5XWChzPT1udWxs +PyIiOnMpLHQuZHcpCmlmKHEueiE9PSQpQS5wUigicXVlcnlQYXJhbWV0ZXJzIikKcS5zd2cocikKcD1y +fXJldHVybiBwfSwKZ2t1KCl7cmV0dXJuIHRoaXMuYn0sCmdKZihhKXt2YXIgcz10aGlzLmMKaWYocz09 +bnVsbClyZXR1cm4iIgppZihCLnhCLm4ocywiWyIpKXJldHVybiBCLnhCLk5qKHMsMSxzLmxlbmd0aC0x +KQpyZXR1cm4gc30sCmd0cChhKXt2YXIgcz10aGlzLmQKcmV0dXJuIHM9PW51bGw/QS53Syh0aGlzLmEp +OnN9LApndFAoKXt2YXIgcz10aGlzLmYKcmV0dXJuIHM9PW51bGw/IiI6c30sCmdLYSgpe3ZhciBzPXRo +aXMucgpyZXR1cm4gcz09bnVsbD8iIjpzfSwKaEIoYSl7dmFyIHM9dGhpcy5hCmlmKGEubGVuZ3RoIT09 +cy5sZW5ndGgpcmV0dXJuITEKcmV0dXJuIEEuYlUoYSxzLDApPj0wfSwKbm0oYSxiKXt2YXIgcyxyLHEs +cCxvLG4sbSxsLGssaj10aGlzCnQuYzkuYShiKQpzPWouYQpyPXM9PT0iZmlsZSIKcT1qLmIKcD1qLmQK +bz1qLmMKaWYoIShvIT1udWxsKSlvPXEubGVuZ3RoIT09MHx8cCE9bnVsbHx8cj8iIjpudWxsCm49ai5l +CmlmKCFyKW09byE9bnVsbCYmbi5sZW5ndGghPT0wCmVsc2UgbT0hMAppZihtJiYhQi54Qi5uKG4sIi8i +KSluPSIvIituCmw9bgprPUEubGUobnVsbCwwLDAsYikKcmV0dXJuIEEuQ2cocyxxLG8scCxsLGssai5y +KX0sCkpoKGEsYil7dmFyIHMscixxLHAsbyxuCmZvcihzPTAscj0wO0IueEIuUWkoYiwiLi4vIixyKTsp +e3IrPTM7KytzfXE9Qi54Qi5jbihhLCIvIikKd2hpbGUoITApe2lmKCEocT4wJiZzPjApKWJyZWFrCnA9 +Qi54Qi5QayhhLCIvIixxLTEpCmlmKHA8MClicmVhawpvPXEtcApuPW8hPT0yCmlmKCFufHxvPT09Mylp +ZihCLnhCLk8oYSxwKzEpPT09NDYpbj0hbnx8Qi54Qi5PKGEscCsyKT09PTQ2CmVsc2Ugbj0hMQplbHNl +IG49ITEKaWYobilicmVhazstLXMKcT1wfXJldHVybiBCLnhCLmk3KGEscSsxLG51bGwsQi54Qi55bihi +LHItMypzKSl9LApaSShhKXtyZXR1cm4gdGhpcy5tUyhBLmhLKGEpKX0sCm1TKGEpe3ZhciBzLHIscSxw +LG8sbixtLGwsayxqLGk9dGhpcyxoPW51bGwKaWYoYS5nRmkoKS5sZW5ndGghPT0wKXtzPWEuZ0ZpKCkK +aWYoYS5nY2ooKSl7cj1hLmdrdSgpCnE9YS5nSmYoYSkKcD1hLmd4QSgpP2EuZ3RwKGEpOmh9ZWxzZXtw +PWgKcT1wCnI9IiJ9bz1BLnhlKGEuZ0lpKGEpKQpuPWEuZ1FEKCk/YS5ndFAoKTpofWVsc2V7cz1pLmEK +aWYoYS5nY2ooKSl7cj1hLmdrdSgpCnE9YS5nSmYoYSkKcD1BLndCKGEuZ3hBKCk/YS5ndHAoYSk6aCxz +KQpvPUEueGUoYS5nSWkoYSkpCm49YS5nUUQoKT9hLmd0UCgpOmh9ZWxzZXtyPWkuYgpxPWkuYwpwPWku +ZApvPWkuZQppZihhLmdJaShhKT09PSIiKW49YS5nUUQoKT9hLmd0UCgpOmkuZgplbHNle209QS51aihp +LG8pCmlmKG0+MCl7bD1CLnhCLk5qKG8sMCxtKQpvPWEuZ3RUKCk/bCtBLnhlKGEuZ0lpKGEpKTpsK0Eu +eGUoaS5KaChCLnhCLnluKG8sbC5sZW5ndGgpLGEuZ0lpKGEpKSl9ZWxzZSBpZihhLmd0VCgpKW89QS54 +ZShhLmdJaShhKSkKZWxzZSBpZihvLmxlbmd0aD09PTApaWYocT09bnVsbClvPXMubGVuZ3RoPT09MD9h +LmdJaShhKTpBLnhlKGEuZ0lpKGEpKQplbHNlIG89QS54ZSgiLyIrYS5nSWkoYSkpCmVsc2V7az1pLkpo +KG8sYS5nSWkoYSkpCmo9cy5sZW5ndGg9PT0wCmlmKCFqfHxxIT1udWxsfHxCLnhCLm4obywiLyIpKW89 +QS54ZShrKQplbHNlIG89QS53RihrLCFqfHxxIT1udWxsKX1uPWEuZ1FEKCk/YS5ndFAoKTpofX19cmV0 +dXJuIEEuQ2cocyxyLHEscCxvLG4sYS5nWjgoKT9hLmdLYSgpOmgpfSwKZ2NqKCl7cmV0dXJuIHRoaXMu +YyE9bnVsbH0sCmd4QSgpe3JldHVybiB0aGlzLmQhPW51bGx9LApnUUQoKXtyZXR1cm4gdGhpcy5mIT1u +dWxsfSwKZ1o4KCl7cmV0dXJuIHRoaXMuciE9bnVsbH0sCmd0VCgpe3JldHVybiBCLnhCLm4odGhpcy5l +LCIvIil9LAp0NCgpe3ZhciBzLHI9dGhpcyxxPXIuYQppZihxIT09IiImJnEhPT0iZmlsZSIpdGhyb3cg +QS5iKEEuTDQoIkNhbm5vdCBleHRyYWN0IGEgZmlsZSBwYXRoIGZyb20gYSAiK3ErIiBVUkkiKSkKcT1y +LmYKaWYoKHE9PW51bGw/IiI6cSkhPT0iIil0aHJvdyBBLmIoQS5MNCh1LmkpKQpxPXIucgppZigocT09 +bnVsbD8iIjpxKSE9PSIiKXRocm93IEEuYihBLkw0KHUubCkpCnE9JC53USgpCmlmKHEpcT1BLm1uKHIp +CmVsc2V7aWYoci5jIT1udWxsJiZyLmdKZihyKSE9PSIiKUEudihBLkw0KHUuaikpCnM9ci5nRmooKQpB +LmtFKHMsITEpCnE9QS5sKEIueEIubihyLmUsIi8iKT8iIisiLyI6IiIscywiLyIpCnE9cS5jaGFyQ29k +ZUF0KDApPT0wP3E6cX1yZXR1cm4gcX0sCiJbIihhKXtyZXR1cm4gdGhpcy5nbkQoKX0sCkROKGEsYil7 +dmFyIHMscixxPXRoaXMKaWYoYj09bnVsbClyZXR1cm4hMQppZihxPT09YilyZXR1cm4hMAppZih0LmRE +LmIoYikpaWYocS5hPT09Yi5nRmkoKSlpZihxLmMhPW51bGw9PT1iLmdjaigpKWlmKHEuYj09PWIuZ2t1 +KCkpaWYocS5nSmYocSk9PT1iLmdKZihiKSlpZihxLmd0cChxKT09PWIuZ3RwKGIpKWlmKHEuZT09PWIu +Z0lpKGIpKXtzPXEuZgpyPXM9PW51bGwKaWYoIXI9PT1iLmdRRCgpKXtpZihyKXM9IiIKaWYocz09PWIu +Z3RQKCkpe3M9cS5yCnI9cz09bnVsbAppZighcj09PWIuZ1o4KCkpe2lmKHIpcz0iIgpzPXM9PT1iLmdL +YSgpfWVsc2Ugcz0hMX1lbHNlIHM9ITF9ZWxzZSBzPSExfWVsc2Ugcz0hMQplbHNlIHM9ITEKZWxzZSBz +PSExCmVsc2Ugcz0hMQplbHNlIHM9ITEKZWxzZSBzPSExCmVsc2Ugcz0hMQpyZXR1cm4gc30sCnNrRChh +KXt0aGlzLng9dC5hLmEoYSl9LApzd2coYSl7dGhpcy56PXQuSS5hKGEpfSwKJGlpRDoxLApnRmkoKXty +ZXR1cm4gdGhpcy5hfSwKZ0lpKGEpe3JldHVybiB0aGlzLmV9fQpBLlJaLnByb3RvdHlwZT17CiQxKGEp +e3JldHVybiBBLmVQKEIuWkosQS5uKGEpLEIueE0sITEpfSwKJFM6Mn0KQS5NRS5wcm90b3R5cGU9ewok +MihhLGIpe3ZhciBzPXRoaXMuYixyPXRoaXMuYQpzLmErPXIuYQpyLmE9IiYiCnI9cy5hKz1BLmVQKEIu +RjMsYSxCLnhNLCEwKQppZihiIT1udWxsJiZiLmxlbmd0aCE9PTApe3MuYT1yKyI9IgpzLmErPUEuZVAo +Qi5GMyxiLEIueE0sITApfX0sCiRTOjIyfQpBLnk1LnByb3RvdHlwZT17CiQyKGEsYil7dmFyIHMscgpB +Lm4oYSkKaWYoYj09bnVsbHx8dHlwZW9mIGI9PSJzdHJpbmciKXRoaXMuYS4kMihhLEEuayhiKSkKZWxz +ZSBmb3Iocz1KLklUKHQuay5hKGIpKSxyPXRoaXMuYTtzLkcoKTspci4kMihhLEEubihzLmdsKCkpKX0s +CiRTOjExfQpBLlBFLnByb3RvdHlwZT17CmdsUigpe3ZhciBzLHIscSxwLG89dGhpcyxuPW51bGwsbT1v +LmMKaWYobT09bnVsbCl7bT1vLmIKaWYoMD49bS5sZW5ndGgpcmV0dXJuIEEuT0gobSwwKQpzPW8uYQpt +PW1bMF0rMQpyPUIueEIuWFUocywiPyIsbSkKcT1zLmxlbmd0aAppZihyPj0wKXtwPUEuUEkocyxyKzEs +cSxCLlZDLCExKQpxPXJ9ZWxzZSBwPW4KbT1vLmM9bmV3IEEucWUoImRhdGEiLCIiLG4sbixBLlBJKHMs +bSxxLEIuV2QsITEpLHAsbil9cmV0dXJuIG19LAoiWyIoYSl7dmFyIHMscj10aGlzLmIKaWYoMD49ci5s +ZW5ndGgpcmV0dXJuIEEuT0gociwwKQpzPXRoaXMuYQpyZXR1cm4gclswXT09PS0xPyJkYXRhOiIrczpz +fX0KQS55SS5wcm90b3R5cGU9ewokMihhLGIpe3ZhciBzPXRoaXMuYQppZighKGE8cy5sZW5ndGgpKXJl +dHVybiBBLk9IKHMsYSkKcz1zW2FdCkIuTkEuZHUocywwLDk2LGIpCnJldHVybiBzfSwKJFM6MjN9CkEu +YzYucHJvdG90eXBlPXsKJDMoYSxiLGMpe3ZhciBzLHIscQpmb3Iocz1iLmxlbmd0aCxyPTA7cjxzOysr +cil7cT1CLnhCLlcoYixyKV45NgppZighKHE8OTYpKXJldHVybiBBLk9IKGEscSkKYVtxXT1jfX0sCiRT +OjEyfQpBLnFkLnByb3RvdHlwZT17CiQzKGEsYixjKXt2YXIgcyxyLHEKZm9yKHM9Qi54Qi5XKGIsMCks +cj1CLnhCLlcoYiwxKTtzPD1yOysrcyl7cT0oc145Nik+Pj4wCmlmKCEocTw5NikpcmV0dXJuIEEuT0go +YSxxKQphW3FdPWN9fSwKJFM6MTJ9CkEuVWYucHJvdG90eXBlPXsKZ2NqKCl7cmV0dXJuIHRoaXMuYz4w +fSwKZ3hBKCl7cmV0dXJuIHRoaXMuYz4wJiZ0aGlzLmQrMTx0aGlzLmV9LApnUUQoKXtyZXR1cm4gdGhp +cy5mPHRoaXMucn0sCmdaOCgpe3JldHVybiB0aGlzLnI8dGhpcy5hLmxlbmd0aH0sCmd0VCgpe3JldHVy +biBCLnhCLlFpKHRoaXMuYSwiLyIsdGhpcy5lKX0sCmdGaSgpe3ZhciBzPXRoaXMudwpyZXR1cm4gcz09 +bnVsbD90aGlzLnc9dGhpcy5VMigpOnN9LApVMigpe3ZhciBzLHI9dGhpcyxxPXIuYgppZihxPD0wKXJl +dHVybiIiCnM9cT09PTQKaWYocyYmQi54Qi5uKHIuYSwiaHR0cCIpKXJldHVybiJodHRwIgppZihxPT09 +NSYmQi54Qi5uKHIuYSwiaHR0cHMiKSlyZXR1cm4iaHR0cHMiCmlmKHMmJkIueEIubihyLmEsImZpbGUi +KSlyZXR1cm4iZmlsZSIKaWYocT09PTcmJkIueEIubihyLmEsInBhY2thZ2UiKSlyZXR1cm4icGFja2Fn +ZSIKcmV0dXJuIEIueEIuTmooci5hLDAscSl9LApna3UoKXt2YXIgcz10aGlzLmMscj10aGlzLmIrMwpy +ZXR1cm4gcz5yP0IueEIuTmoodGhpcy5hLHIscy0xKToiIn0sCmdKZihhKXt2YXIgcz10aGlzLmMKcmV0 +dXJuIHM+MD9CLnhCLk5qKHRoaXMuYSxzLHRoaXMuZCk6IiJ9LApndHAoYSl7dmFyIHMscj10aGlzCmlm +KHIuZ3hBKCkpcmV0dXJuIEEuUUEoQi54Qi5OaihyLmEsci5kKzEsci5lKSxudWxsKQpzPXIuYgppZihz +PT09NCYmQi54Qi5uKHIuYSwiaHR0cCIpKXJldHVybiA4MAppZihzPT09NSYmQi54Qi5uKHIuYSwiaHR0 +cHMiKSlyZXR1cm4gNDQzCnJldHVybiAwfSwKZ0lpKGEpe3JldHVybiBCLnhCLk5qKHRoaXMuYSx0aGlz +LmUsdGhpcy5mKX0sCmd0UCgpe3ZhciBzPXRoaXMuZixyPXRoaXMucgpyZXR1cm4gczxyP0IueEIuTmoo +dGhpcy5hLHMrMSxyKToiIn0sCmdLYSgpe3ZhciBzPXRoaXMucixyPXRoaXMuYQpyZXR1cm4gczxyLmxl +bmd0aD9CLnhCLnluKHIscysxKToiIn0sCmdGaigpe3ZhciBzLHIscT10aGlzLmUscD10aGlzLmYsbz10 +aGlzLmEKaWYoQi54Qi5RaShvLCIvIixxKSkrK3EKaWYocT09PXApcmV0dXJuIEIueEQKcz1BLlFJKFtd +LHQucykKZm9yKHI9cTtyPHA7KytyKWlmKEIueEIuTyhvLHIpPT09NDcpe0IuTm0uaShzLEIueEIuTmoo +byxxLHIpKQpxPXIrMX1CLk5tLmkocyxCLnhCLk5qKG8scSxwKSkKcmV0dXJuIEEuQUYocyx0Lk4pfSwK +Z2hZKCl7aWYodGhpcy5mPj10aGlzLnIpcmV0dXJuIEIuQ00KcmV0dXJuIG5ldyBBLkdqKEEuV1godGhp +cy5ndFAoKSksdC5kdyl9LAprWChhKXt2YXIgcz10aGlzLmQrMQpyZXR1cm4gcythLmxlbmd0aD09PXRo +aXMuZSYmQi54Qi5RaSh0aGlzLmEsYSxzKX0sCk45KCl7dmFyIHM9dGhpcyxyPXMucixxPXMuYQppZihy +Pj1xLmxlbmd0aClyZXR1cm4gcwpyZXR1cm4gbmV3IEEuVWYoQi54Qi5OaihxLDAscikscy5iLHMuYyxz +LmQscy5lLHMuZixyLHMudyl9LApubShhLGIpe3ZhciBzLHIscSxwLG8sbixtLGwsayxqLGk9dGhpcyxo +PW51bGwKdC5jOS5hKGIpCnM9aS5nRmkoKQpyPXM9PT0iZmlsZSIKcT1pLmMKcD1xPjA/Qi54Qi5Oaihp +LmEsaS5iKzMscSk6IiIKbz1pLmd4QSgpP2kuZ3RwKGkpOmgKcT1pLmMKaWYocT4wKW49Qi54Qi5Oaihp +LmEscSxpLmQpCmVsc2Ugbj1wLmxlbmd0aCE9PTB8fG8hPW51bGx8fHI/IiI6aApxPWkuYQptPUIueEIu +TmoocSxpLmUsaS5mKQppZighcilsPW4hPW51bGwmJm0ubGVuZ3RoIT09MAplbHNlIGw9ITAKaWYobCYm +IUIueEIubihtLCIvIikpbT0iLyIrbQprPUEubGUoaCwwLDAsYikKbD1pLnIKaj1sPHEubGVuZ3RoP0Iu +eEIueW4ocSxsKzEpOmgKcmV0dXJuIEEuQ2cocyxwLG4sbyxtLGssail9LApaSShhKXtyZXR1cm4gdGhp +cy5tUyhBLmhLKGEpKX0sCm1TKGEpe2lmKGEgaW5zdGFuY2VvZiBBLlVmKXJldHVybiB0aGlzLnUxKHRo +aXMsYSkKcmV0dXJuIHRoaXMuUmUoKS5tUyhhKX0sCnUxKGEsYil7dmFyIHMscixxLHAsbyxuLG0sbCxr +LGosaSxoLGcsZixlLGQsYz1iLmIKaWYoYz4wKXJldHVybiBiCnM9Yi5jCmlmKHM+MCl7cj1hLmIKaWYo +cjw9MClyZXR1cm4gYgpxPXI9PT00CmlmKHEmJkIueEIubihhLmEsImZpbGUiKSlwPWIuZSE9PWIuZgpl +bHNlIGlmKHEmJkIueEIubihhLmEsImh0dHAiKSlwPSFiLmtYKCI4MCIpCmVsc2UgcD0hKHI9PT01JiZC +LnhCLm4oYS5hLCJodHRwcyIpKXx8IWIua1goIjQ0MyIpCmlmKHApe289cisxCnJldHVybiBuZXcgQS5V +ZihCLnhCLk5qKGEuYSwwLG8pK0IueEIueW4oYi5hLGMrMSkscixzK28sYi5kK28sYi5lK28sYi5mK28s +Yi5yK28sYS53KX1lbHNlIHJldHVybiB0aGlzLlJlKCkubVMoYil9bj1iLmUKYz1iLmYKaWYobj09PWMp +e3M9Yi5yCmlmKGM8cyl7cj1hLmYKbz1yLWMKcmV0dXJuIG5ldyBBLlVmKEIueEIuTmooYS5hLDAscikr +Qi54Qi55bihiLmEsYyksYS5iLGEuYyxhLmQsYS5lLGMrbyxzK28sYS53KX1jPWIuYQppZihzPGMubGVu +Z3RoKXtyPWEucgpyZXR1cm4gbmV3IEEuVWYoQi54Qi5OaihhLmEsMCxyKStCLnhCLnluKGMscyksYS5i +LGEuYyxhLmQsYS5lLGEuZixzKyhyLXMpLGEudyl9cmV0dXJuIGEuTjkoKX1zPWIuYQppZihCLnhCLlFp +KHMsIi8iLG4pKXttPWEuZQpsPUEuUngodGhpcykKaz1sPjA/bDptCm89ay1uCnJldHVybiBuZXcgQS5V +ZihCLnhCLk5qKGEuYSwwLGspK0IueEIueW4ocyxuKSxhLmIsYS5jLGEuZCxtLGMrbyxiLnIrbyxhLncp +fWo9YS5lCmk9YS5mCmlmKGo9PT1pJiZhLmM+MCl7Zm9yKDtCLnhCLlFpKHMsIi4uLyIsbik7KW4rPTMK +bz1qLW4rMQpyZXR1cm4gbmV3IEEuVWYoQi54Qi5OaihhLmEsMCxqKSsiLyIrQi54Qi55bihzLG4pLGEu +YixhLmMsYS5kLGosYytvLGIucitvLGEudyl9aD1hLmEKbD1BLlJ4KHRoaXMpCmlmKGw+PTApZz1sCmVs +c2UgZm9yKGc9ajtCLnhCLlFpKGgsIi4uLyIsZyk7KWcrPTMKZj0wCndoaWxlKCEwKXtlPW4rMwppZigh +KGU8PWMmJkIueEIuUWkocywiLi4vIixuKSkpYnJlYWs7KytmCm49ZX1mb3IoZD0iIjtpPmc7KXstLWkK +aWYoQi54Qi5PKGgsaSk9PT00Nyl7aWYoZj09PTApe2Q9Ii8iCmJyZWFrfS0tZgpkPSIvIn19aWYoaT09 +PWcmJmEuYjw9MCYmIUIueEIuUWkoaCwiLyIsaikpe24tPWYqMwpkPSIifW89aS1uK2QubGVuZ3RoCnJl +dHVybiBuZXcgQS5VZihCLnhCLk5qKGgsMCxpKStkK0IueEIueW4ocyxuKSxhLmIsYS5jLGEuZCxqLGMr +byxiLnIrbyxhLncpfSwKdDQoKXt2YXIgcyxyLHE9dGhpcyxwPXEuYgppZihwPj0wKXtzPSEocD09PTQm +JkIueEIubihxLmEsImZpbGUiKSkKcD1zfWVsc2UgcD0hMQppZihwKXRocm93IEEuYihBLkw0KCJDYW5u +b3QgZXh0cmFjdCBhIGZpbGUgcGF0aCBmcm9tIGEgIitxLmdGaSgpKyIgVVJJIikpCnA9cS5mCnM9cS5h +CmlmKHA8cy5sZW5ndGgpe2lmKHA8cS5yKXRocm93IEEuYihBLkw0KHUuaSkpCnRocm93IEEuYihBLkw0 +KHUubCkpfXI9JC53USgpCmlmKHIpcD1BLm1uKHEpCmVsc2V7aWYocS5jPHEuZClBLnYoQS5MNCh1Lmop +KQpwPUIueEIuTmoocyxxLmUscCl9cmV0dXJuIHB9LApnbShhKXt2YXIgcz10aGlzLngKcmV0dXJuIHM9 +PW51bGw/dGhpcy54PUIueEIuZ20odGhpcy5hKTpzfSwKRE4oYSxiKXtpZihiPT1udWxsKXJldHVybiEx +CmlmKHRoaXM9PT1iKXJldHVybiEwCnJldHVybiB0LmRELmIoYikmJnRoaXMuYT09PWJbIlsiXSgwKX0s +ClJlKCl7dmFyIHM9dGhpcyxyPW51bGwscT1zLmdGaSgpLHA9cy5na3UoKSxvPXMuYz4wP3MuZ0pmKHMp +OnIsbj1zLmd4QSgpP3MuZ3RwKHMpOnIsbT1zLmEsbD1zLmYsaz1CLnhCLk5qKG0scy5lLGwpLGo9cy5y +Cmw9bDxqP3MuZ3RQKCk6cgpyZXR1cm4gQS5DZyhxLHAsbyxuLGssbCxqPG0ubGVuZ3RoP3MuZ0thKCk6 +cil9LAoiWyIoYSl7cmV0dXJuIHRoaXMuYX0sCiRpaUQ6MX0KQS5xZS5wcm90b3R5cGU9e30KQS5xRS5w +cm90b3R5cGU9e30KQS5HaC5wcm90b3R5cGU9ewpzTFUoYSxiKXthLmhyZWY9Yn0sCiJbIihhKXtyZXR1 +cm4gU3RyaW5nKGEpfSwKJGlHaDoxfQpBLmZZLnByb3RvdHlwZT17CiJbIihhKXtyZXR1cm4gU3RyaW5n +KGEpfX0KQS5yWi5wcm90b3R5cGU9eyRpclo6MX0KQS5Bei5wcm90b3R5cGU9eyRpQXo6MX0KQS5RUC5w +cm90b3R5cGU9eyRpUVA6MX0KQS5ueC5wcm90b3R5cGU9ewpnayhhKXtyZXR1cm4gYS5sZW5ndGh9fQpB +Lm9KLnByb3RvdHlwZT17CmdrKGEpe3JldHVybiBhLmxlbmd0aH19CkEuaWQucHJvdG90eXBlPXt9CkEu +UUYucHJvdG90eXBlPXt9CkEuTmgucHJvdG90eXBlPXsKIlsiKGEpe3JldHVybiBTdHJpbmcoYSl9fQpB +LmFlLnByb3RvdHlwZT17CkRjKGEsYil7cmV0dXJuIGEuY3JlYXRlSFRNTERvY3VtZW50KGIpfX0KQS5J +Qi5wcm90b3R5cGU9ewoiWyIoYSl7dmFyIHMscixxLHA9YS5sZWZ0CnAudG9TdHJpbmcKcz1hLnRvcApz +LnRvU3RyaW5nCnI9YS53aWR0aApyLnRvU3RyaW5nCnE9YS5oZWlnaHQKcS50b1N0cmluZwpyZXR1cm4i +UmVjdGFuZ2xlICgiK0EuRWoocCkrIiwgIitBLkVqKHMpKyIpICIrQS5FaihyKSsiIHggIitBLkVqKHEp +fSwKRE4oYSxiKXt2YXIgcyxyCmlmKGI9PW51bGwpcmV0dXJuITEKaWYodC5xLmIoYikpe3M9YS5sZWZ0 +CnMudG9TdHJpbmcKcj1iLmxlZnQKci50b1N0cmluZwppZihzPT09cil7cz1hLnRvcApzLnRvU3RyaW5n +CnI9Yi50b3AKci50b1N0cmluZwppZihzPT09cil7cz1hLndpZHRoCnMudG9TdHJpbmcKcj1iLndpZHRo +CnIudG9TdHJpbmcKaWYocz09PXIpe3M9YS5oZWlnaHQKcy50b1N0cmluZwpyPWIuaGVpZ2h0CnIudG9T +dHJpbmcKcj1zPT09cgpzPXJ9ZWxzZSBzPSExfWVsc2Ugcz0hMX1lbHNlIHM9ITF9ZWxzZSBzPSExCnJl +dHVybiBzfSwKZ20oYSl7dmFyIHMscixxLHA9YS5sZWZ0CnAudG9TdHJpbmcKcz1hLnRvcApzLnRvU3Ry +aW5nCnI9YS53aWR0aApyLnRvU3RyaW5nCnE9YS5oZWlnaHQKcS50b1N0cmluZwpyZXR1cm4gQS5mNShw +LHMscixxKX0sCiRpdG46MX0KQS5uNy5wcm90b3R5cGU9ewpnayhhKXtyZXR1cm4gYS5sZW5ndGh9fQpB +Lnd6LnByb3RvdHlwZT17CmdrKGEpe3JldHVybiB0aGlzLmEubGVuZ3RofSwKcShhLGIpe3ZhciBzCkEu +SVooYikKcz10aGlzLmEKaWYoIShiPj0wJiZiPHMubGVuZ3RoKSlyZXR1cm4gQS5PSChzLGIpCnJldHVy +biB0aGlzLiR0aS5jLmEoc1tiXSl9LApZNShhLGIsYyl7dGhpcy4kdGkuYy5hKGMpCnRocm93IEEuYihB +Lkw0KCJDYW5ub3QgbW9kaWZ5IGxpc3QiKSl9fQpBLmN2LnByb3RvdHlwZT17CmdRZyhhKXtyZXR1cm4g +bmV3IEEuaTcoYSl9LApnUChhKXtyZXR1cm4gbmV3IEEuSTQoYSl9LApzUChhLGIpe3ZhciBzCnQuTy5h +KGIpCnM9dGhpcy5nUChhKQpzLlYxKDApCnMuRlYoMCxiKX0sCiJbIihhKXtyZXR1cm4gYS5sb2NhbE5h +bWV9LApGRihhKXt2YXIgcz0hIWEuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZAppZihzKWEuc2Nyb2xsSW50 +b1ZpZXdJZk5lZWRlZCgpCmVsc2UgYS5zY3JvbGxJbnRvVmlldygpfSwKbnooYSxiLGMsZCxlKXt2YXIg +cyxyPXRoaXMucjYoYSxjLGQsZSkKc3dpdGNoKGIudG9Mb3dlckNhc2UoKSl7Y2FzZSJiZWZvcmViZWdp +biI6cz1hLnBhcmVudE5vZGUKcy50b1N0cmluZwpKLkVoKHMscixhKQpicmVhawpjYXNlImFmdGVyYmVn +aW4iOnM9YS5jaGlsZE5vZGVzCnRoaXMubUsoYSxyLHMubGVuZ3RoPjA/c1swXTpudWxsKQpicmVhawpj +YXNlImJlZm9yZWVuZCI6YS5hcHBlbmRDaGlsZChyKQpicmVhawpjYXNlImFmdGVyZW5kIjpzPWEucGFy +ZW50Tm9kZQpzLnRvU3RyaW5nCkouRWgocyxyLGEubmV4dFNpYmxpbmcpCmJyZWFrCmRlZmF1bHQ6QS52 +KEEueFkoIkludmFsaWQgcG9zaXRpb24gIitiLG51bGwpKX19LApyNihhLGIsYyxkKXt2YXIgcyxyLHEs +cAppZihjPT1udWxsKXtpZihkPT1udWxsKXtzPSQubHQKaWYocz09bnVsbCl7cz1BLlFJKFtdLHQuRCkK +cj1uZXcgQS52RChzKQpCLk5tLmkocyxBLlR3KG51bGwpKQpCLk5tLmkocyxBLkJsKCkpCiQubHQ9cgpk +PXJ9ZWxzZSBkPXN9cz0kLkVVCmlmKHM9PW51bGwpe3M9bmV3IEEuS28oZCkKJC5FVT1zCmM9c31lbHNl +e3MuYT1kCmM9c319ZWxzZSBpZihkIT1udWxsKXRocm93IEEuYihBLnhZKCJ2YWxpZGF0b3IgY2FuIG9u +bHkgYmUgcGFzc2VkIGlmIHRyZWVTYW5pdGl6ZXIgaXMgbnVsbCIsbnVsbCkpCmlmKCQueG89PW51bGwp +e3M9ZG9jdW1lbnQKcj1zLmltcGxlbWVudGF0aW9uCnIudG9TdHJpbmcKcj1CLm1ILkRjKHIsIiIpCiQu +eG89cgokLkJPPXIuY3JlYXRlUmFuZ2UoKQpyPSQueG8uY3JlYXRlRWxlbWVudCgiYmFzZSIpCnQuY1Iu +YShyKQpzPXMuYmFzZVVSSQpzLnRvU3RyaW5nCnIuaHJlZj1zCiQueG8uaGVhZC5hcHBlbmRDaGlsZChy +KX1zPSQueG8KaWYocy5ib2R5PT1udWxsKXtyPXMuY3JlYXRlRWxlbWVudCgiYm9keSIpCkIuQlouc0dT +KHMsdC5yLmEocikpfXM9JC54bwppZih0LnIuYihhKSl7cz1zLmJvZHkKcy50b1N0cmluZwpxPXN9ZWxz +ZXtzLnRvU3RyaW5nCnE9cy5jcmVhdGVFbGVtZW50KGEudGFnTmFtZSkKJC54by5ib2R5LmFwcGVuZENo +aWxkKHEpfWlmKCJjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQiIGluIHdpbmRvdy5SYW5nZS5wcm90b3R5 +cGUmJiFCLk5tLnRnKEIuU3EsYS50YWdOYW1lKSl7JC5CTy5zZWxlY3ROb2RlQ29udGVudHMocSkKcz0k +LkJPCnMudG9TdHJpbmcKcD1zLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChiPT1udWxsPyJudWxsIjpi +KX1lbHNle0oud2YocSxiKQpwPSQueG8uY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCmZvcig7cz1xLmZp +cnN0Q2hpbGQscyE9bnVsbDspcC5hcHBlbmRDaGlsZChzKX1pZihxIT09JC54by5ib2R5KUouTHQocSkK +Yy5QbihwKQpkb2N1bWVudC5hZG9wdE5vZGUocCkKcmV0dXJuIHB9LApBSChhLGIsYyl7cmV0dXJuIHRo +aXMucjYoYSxiLGMsbnVsbCl9LApzaGYoYSxiKXt0aGlzLllDKGEsYil9LApwayhhLGIsYyl7dGhpcy5z +YTQoYSxudWxsKQphLmFwcGVuZENoaWxkKHRoaXMucjYoYSxiLG51bGwsYykpfSwKWUMoYSxiKXtyZXR1 +cm4gdGhpcy5wayhhLGIsbnVsbCl9LApzUk4oYSxiKXthLmlubmVySFRNTD1ifSwKZ25zKGEpe3JldHVy +biBhLnRhZ05hbWV9LApnVmwoYSl7cmV0dXJuIG5ldyBBLkNxKGEsImNsaWNrIiwhMSx0LlEpfSwKJGlj +djoxfQpBLkN2LnByb3RvdHlwZT17CiQxKGEpe3JldHVybiB0LmguYih0LkEuYShhKSl9LAokUzoyNX0K +QS5lYS5wcm90b3R5cGU9eyRpZWE6MX0KQS5EMC5wcm90b3R5cGU9ewpPbihhLGIsYyxkKXt0LmJ3LmEo +YykKaWYoYyE9bnVsbCl0aGlzLnYoYSxiLGMsZCl9LApCKGEsYixjKXtyZXR1cm4gdGhpcy5PbihhLGIs +YyxudWxsKX0sCnYoYSxiLGMsZCl7cmV0dXJuIGEuYWRkRXZlbnRMaXN0ZW5lcihiLEEudFIodC5idy5h +KGMpLDEpLGQpfSwKJGlEMDoxfQpBLmhILnByb3RvdHlwZT17JGloSDoxfQpBLmg0LnByb3RvdHlwZT17 +CmdrKGEpe3JldHVybiBhLmxlbmd0aH19CkEuYnIucHJvdG90eXBlPXsKZ2soYSl7cmV0dXJuIGEubGVu +Z3RofX0KQS5WYi5wcm90b3R5cGU9ewpzR1MoYSxiKXthLmJvZHk9Yn19CkEuZkoucHJvdG90eXBlPXsK +ZW8oYSxiLGMsZCl7cmV0dXJuIGEub3BlbihiLGMsITApfSwKJGlmSjoxfQpBLndhLnByb3RvdHlwZT17 +fQpBLlNnLnByb3RvdHlwZT17JGlTZzoxfQpBLnU4LnByb3RvdHlwZT17CmdEcihhKXtpZigib3JpZ2lu +IiBpbiBhKXJldHVybiBhLm9yaWdpbgpyZXR1cm4gYS5wcm90b2NvbCsiLy8iK2EuaG9zdH0sCiJbIihh +KXtyZXR1cm4gU3RyaW5nKGEpfSwKJGl1ODoxfQpBLkFqLnByb3RvdHlwZT17JGlBajoxfQpBLmU3LnBy +b3RvdHlwZT17CmdyOChhKXt2YXIgcz10aGlzLmEscj1zLmNoaWxkTm9kZXMubGVuZ3RoCmlmKHI9PT0w +KXRocm93IEEuYihBLlBWKCJObyBlbGVtZW50cyIpKQppZihyPjEpdGhyb3cgQS5iKEEuUFYoIk1vcmUg +dGhhbiBvbmUgZWxlbWVudCIpKQpzPXMuZmlyc3RDaGlsZApzLnRvU3RyaW5nCnJldHVybiBzfSwKRlYo +YSxiKXt2YXIgcyxyLHEscCxvCnQuZWguYShiKQppZihiIGluc3RhbmNlb2YgQS5lNyl7cz1iLmEKcj10 +aGlzLmEKaWYocyE9PXIpZm9yKHE9cy5jaGlsZE5vZGVzLmxlbmd0aCxwPTA7cDxxOysrcCl7bz1zLmZp +cnN0Q2hpbGQKby50b1N0cmluZwpyLmFwcGVuZENoaWxkKG8pfXJldHVybn1mb3Iocz1iLmdBKGIpLHI9 +dGhpcy5hO3MuRygpOylyLmFwcGVuZENoaWxkKHMuZ2woKSl9LApZNShhLGIsYyl7dmFyIHMscgp0LkEu +YShjKQpzPXRoaXMuYQpyPXMuY2hpbGROb2RlcwppZighKGI+PTAmJmI8ci5sZW5ndGgpKXJldHVybiBB +Lk9IKHIsYikKcy5yZXBsYWNlQ2hpbGQoYyxyW2JdKX0sCmdBKGEpe3ZhciBzPXRoaXMuYS5jaGlsZE5v +ZGVzCnJldHVybiBuZXcgQS5XOShzLHMubGVuZ3RoLEEueksocykuQygiVzk8R20uRT4iKSl9LApnayhh +KXtyZXR1cm4gdGhpcy5hLmNoaWxkTm9kZXMubGVuZ3RofSwKcShhLGIpe3ZhciBzCkEuSVooYikKcz10 +aGlzLmEuY2hpbGROb2RlcwppZighKGI+PTAmJmI8cy5sZW5ndGgpKXJldHVybiBBLk9IKHMsYikKcmV0 +dXJuIHNbYl19fQpBLktWLnByb3RvdHlwZT17CnpCKGEpe3ZhciBzPWEucGFyZW50Tm9kZQppZihzIT1u +dWxsKXMucmVtb3ZlQ2hpbGQoYSl9LApENChhKXt2YXIgcwpmb3IoO3M9YS5maXJzdENoaWxkLHMhPW51 +bGw7KWEucmVtb3ZlQ2hpbGQocyl9LAoiWyIoYSl7dmFyIHM9YS5ub2RlVmFsdWUKcmV0dXJuIHM9PW51 +bGw/dGhpcy5VKGEpOnN9LApzYTQoYSxiKXthLnRleHRDb250ZW50PWJ9LAptSyhhLGIsYyl7cmV0dXJu +IGEuaW5zZXJ0QmVmb3JlKGIsYyl9LAokaUtWOjF9CkEuQkgucHJvdG90eXBlPXsKZ2soYSl7cmV0dXJu +IGEubGVuZ3RofSwKcShhLGIpe0EuSVooYikKaWYoYj4+PjAhPT1ifHxiPj1hLmxlbmd0aCl0aHJvdyBB +LmIoQS5DZihiLGEsbnVsbCxudWxsLG51bGwpKQpyZXR1cm4gYVtiXX0sClk1KGEsYixjKXt0LkEuYShj +KQp0aHJvdyBBLmIoQS5MNCgiQ2Fubm90IGFzc2lnbiBlbGVtZW50IG9mIGltbXV0YWJsZSBMaXN0LiIp +KX0sCmd0SChhKXtpZihhLmxlbmd0aD4wKXJldHVybiBhWzBdCnRocm93IEEuYihBLlBWKCJObyBlbGVt +ZW50cyIpKX0sCkUoYSxiKXtpZighKGI+PTAmJmI8YS5sZW5ndGgpKXJldHVybiBBLk9IKGEsYikKcmV0 +dXJuIGFbYl19LAokaWJROjEsCiRpWGo6MSwKJGljWDoxLAokaXpNOjF9CkEuU04ucHJvdG90eXBlPXt9 +CkEuZXcucHJvdG90eXBlPXskaWV3OjF9CkEubHAucHJvdG90eXBlPXsKZ2soYSl7cmV0dXJuIGEubGVu +Z3RofX0KQS5UYi5wcm90b3R5cGU9ewpyNihhLGIsYyxkKXt2YXIgcyxyCmlmKCJjcmVhdGVDb250ZXh0 +dWFsRnJhZ21lbnQiIGluIHdpbmRvdy5SYW5nZS5wcm90b3R5cGUpcmV0dXJuIHRoaXMuRFcoYSxiLGMs +ZCkKcz1BLlU5KCI8dGFibGU+IitBLkVqKGIpKyI8L3RhYmxlPiIsYyxkKQpyPWRvY3VtZW50LmNyZWF0 +ZURvY3VtZW50RnJhZ21lbnQoKQpuZXcgQS5lNyhyKS5GVigwLG5ldyBBLmU3KHMpKQpyZXR1cm4gcn19 +CkEuSXYucHJvdG90eXBlPXsKcjYoYSxiLGMsZCl7dmFyIHMscgppZigiY3JlYXRlQ29udGV4dHVhbEZy +YWdtZW50IiBpbiB3aW5kb3cuUmFuZ2UucHJvdG90eXBlKXJldHVybiB0aGlzLkRXKGEsYixjLGQpCnM9 +ZG9jdW1lbnQKcj1zLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQpzPW5ldyBBLmU3KEIuSWUucjYocy5j +cmVhdGVFbGVtZW50KCJ0YWJsZSIpLGIsYyxkKSkKcz1uZXcgQS5lNyhzLmdyOChzKSkKbmV3IEEuZTco +cikuRlYoMCxuZXcgQS5lNyhzLmdyOChzKSkpCnJldHVybiByfX0KQS5XUC5wcm90b3R5cGU9ewpyNihh +LGIsYyxkKXt2YXIgcyxyCmlmKCJjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQiIGluIHdpbmRvdy5SYW5n +ZS5wcm90b3R5cGUpcmV0dXJuIHRoaXMuRFcoYSxiLGMsZCkKcz1kb2N1bWVudApyPXMuY3JlYXRlRG9j +dW1lbnRGcmFnbWVudCgpCnM9bmV3IEEuZTcoQi5JZS5yNihzLmNyZWF0ZUVsZW1lbnQoInRhYmxlIiks +YixjLGQpKQpuZXcgQS5lNyhyKS5GVigwLG5ldyBBLmU3KHMuZ3I4KHMpKSkKcmV0dXJuIHJ9fQpBLnlZ +LnByb3RvdHlwZT17CnBrKGEsYixjKXt2YXIgcyxyCnRoaXMuc2E0KGEsbnVsbCkKcz1hLmNvbnRlbnQK +cy50b1N0cmluZwpKLmJUKHMpCnI9dGhpcy5yNihhLGIsbnVsbCxjKQphLmNvbnRlbnQuYXBwZW5kQ2hp +bGQocil9LApZQyhhLGIpe3JldHVybiB0aGlzLnBrKGEsYixudWxsKX0sCiRpeVk6MX0KQS53Ni5wcm90 +b3R5cGU9e30KQS5LNS5wcm90b3R5cGU9ewpQbyhhLGIsYyl7dmFyIHM9QS5QMShhLm9wZW4oYixjKSkK +cmV0dXJuIHN9LApnbVcoYSl7cmV0dXJuIHQuRi5hKGEubG9jYXRpb24pfSwKdXMoYSxiKXtyZXR1cm4g +YS5jb25maXJtKGIpfSwKJGlLNToxLAokaXY2OjF9CkEuQ20ucHJvdG90eXBlPXskaUNtOjF9CkEuQ1Eu +cHJvdG90eXBlPXskaUNROjF9CkEudzQucHJvdG90eXBlPXsKIlsiKGEpe3ZhciBzLHIscSxwPWEubGVm +dApwLnRvU3RyaW5nCnM9YS50b3AKcy50b1N0cmluZwpyPWEud2lkdGgKci50b1N0cmluZwpxPWEuaGVp +Z2h0CnEudG9TdHJpbmcKcmV0dXJuIlJlY3RhbmdsZSAoIitBLkVqKHApKyIsICIrQS5FaihzKSsiKSAi +K0EuRWoocikrIiB4ICIrQS5FaihxKX0sCkROKGEsYil7dmFyIHMscgppZihiPT1udWxsKXJldHVybiEx +CmlmKHQucS5iKGIpKXtzPWEubGVmdApzLnRvU3RyaW5nCnI9Yi5sZWZ0CnIudG9TdHJpbmcKaWYocz09 +PXIpe3M9YS50b3AKcy50b1N0cmluZwpyPWIudG9wCnIudG9TdHJpbmcKaWYocz09PXIpe3M9YS53aWR0 +aApzLnRvU3RyaW5nCnI9Yi53aWR0aApyLnRvU3RyaW5nCmlmKHM9PT1yKXtzPWEuaGVpZ2h0CnMudG9T +dHJpbmcKcj1iLmhlaWdodApyLnRvU3RyaW5nCnI9cz09PXIKcz1yfWVsc2Ugcz0hMX1lbHNlIHM9ITF9 +ZWxzZSBzPSExfWVsc2Ugcz0hMQpyZXR1cm4gc30sCmdtKGEpe3ZhciBzLHIscSxwPWEubGVmdApwLnRv +U3RyaW5nCnM9YS50b3AKcy50b1N0cmluZwpyPWEud2lkdGgKci50b1N0cmluZwpxPWEuaGVpZ2h0CnEu +dG9TdHJpbmcKcmV0dXJuIEEuZjUocCxzLHIscSl9fQpBLnJoLnByb3RvdHlwZT17CmdrKGEpe3JldHVy +biBhLmxlbmd0aH0sCnEoYSxiKXtBLklaKGIpCmlmKGI+Pj4wIT09Ynx8Yj49YS5sZW5ndGgpdGhyb3cg +QS5iKEEuQ2YoYixhLG51bGwsbnVsbCxudWxsKSkKcmV0dXJuIGFbYl19LApZNShhLGIsYyl7dC5BLmEo +YykKdGhyb3cgQS5iKEEuTDQoIkNhbm5vdCBhc3NpZ24gZWxlbWVudCBvZiBpbW11dGFibGUgTGlzdC4i +KSl9LApFKGEsYil7aWYoIShiPj0wJiZiPGEubGVuZ3RoKSlyZXR1cm4gQS5PSChhLGIpCnJldHVybiBh +W2JdfSwKJGliUToxLAokaVhqOjEsCiRpY1g6MSwKJGl6TToxfQpBLmNmLnByb3RvdHlwZT17CksoYSxi +KXt2YXIgcyxyLHEscCxvLG4KdC5lQS5hKGIpCmZvcihzPXRoaXMuZ3ZjKCkscj1zLmxlbmd0aCxxPXRo +aXMuYSxwPTA7cDxzLmxlbmd0aDtzLmxlbmd0aD09PXJ8fCgwLEEubGspKHMpLCsrcCl7bz1zW3BdCm49 +cS5nZXRBdHRyaWJ1dGUobykKYi4kMihvLG49PW51bGw/QS5uKG4pOm4pfX0sCmd2Yygpe3ZhciBzLHIs +cSxwLG8sbixtPXRoaXMuYS5hdHRyaWJ1dGVzCm0udG9TdHJpbmcKcz1BLlFJKFtdLHQucykKZm9yKHI9 +bS5sZW5ndGgscT10Lmg5LHA9MDtwPHI7KytwKXtpZighKHA8bS5sZW5ndGgpKXJldHVybiBBLk9IKG0s +cCkKbz1xLmEobVtwXSkKaWYoby5uYW1lc3BhY2VVUkk9PW51bGwpe249by5uYW1lCm4udG9TdHJpbmcK +Qi5ObS5pKHMsbil9fXJldHVybiBzfSwKZ2wwKGEpe3JldHVybiB0aGlzLmd2YygpLmxlbmd0aD09PTB9 +fQpBLmk3LnByb3RvdHlwZT17Cng0KGEpe3ZhciBzPXRoaXMuYS5oYXNBdHRyaWJ1dGUoYSkKcmV0dXJu +IHN9LApxKGEsYil7cmV0dXJuIHRoaXMuYS5nZXRBdHRyaWJ1dGUoQS5uKGIpKX0sClk1KGEsYixjKXt0 +aGlzLmEuc2V0QXR0cmlidXRlKGIsYyl9LApnayhhKXtyZXR1cm4gdGhpcy5ndmMoKS5sZW5ndGh9fQpB +LlN5LnByb3RvdHlwZT17Cng0KGEpe3ZhciBzPXRoaXMuYS5hLmhhc0F0dHJpYnV0ZSgiZGF0YS0iK3Ro +aXMuT1UoYSkpCnJldHVybiBzfSwKcShhLGIpe3JldHVybiB0aGlzLmEuYS5nZXRBdHRyaWJ1dGUoImRh +dGEtIit0aGlzLk9VKEEubihiKSkpfSwKWTUoYSxiLGMpe3RoaXMuYS5hLnNldEF0dHJpYnV0ZSgiZGF0 +YS0iK3RoaXMuT1UoYiksYyl9LApLKGEsYil7dGhpcy5hLksoMCxuZXcgQS5LUyh0aGlzLHQuZUEuYShi +KSkpfSwKZ3ZjKCl7dmFyIHM9QS5RSShbXSx0LnMpCnRoaXMuYS5LKDAsbmV3IEEuQTModGhpcyxzKSkK +cmV0dXJuIHN9LApnayhhKXtyZXR1cm4gdGhpcy5ndmMoKS5sZW5ndGh9LApnbDAoYSl7cmV0dXJuIHRo +aXMuZ3ZjKCkubGVuZ3RoPT09MH0sCnhxKGEpe3ZhciBzLHIscT1BLlFJKGEuc3BsaXQoIi0iKSx0LnMp +CmZvcihzPTE7czxxLmxlbmd0aDsrK3Mpe3I9cVtzXQppZihyLmxlbmd0aD4wKUIuTm0uWTUocSxzLHJb +MF0udG9VcHBlckNhc2UoKStCLnhCLnluKHIsMSkpfXJldHVybiBCLk5tLkgocSwiIil9LApPVShhKXt2 +YXIgcyxyLHEscCxvCmZvcihzPWEubGVuZ3RoLHI9MCxxPSIiO3I8czsrK3Ipe3A9YVtyXQpvPXAudG9M +b3dlckNhc2UoKQpxPShwIT09byYmcj4wP3ErIi0iOnEpK299cmV0dXJuIHEuY2hhckNvZGVBdCgwKT09 +MD9xOnF9fQpBLktTLnByb3RvdHlwZT17CiQyKGEsYil7aWYoQi54Qi5uKGEsImRhdGEtIikpdGhpcy5i +LiQyKHRoaXMuYS54cShCLnhCLnluKGEsNSkpLGIpfSwKJFM6MTN9CkEuQTMucHJvdG90eXBlPXsKJDIo +YSxiKXtpZihCLnhCLm4oYSwiZGF0YS0iKSlCLk5tLmkodGhpcy5iLHRoaXMuYS54cShCLnhCLnluKGEs +NSkpKX0sCiRTOjEzfQpBLkk0LnByb3RvdHlwZT17CkQoKXt2YXIgcyxyLHEscCxvPUEuTHModC5OKQpm +b3Iocz10aGlzLmEuY2xhc3NOYW1lLnNwbGl0KCIgIikscj1zLmxlbmd0aCxxPTA7cTxyOysrcSl7cD1K +LlQwKHNbcV0pCmlmKHAubGVuZ3RoIT09MClvLmkoMCxwKX1yZXR1cm4gb30sClgoYSl7dGhpcy5hLmNs +YXNzTmFtZT10LkMuYShhKS5IKDAsIiAiKX0sCmdrKGEpe3JldHVybiB0aGlzLmEuY2xhc3NMaXN0Lmxl +bmd0aH0sCmdsMChhKXtyZXR1cm4gdGhpcy5hLmNsYXNzTGlzdC5sZW5ndGg9PT0wfSwKZ29yKGEpe3Jl +dHVybiB0aGlzLmEuY2xhc3NMaXN0Lmxlbmd0aCE9PTB9LApWMShhKXt0aGlzLmEuY2xhc3NOYW1lPSIi +fSwKdGcoYSxiKXt2YXIgcz10aGlzLmEuY2xhc3NMaXN0LmNvbnRhaW5zKGIpCnJldHVybiBzfSwKaShh +LGIpe3ZhciBzLHIKQS5uKGIpCnM9dGhpcy5hLmNsYXNzTGlzdApyPXMuY29udGFpbnMoYikKcy5hZGQo +YikKcmV0dXJuIXJ9LApSKGEsYil7dmFyIHMscixxCmlmKHR5cGVvZiBiPT0ic3RyaW5nIil7cz10aGlz +LmEuY2xhc3NMaXN0CnI9cy5jb250YWlucyhiKQpzLnJlbW92ZShiKQpxPXJ9ZWxzZSBxPSExCnJldHVy +biBxfSwKRlYoYSxiKXtBLlROKHRoaXMuYSx0Lk8uYShiKSl9fQpBLkZrLnByb3RvdHlwZT17fQpBLlJP +LnByb3RvdHlwZT17fQpBLkNxLnByb3RvdHlwZT17fQpBLnhDLnByb3RvdHlwZT17fQpBLnZOLnByb3Rv +dHlwZT17CiQxKGEpe3JldHVybiB0aGlzLmEuJDEodC5CLmEoYSkpfSwKJFM6Mjd9CkEuSlEucHJvdG90 +eXBlPXsKQ1koYSl7dmFyIHMKaWYoJC5vci5hPT09MCl7Zm9yKHM9MDtzPDI2MjsrK3MpJC5vci5ZNSgw +LEIuY21bc10sQS5wUygpKQpmb3Iocz0wO3M8MTI7KytzKSQub3IuWTUoMCxCLkJJW3NdLEEuVjQoKSl9 +fSwKaTAoYSl7cmV0dXJuICQuQU4oKS50ZygwLEEuclMoYSkpfSwKRWIoYSxiLGMpe3ZhciBzPSQub3Iu +cSgwLEEuclMoYSkrIjo6IitiKQppZihzPT1udWxsKXM9JC5vci5xKDAsIio6OiIrYikKaWYocz09bnVs +bClyZXR1cm4hMQpyZXR1cm4gQS5wOChzLiQ0KGEsYixjLHRoaXMpKX0sCiRpa0Y6MX0KQS5HbS5wcm90 +b3R5cGU9ewpnQShhKXtyZXR1cm4gbmV3IEEuVzkoYSx0aGlzLmdrKGEpLEEueksoYSkuQygiVzk8R20u +RT4iKSl9fQpBLnZELnByb3RvdHlwZT17CmkwKGEpe3JldHVybiBCLk5tLlZyKHRoaXMuYSxuZXcgQS5V +dihhKSl9LApFYihhLGIsYyl7cmV0dXJuIEIuTm0uVnIodGhpcy5hLG5ldyBBLkVnKGEsYixjKSl9LAok +aWtGOjF9CkEuVXYucHJvdG90eXBlPXsKJDEoYSl7cmV0dXJuIHQuZjYuYShhKS5pMCh0aGlzLmEpfSwK +JFM6MTR9CkEuRWcucHJvdG90eXBlPXsKJDEoYSl7cmV0dXJuIHQuZjYuYShhKS5FYih0aGlzLmEsdGhp +cy5iLHRoaXMuYyl9LAokUzoxNH0KQS5tNi5wcm90b3R5cGU9ewpDWShhLGIsYyxkKXt2YXIgcyxyLHEK +dGhpcy5hLkZWKDAsYykKcz1iLmV2KDAsbmV3IEEuRW8oKSkKcj1iLmV2KDAsbmV3IEEuV2soKSkKdGhp +cy5iLkZWKDAscykKcT10aGlzLmMKcS5GVigwLEIueEQpCnEuRlYoMCxyKX0sCmkwKGEpe3JldHVybiB0 +aGlzLmEudGcoMCxBLnJTKGEpKX0sCkViKGEsYixjKXt2YXIgcyxyPXRoaXMscT1BLnJTKGEpLHA9ci5j +LG89cSsiOjoiK2IKaWYocC50ZygwLG8pKXJldHVybiByLmQuRHQoYykKZWxzZXtzPSIqOjoiK2IKaWYo +cC50ZygwLHMpKXJldHVybiByLmQuRHQoYykKZWxzZXtwPXIuYgppZihwLnRnKDAsbykpcmV0dXJuITAK +ZWxzZSBpZihwLnRnKDAscykpcmV0dXJuITAKZWxzZSBpZihwLnRnKDAscSsiOjoqIikpcmV0dXJuITAK +ZWxzZSBpZihwLnRnKDAsIio6OioiKSlyZXR1cm4hMH19cmV0dXJuITF9LAokaWtGOjF9CkEuRW8ucHJv +dG90eXBlPXsKJDEoYSl7cmV0dXJuIUIuTm0udGcoQi5CSSxBLm4oYSkpfSwKJFM6NH0KQS5Xay5wcm90 +b3R5cGU9ewokMShhKXtyZXR1cm4gQi5ObS50ZyhCLkJJLEEubihhKSl9LAokUzo0fQpBLmN0LnByb3Rv +dHlwZT17CkViKGEsYixjKXtpZih0aGlzLmpGKGEsYixjKSlyZXR1cm4hMAppZihiPT09InRlbXBsYXRl +IiYmYz09PSIiKXJldHVybiEwCmlmKGEuZ2V0QXR0cmlidXRlKCJ0ZW1wbGF0ZSIpPT09IiIpcmV0dXJu +IHRoaXMuZS50ZygwLGIpCnJldHVybiExfX0KQS5JQS5wcm90b3R5cGU9ewokMShhKXtyZXR1cm4iVEVN +UExBVEU6OiIrQS5uKGEpfSwKJFM6Mn0KQS5Pdy5wcm90b3R5cGU9ewppMChhKXt2YXIgcwppZih0LmFP +LmIoYSkpcmV0dXJuITEKcz10Lmc3LmIoYSkKaWYocyYmQS5yUyhhKT09PSJmb3JlaWduT2JqZWN0Iily +ZXR1cm4hMQppZihzKXJldHVybiEwCnJldHVybiExfSwKRWIoYSxiLGMpe2lmKGI9PT0iaXMifHxCLnhC +Lm4oYiwib24iKSlyZXR1cm4hMQpyZXR1cm4gdGhpcy5pMChhKX0sCiRpa0Y6MX0KQS5XOS5wcm90b3R5 +cGU9ewpHKCl7dmFyIHM9dGhpcyxyPXMuYysxLHE9cy5iCmlmKHI8cSl7cy5zcChKLng5KHMuYSxyKSkK +cy5jPXIKcmV0dXJuITB9cy5zcChudWxsKQpzLmM9cQpyZXR1cm4hMX0sCmdsKCl7dmFyIHM9dGhpcy5k +CnJldHVybiBzPT1udWxsP3RoaXMuJHRpLmMuYShzKTpzfSwKc3AoYSl7dGhpcy5kPXRoaXMuJHRpLkMo +IjE/IikuYShhKX0sCiRpQW46MX0KQS5kVy5wcm90b3R5cGU9eyRpRDA6MSwkaXY2OjF9CkEubWsucHJv +dG90eXBlPXskaXkwOjF9CkEuS28ucHJvdG90eXBlPXsKUG4oYSl7dmFyIHMscj1uZXcgQS5mbSh0aGlz +KQpkb3tzPXRoaXMuYgpyLiQyKGEsbnVsbCl9d2hpbGUocyE9PXRoaXMuYil9LApFUChhLGIpeysrdGhp +cy5iCmlmKGI9PW51bGx8fGIhPT1hLnBhcmVudE5vZGUpSi5MdChhKQplbHNlIGIucmVtb3ZlQ2hpbGQo +YSl9LApJNChhLGIpe3ZhciBzLHIscSxwLG8sbj0hMCxtPW51bGwsbD1udWxsCnRyeXttPUouaWcoYSkK +bD1tLmEuZ2V0QXR0cmlidXRlKCJpcyIpCnQuaC5hKGEpCnM9ZnVuY3Rpb24oYyl7aWYoIShjLmF0dHJp +YnV0ZXMgaW5zdGFuY2VvZiBOYW1lZE5vZGVNYXApKXJldHVybiB0cnVlCmlmKGMuaWQ9PSJsYXN0Q2hp +bGQifHxjLm5hbWU9PSJsYXN0Q2hpbGQifHxjLmlkPT0icHJldmlvdXNTaWJsaW5nInx8Yy5uYW1lPT0i +cHJldmlvdXNTaWJsaW5nInx8Yy5pZD09ImNoaWxkcmVuInx8Yy5uYW1lPT0iY2hpbGRyZW4iKXJldHVy +biB0cnVlCnZhciBrPWMuY2hpbGROb2RlcwppZihjLmxhc3RDaGlsZCYmYy5sYXN0Q2hpbGQhPT1rW2su +bGVuZ3RoLTFdKXJldHVybiB0cnVlCmlmKGMuY2hpbGRyZW4paWYoIShjLmNoaWxkcmVuIGluc3RhbmNl +b2YgSFRNTENvbGxlY3Rpb258fGMuY2hpbGRyZW4gaW5zdGFuY2VvZiBOb2RlTGlzdCkpcmV0dXJuIHRy +dWUKdmFyIGo9MAppZihjLmNoaWxkcmVuKWo9Yy5jaGlsZHJlbi5sZW5ndGgKZm9yKHZhciBpPTA7aTxq +O2krKyl7dmFyIGg9Yy5jaGlsZHJlbltpXQppZihoLmlkPT0iYXR0cmlidXRlcyJ8fGgubmFtZT09ImF0 +dHJpYnV0ZXMifHxoLmlkPT0ibGFzdENoaWxkInx8aC5uYW1lPT0ibGFzdENoaWxkInx8aC5pZD09InBy +ZXZpb3VzU2libGluZyJ8fGgubmFtZT09InByZXZpb3VzU2libGluZyJ8fGguaWQ9PSJjaGlsZHJlbiJ8 +fGgubmFtZT09ImNoaWxkcmVuIilyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9KGEpCm49QS5vVChzKT8h +MDohKGEuYXR0cmlidXRlcyBpbnN0YW5jZW9mIE5hbWVkTm9kZU1hcCl9Y2F0Y2gocCl7fXI9ImVsZW1l +bnQgdW5wcmludGFibGUiCnRyeXtyPUouWVMoYSl9Y2F0Y2gocCl7fXRyeXtxPUEuclMoYSkKdGhpcy5r +Uih0LmguYShhKSxiLG4scixxLHQuZi5hKG0pLEEuayhsKSl9Y2F0Y2gocCl7aWYoQS5SdShwKSBpbnN0 +YW5jZW9mIEEuQVQpdGhyb3cgcAplbHNle3RoaXMuRVAoYSxiKQp3aW5kb3cKbz1BLkVqKHIpCmlmKHR5 +cGVvZiBjb25zb2xlIT0idW5kZWZpbmVkIil3aW5kb3cuY29uc29sZS53YXJuKCJSZW1vdmluZyBjb3Jy +dXB0ZWQgZWxlbWVudCAiK28pfX19LAprUihhLGIsYyxkLGUsZixnKXt2YXIgcyxyLHEscCxvLG4sbSxs +PXRoaXMKaWYoYyl7bC5FUChhLGIpCndpbmRvdwppZih0eXBlb2YgY29uc29sZSE9InVuZGVmaW5lZCIp +d2luZG93LmNvbnNvbGUud2FybigiUmVtb3ZpbmcgZWxlbWVudCBkdWUgdG8gY29ycnVwdGVkIGF0dHJp +YnV0ZXMgb24gPCIrZCsiPiIpCnJldHVybn1pZighbC5hLmkwKGEpKXtsLkVQKGEsYikKd2luZG93CnM9 +QS5FaihiKQppZih0eXBlb2YgY29uc29sZSE9InVuZGVmaW5lZCIpd2luZG93LmNvbnNvbGUud2Fybigi +UmVtb3ZpbmcgZGlzYWxsb3dlZCBlbGVtZW50IDwiK2UrIj4gZnJvbSAiK3MpCnJldHVybn1pZihnIT1u +dWxsKWlmKCFsLmEuRWIoYSwiaXMiLGcpKXtsLkVQKGEsYikKd2luZG93CmlmKHR5cGVvZiBjb25zb2xl +IT0idW5kZWZpbmVkIil3aW5kb3cuY29uc29sZS53YXJuKCJSZW1vdmluZyBkaXNhbGxvd2VkIHR5cGUg +ZXh0ZW5zaW9uIDwiK2UrJyBpcz0iJytnKyciPicpCnJldHVybn1zPWYuZ3ZjKCkKcj1BLlFJKHMuc2xp +Y2UoMCksQS50NihzKSkKZm9yKHE9Zi5ndmMoKS5sZW5ndGgtMSxzPWYuYSxwPSJSZW1vdmluZyBkaXNh +bGxvd2VkIGF0dHJpYnV0ZSA8IitlKyIgIjtxPj0wOy0tcSl7aWYoIShxPHIubGVuZ3RoKSlyZXR1cm4g +QS5PSChyLHEpCm89cltxXQpuPWwuYQptPUouY0gobykKQS5uKG8pCmlmKCFuLkViKGEsbSxBLm4ocy5n +ZXRBdHRyaWJ1dGUobykpKSl7d2luZG93Cm49cy5nZXRBdHRyaWJ1dGUobykKaWYodHlwZW9mIGNvbnNv +bGUhPSJ1bmRlZmluZWQiKXdpbmRvdy5jb25zb2xlLndhcm4ocCtvKyc9IicrQS5FaihuKSsnIj4nKQpz +LnJlbW92ZUF0dHJpYnV0ZShvKX19aWYodC5hVy5iKGEpKXtzPWEuY29udGVudApzLnRvU3RyaW5nCmwu +UG4ocyl9fSwKJGlvbjoxfQpBLmZtLnByb3RvdHlwZT17CiQyKGEsYil7dmFyIHMscixxLHAsbyxuLG09 +dGhpcy5hCnN3aXRjaChhLm5vZGVUeXBlKXtjYXNlIDE6bS5JNChhLGIpCmJyZWFrCmNhc2UgODpjYXNl +IDExOmNhc2UgMzpjYXNlIDQ6YnJlYWsKZGVmYXVsdDptLkVQKGEsYil9cz1hLmxhc3RDaGlsZApmb3Io +cT10LkE7cyE9bnVsbDspe3I9bnVsbAp0cnl7cj1zLnByZXZpb3VzU2libGluZwppZihyIT1udWxsKXtw +PXIubmV4dFNpYmxpbmcKbz1zCm89cD09bnVsbD9vIT1udWxsOnAhPT1vCnA9b31lbHNlIHA9ITEKaWYo +cCl7cD1BLlBWKCJDb3JydXB0IEhUTUwiKQp0aHJvdyBBLmIocCl9fWNhdGNoKG4pe3A9cS5hKHMpOysr +bS5iCm89cC5wYXJlbnROb2RlCmlmKGEhPT1vKXtpZihvIT1udWxsKW8ucmVtb3ZlQ2hpbGQocCl9ZWxz +ZSBhLnJlbW92ZUNoaWxkKHApCnM9bnVsbApyPWEubGFzdENoaWxkfWlmKHMhPW51bGwpdGhpcy4kMihz +LGEpCnM9cn19LAokUzozMH0KQS5ZOC5wcm90b3R5cGU9e30KQS5ucS5wcm90b3R5cGU9e30KQS5Bci5w +cm90b3R5cGU9e30KQS50RC5wcm90b3R5cGU9e30KQS51Zi5wcm90b3R5cGU9e30KQS5pSi5wcm90b3R5 +cGU9ewpWSChhKXt2YXIgcyxyPXRoaXMuYSxxPXIubGVuZ3RoCmZvcihzPTA7czxxOysrcylpZihyW3Nd +PT09YSlyZXR1cm4gcwpCLk5tLmkocixhKQpCLk5tLmkodGhpcy5iLG51bGwpCnJldHVybiBxfSwKUHYo +YSl7dmFyIHMscixxLHA9dGhpcyxvPXt9CmlmKGE9PW51bGwpcmV0dXJuIGEKaWYoQS5yUShhKSlyZXR1 +cm4gYQppZih0eXBlb2YgYT09Im51bWJlciIpcmV0dXJuIGEKaWYodHlwZW9mIGE9PSJzdHJpbmciKXJl +dHVybiBhCmlmKGEgaW5zdGFuY2VvZiBBLmlQKXJldHVybiBuZXcgRGF0ZShhLmEpCmlmKHQuZnYuYihh +KSl0aHJvdyBBLmIoQS5TWSgic3RydWN0dXJlZCBjbG9uZSBvZiBSZWdFeHAiKSkKaWYodC5jOC5iKGEp +KXJldHVybiBhCmlmKHQudy5iKGEpKXJldHVybiBhCmlmKHQueC5iKGEpKXJldHVybiBhCnM9dC5kRS5i +KGEpfHwhMQppZihzKXJldHVybiBhCmlmKHQuZi5iKGEpKXtyPXAuVkgoYSkKcz1wLmIKaWYoIShyPHMu +bGVuZ3RoKSlyZXR1cm4gQS5PSChzLHIpCnE9by5hPXNbcl0KaWYocSE9bnVsbClyZXR1cm4gcQpxPXt9 +Cm8uYT1xCkIuTm0uWTUocyxyLHEpCmEuSygwLG5ldyBBLkUyKG8scCkpCnJldHVybiBvLmF9aWYodC5q +LmIoYSkpe3I9cC5WSChhKQpvPXAuYgppZighKHI8by5sZW5ndGgpKXJldHVybiBBLk9IKG8scikKcT1v +W3JdCmlmKHEhPW51bGwpcmV0dXJuIHEKcmV0dXJuIHAuZWsoYSxyKX1pZih0LmVILmIoYSkpe3I9cC5W +SChhKQpzPXAuYgppZighKHI8cy5sZW5ndGgpKXJldHVybiBBLk9IKHMscikKcT1vLmI9c1tyXQppZihx +IT1udWxsKXJldHVybiBxCnE9e30Kby5iPXEKQi5ObS5ZNShzLHIscSkKcC5pbShhLG5ldyBBLmpnKG8s +cCkpCnJldHVybiBvLmJ9dGhyb3cgQS5iKEEuU1koInN0cnVjdHVyZWQgY2xvbmUgb2Ygb3RoZXIgdHlw +ZSIpKX0sCmVrKGEsYil7dmFyIHMscj1KLlU2KGEpLHE9ci5nayhhKSxwPW5ldyBBcnJheShxKQpCLk5t +Llk1KHRoaXMuYixiLHApCmZvcihzPTA7czxxOysrcylCLk5tLlk1KHAscyx0aGlzLlB2KHIucShhLHMp +KSkKcmV0dXJuIHB9fQpBLkUyLnByb3RvdHlwZT17CiQyKGEsYil7dGhpcy5hLmFbYV09dGhpcy5iLlB2 +KGIpfSwKJFM6MzF9CkEuamcucHJvdG90eXBlPXsKJDIoYSxiKXt0aGlzLmEuYlthXT10aGlzLmIuUHYo +Yil9LAokUzozMn0KQS5CZi5wcm90b3R5cGU9ewppbShhLGIpe3ZhciBzLHIscSxwCnQuYjguYShiKQpm +b3Iocz1PYmplY3Qua2V5cyhhKSxyPXMubGVuZ3RoLHE9MDtxPHI7KytxKXtwPXNbcV0KYi4kMihwLGFb +cF0pfX19CkEuQXMucHJvdG90eXBlPXsKVihhKXt2YXIgcwpBLm4oYSkKcz0kLmhHKCkuYgppZihzLnRl +c3QoYSkpcmV0dXJuIGEKdGhyb3cgQS5iKEEuTDMoYSwidmFsdWUiLCJOb3QgYSB2YWxpZCBjbGFzcyB0 +b2tlbiIpKX0sCiJbIihhKXtyZXR1cm4gdGhpcy5EKCkuSCgwLCIgIil9LApnQShhKXt2YXIgcz10aGlz +LkQoKQpyZXR1cm4gQS5yaihzLHMucixBLkxoKHMpLmMpfSwKZ2wwKGEpe3JldHVybiB0aGlzLkQoKS5h +PT09MH0sCmdvcihhKXtyZXR1cm4gdGhpcy5EKCkuYSE9PTB9LApnayhhKXtyZXR1cm4gdGhpcy5EKCku +YX0sCnRnKGEsYil7dGhpcy5WKGIpCnJldHVybiB0aGlzLkQoKS50ZygwLGIpfSwKaShhLGIpe3ZhciBz +CkEubihiKQp0aGlzLlYoYikKcz10aGlzLk9TKG5ldyBBLkdFKGIpKQpyZXR1cm4gQS5wOChzPT1udWxs +PyExOnMpfSwKUihhLGIpe3ZhciBzLHIKaWYodHlwZW9mIGIhPSJzdHJpbmciKXJldHVybiExCnRoaXMu +VihiKQpzPXRoaXMuRCgpCnI9cy5SKDAsYikKdGhpcy5YKHMpCnJldHVybiByfSwKRlYoYSxiKXt0aGlz +Lk9TKG5ldyBBLk43KHRoaXMsdC5PLmEoYikpKX0sCmVSKGEsYil7dmFyIHM9dGhpcy5EKCkKcmV0dXJu +IEEuYksocyxiLEEuTGgocykuQygibGYuRSIpKX0sCkUoYSxiKXtyZXR1cm4gdGhpcy5EKCkuRSgwLGIp +fSwKVjEoYSl7dGhpcy5PUyhuZXcgQS51USgpKX0sCk9TKGEpe3ZhciBzLHIKdC5iVS5hKGEpCnM9dGhp +cy5EKCkKcj1hLiQxKHMpCnRoaXMuWChzKQpyZXR1cm4gcn19CkEuR0UucHJvdG90eXBlPXsKJDEoYSl7 +cmV0dXJuIHQuQy5hKGEpLmkoMCx0aGlzLmEpfSwKJFM6MzN9CkEuTjcucHJvdG90eXBlPXsKJDEoYSl7 +dmFyIHM9dGhpcy5iLHI9QS50NihzKQpyZXR1cm4gdC5DLmEoYSkuRlYoMCxuZXcgQS5sSihzLHIuQygi +cVUoMSkiKS5hKHRoaXMuYS5ndU0oKSksci5DKCJsSjwxLHFVPiIpKSl9LAokUzoxNX0KQS51US5wcm90 +b3R5cGU9ewokMShhKXt0LkMuYShhKQppZihhLmE+MCl7YS5iPWEuYz1hLmQ9YS5lPWEuZj1udWxsCmEu +YT0wCmEuUygpfXJldHVybiBudWxsfSwKJFM6MTV9CkEuaEYucHJvdG90eXBlPXskaWhGOjF9CkEuRFYu +cHJvdG90eXBlPXsKJDEoYSl7dmFyIHMKdC5ZLmEoYSkKcz1mdW5jdGlvbihiLGMsZCl7cmV0dXJuIGZ1 +bmN0aW9uKCl7cmV0dXJuIGIoYyxkLHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGFyZ3Vt +ZW50cykpfX0oQS5SNCxhLCExKQpBLkRtKHMsJC53KCksYSkKcmV0dXJuIHN9LAokUzozfQpBLlBDLnBy +b3RvdHlwZT17CiQxKGEpe3JldHVybiBuZXcgdGhpcy5hKGEpfSwKJFM6M30KQS5RUy5wcm90b3R5cGU9 +ewokMShhKXtyZXR1cm4gbmV3IEEucjcoYT09bnVsbD90LksuYShhKTphKX0sCiRTOjM1fQpBLm5wLnBy +b3RvdHlwZT17CiQxKGEpe3ZhciBzPWE9PW51bGw/dC5LLmEoYSk6YQpyZXR1cm4gbmV3IEEuVHoocyx0 +LmFtKX0sCiRTOjU0fQpBLlV0LnByb3RvdHlwZT17CiQxKGEpe3JldHVybiBuZXcgQS5FNChhPT1udWxs +P3QuSy5hKGEpOmEpfSwKJFM6Mzd9CkEuRTQucHJvdG90eXBlPXsKcShhLGIpe2lmKHR5cGVvZiBiIT0i +c3RyaW5nIiYmdHlwZW9mIGIhPSJudW1iZXIiKXRocm93IEEuYihBLnhZKCJwcm9wZXJ0eSBpcyBub3Qg +YSBTdHJpbmcgb3IgbnVtIixudWxsKSkKcmV0dXJuIEEuZFUodGhpcy5hW2JdKX0sClk1KGEsYixjKXtp +Zih0eXBlb2YgYiE9InN0cmluZyImJnR5cGVvZiBiIT0ibnVtYmVyIil0aHJvdyBBLmIoQS54WSgicHJv +cGVydHkgaXMgbm90IGEgU3RyaW5nIG9yIG51bSIsbnVsbCkpCnRoaXMuYVtiXT1BLndZKGMpfSwKRE4o +YSxiKXtpZihiPT1udWxsKXJldHVybiExCnJldHVybiBiIGluc3RhbmNlb2YgQS5FNCYmdGhpcy5hPT09 +Yi5hfSwKIlsiKGEpe3ZhciBzLHIKdHJ5e3M9U3RyaW5nKHRoaXMuYSkKcmV0dXJuIHN9Y2F0Y2gocil7 +cz10aGlzLnhiKDApCnJldHVybiBzfX0sClY3KGEsYil7dmFyIHMscj10aGlzLmEKaWYoYj09bnVsbClz +PW51bGwKZWxzZXtzPUEudDYoYikKcz1BLlBXKG5ldyBBLmxKKGIscy5DKCJAKDEpIikuYShBLmlHKCkp +LHMuQygibEo8MSxAPiIpKSwhMCx0LnopfXJldHVybiBBLmRVKHJbYV0uYXBwbHkocixzKSl9LApnbShh +KXtyZXR1cm4gMH19CkEucjcucHJvdG90eXBlPXt9CkEuVHoucHJvdG90eXBlPXsKY1AoYSl7dmFyIHM9 +dGhpcyxyPWE8MHx8YT49cy5nayhzKQppZihyKXRocm93IEEuYihBLlRFKGEsMCxzLmdrKHMpLG51bGws +bnVsbCkpfSwKcShhLGIpe2lmKEEub2soYikpdGhpcy5jUChiKQpyZXR1cm4gdGhpcy4kdGkuYy5hKHRo +aXMuVXIoMCxiKSl9LApZNShhLGIsYyl7dGhpcy5jUChiKQp0aGlzLmJoKDAsYixjKX0sCmdrKGEpe3Zh +ciBzPXRoaXMuYS5sZW5ndGgKaWYodHlwZW9mIHM9PT0ibnVtYmVyIiYmcz4+PjA9PT1zKXJldHVybiBz +CnRocm93IEEuYihBLlBWKCJCYWQgSnNBcnJheSBsZW5ndGgiKSl9LAokaWJROjEsCiRpY1g6MSwKJGl6 +TToxfQpBLnZnLnByb3RvdHlwZT17Clk1KGEsYixjKXtyZXR1cm4gdGhpcy5lNCgwLGIsYyl9fQpBLm5k +LnByb3RvdHlwZT17JGluZDoxfQpBLktlLnByb3RvdHlwZT17CkQoKXt2YXIgcyxyLHEscCxvPXRoaXMu +YS5nZXRBdHRyaWJ1dGUoImNsYXNzIiksbj1BLkxzKHQuTikKaWYobz09bnVsbClyZXR1cm4gbgpmb3Io +cz1vLnNwbGl0KCIgIikscj1zLmxlbmd0aCxxPTA7cTxyOysrcSl7cD1KLlQwKHNbcV0pCmlmKHAubGVu +Z3RoIT09MCluLmkoMCxwKX1yZXR1cm4gbn0sClgoYSl7dGhpcy5hLnNldEF0dHJpYnV0ZSgiY2xhc3Mi +LGEuSCgwLCIgIikpfX0KQS5oaS5wcm90b3R5cGU9ewpnUChhKXtyZXR1cm4gbmV3IEEuS2UoYSl9LApz +aGYoYSxiKXt0aGlzLllDKGEsYil9LApyNihhLGIsYyxkKXt2YXIgcyxyLHEscCxvCmlmKGQ9PW51bGwp +e3M9QS5RSShbXSx0LkQpCmQ9bmV3IEEudkQocykKQi5ObS5pKHMsQS5UdyhudWxsKSkKQi5ObS5pKHMs +QS5CbCgpKQpCLk5tLmkocyxuZXcgQS5PdygpKX1jPW5ldyBBLktvKGQpCnM9ZG9jdW1lbnQKcj1zLmJv +ZHkKci50b1N0cmluZwpxPUIuUlkuQUgociwnPHN2ZyB2ZXJzaW9uPSIxLjEiPicrQS5FaihiKSsiPC9z +dmc+IixjKQpwPXMuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCnM9bmV3IEEuZTcocSkKbz1zLmdyOChz +KQpmb3IoO3M9by5maXJzdENoaWxkLHMhPW51bGw7KXAuYXBwZW5kQ2hpbGQocykKcmV0dXJuIHB9LApu +eihhLGIsYyxkLGUpe3Rocm93IEEuYihBLkw0KCJDYW5ub3QgaW52b2tlIGluc2VydEFkamFjZW50SHRt +bCBvbiBTVkcuIikpfSwKZ1ZsKGEpe3JldHVybiBuZXcgQS5DcShhLCJjbGljayIsITEsdC5RKX0sCiRp +aGk6MX0KQS5kMi5wcm90b3R5cGU9ewpMdCgpe3ZhciBzLHIscSxwLG89dGhpcyxuPXQuTixtPXQuWCxs +PUEuRmwobixtKSxrPW8uYQppZihrIT1udWxsKXtzPUEuUUkoW10sdC5kKQpmb3Iocj1rLmxlbmd0aCxx +PTA7cTxrLmxlbmd0aDtrLmxlbmd0aD09PXJ8fCgwLEEubGspKGspLCsrcSl7cD1rW3FdCnMucHVzaChB +LkVGKFsiZGVzY3JpcHRpb24iLHAuYSwiaHJlZiIscC5iXSxuLG0pKX1sLlk1KDAsImVkaXRzIixzKX1s +Llk1KDAsImV4cGxhbmF0aW9uIixvLmIpCmwuWTUoMCwibGluZSIsby5jKQpsLlk1KDAsImRpc3BsYXlQ +YXRoIixvLmQpCmwuWTUoMCwidXJpUGF0aCIsby5lKQpuPW8uZgppZihuIT1udWxsKXttPUEuUUkoW10s +dC5kKQpmb3Ioaz1uLmxlbmd0aCxxPTA7cTxuLmxlbmd0aDtuLmxlbmd0aD09PWt8fCgwLEEubGspKG4p +LCsrcSltLnB1c2gobltxXS5MdCgpKQpsLlk1KDAsInRyYWNlcyIsbSl9cmV0dXJuIGx9fQpBLlNlLnBy +b3RvdHlwZT17Ckx0KCl7cmV0dXJuIEEuRUYoWyJkZXNjcmlwdGlvbiIsdGhpcy5hLCJocmVmIix0aGlz +LmJdLHQuTix0LlgpfX0KQS5NbC5wcm90b3R5cGU9ewpMdCgpe3JldHVybiBBLkVGKFsiaHJlZiIsdGhp +cy5hLCJsaW5lIix0aGlzLmIsInBhdGgiLHRoaXMuY10sdC5OLHQuWCl9fQpBLnlELnByb3RvdHlwZT17 +Ckx0KCl7dmFyIHMscixxLHA9QS5RSShbXSx0LmQpCmZvcihzPXRoaXMuYixyPXMubGVuZ3RoLHE9MDtx +PHMubGVuZ3RoO3MubGVuZ3RoPT09cnx8KDAsQS5saykocyksKytxKXAucHVzaChzW3FdLkx0KCkpCnJl +dHVybiBBLkVGKFsiZGVzY3JpcHRpb24iLHRoaXMuYSwiZW50cmllcyIscF0sdC5OLHQuWCl9fQpBLndi +LnByb3RvdHlwZT17Ckx0KCl7dmFyIHMscixxLHA9dGhpcyxvPUEuRmwodC5OLHQuWCkKby5ZNSgwLCJk +ZXNjcmlwdGlvbiIscC5hKQpzPXAuYgppZihzIT1udWxsKW8uWTUoMCwiZnVuY3Rpb24iLHMpCnM9cC5j +CmlmKHMhPW51bGwpby5ZNSgwLCJsaW5rIixzLkx0KCkpCnM9cC5kCmlmKHMubGVuZ3RoIT09MCl7cj1B +LnQ2KHMpCnE9ci5DKCJsSjwxLFowPHFVLE1oPz4+IikKby5ZNSgwLCJoaW50QWN0aW9ucyIsQS5ZMShu +ZXcgQS5sSihzLHIuQygiWjA8cVUsTWg/PigxKSIpLmEobmV3IEEuYjAoKSkscSksITAscS5DKCJhTC5F +IikpKX1yZXR1cm4gb319CkEuYU4ucHJvdG90eXBlPXsKJDEoYSl7cmV0dXJuIEEubnoodC5HLmEoYSkp +fSwKJFM6Mzh9CkEuYjAucHJvdG90eXBlPXsKJDEoYSl7cmV0dXJuIHQuSi5hKGEpLkx0KCl9LAokUzoz +OX0KQS5qOC5wcm90b3R5cGU9ewpMdCgpe3JldHVybiBBLkVGKFsibGluZSIsdGhpcy5hLCJleHBsYW5h +dGlvbiIsdGhpcy5iLCJvZmZzZXQiLHRoaXMuY10sdC5OLHQuWCl9fQpBLnFwLnByb3RvdHlwZT17Ckx0 +KCl7dmFyIHMscixxLHAsbyxuLG0sbD10aGlzLGs9dC5OLGo9QS5GbChrLHQuYVMpCmZvcihzPWwuZCxz +PXMuZ1B1KHMpLHM9cy5nQShzKSxyPXQuWCxxPXQuZDtzLkcoKTspe3A9cy5nbCgpCm89cC5hCm49QS5R +SShbXSxxKQpmb3IocD1KLklUKHAuYik7cC5HKCk7KXttPXAuZ2woKQpuLnB1c2goQS5FRihbImxpbmUi +LG0uYSwiZXhwbGFuYXRpb24iLG0uYiwib2Zmc2V0IixtLmNdLGsscikpfWouWTUoMCxvLG4pfXJldHVy +biBBLkVGKFsicmVnaW9ucyIsbC5hLCJuYXZpZ2F0aW9uQ29udGVudCIsbC5iLCJzb3VyY2VDb2RlIixs +LmMsImVkaXRzIixqXSxrLHIpfX0KQS5tUS5wcm90b3R5cGU9e30KQS5lLnByb3RvdHlwZT17CiQxKGEp +e3ZhciBzLHIscSxwLG8sbixtCnQuQi5hKGEpCnM9dC5GCnI9cy5hKHdpbmRvdy5sb2NhdGlvbikucGF0 +aG5hbWUKcT1BLkc2KHMuYSh3aW5kb3cubG9jYXRpb24pLmhyZWYpCnA9QS5hSyhzLmEod2luZG93Lmxv +Y2F0aW9uKS5ocmVmKQpBLkdlKCkKaWYociE9PSIvIil7cz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIu +cm9vdCIpLnRleHRDb250ZW50CnMudG9TdHJpbmcKcz1yIT09Qi54Qi5iUyhzKX1lbHNlIHM9ITEKaWYo +cyl7ci50b1N0cmluZwpBLkc3KHIscSxwLCEwLG5ldyBBLlZXKHIscSxwKSl9cz1kb2N1bWVudApvPXMu +cXVlcnlTZWxlY3RvcigiLmFwcGx5LW1pZ3JhdGlvbiIpCm8udG9TdHJpbmcKbz1KLnFGKG8pCm49by4k +dGkKbT1uLkMoIn4oMSk/IikuYShuZXcgQS5vWigpKQp0LlouYShudWxsKQpBLkpFKG8uYSxvLmIsbSwh +MSxuLmMpCm49cy5xdWVyeVNlbGVjdG9yKCIucmVydW4tbWlncmF0aW9uIikKbi50b1N0cmluZwpuPUou +cUYobikKbT1uLiR0aQpBLkpFKG4uYSxuLmIsbS5DKCJ+KDEpPyIpLmEobmV3IEEueTgoKSksITEsbS5j +KQptPXMucXVlcnlTZWxlY3RvcigiLnJlcG9ydC1wcm9ibGVtIikKbS50b1N0cmluZwptPUoucUYobSkK +bj1tLiR0aQpBLkpFKG0uYSxtLmIsbi5DKCJ+KDEpPyIpLmEobmV3IEEuSGkoKSksITEsbi5jKQpzPXMu +cXVlcnlTZWxlY3RvcigiLnBvcHVwLXBhbmUgLmNsb3NlIikKcy50b1N0cmluZwpzPUoucUYocykKbj1z +LiR0aQpBLkpFKHMuYSxzLmIsbi5DKCJ+KDEpPyIpLmEobmV3IEEuQlQoKSksITEsbi5jKQpuPSQuYzAo +KQpuLnRvU3RyaW5nCm49Si5xRihuKQpzPW4uJHRpCkEuSkUobi5hLG4uYixzLkMoIn4oMSk/IikuYShu +ZXcgQS5QWSgpKSwhMSxzLmMpfSwKJFM6MTZ9CkEuVlcucHJvdG90eXBlPXsKJDAoKXtBLkZyKHRoaXMu +YSx0aGlzLmIsdGhpcy5jKX0sCiRTOjB9CkEub1oucHJvdG90eXBlPXsKJDEoYSl7dmFyIHMscixxLHAs +bwp0LlYuYShhKQppZihCLm9sLnVzKHdpbmRvdywiVGhpcyB3aWxsIGFwcGx5IHRoZSBjaGFuZ2VzIHlv +dSd2ZSBwcmV2aWV3ZWQgdG8geW91ciB3b3JraW5nIGRpcmVjdG9yeS4gSXQgaXMgcmVjb21tZW5kZWQg +eW91IGNvbW1pdCBhbnkgY2hhbmdlcyB5b3UgbWFkZSBiZWZvcmUgZG9pbmcgdGhpcy4iKSl7cz1BLlFJ +KFtdLHQuZCkKZm9yKHI9JC5JUixxPXIubGVuZ3RoLHA9MDtwPHIubGVuZ3RoO3IubGVuZ3RoPT09cXx8 +KDAsQS5saykociksKytwKXMucHVzaChyW3BdLkx0KCkpCnM9QS50eSgiL2FwcGx5LW1pZ3JhdGlvbiIs +QS5FRihbIm5hdmlnYXRpb25UcmVlIixzXSx0Lk4sdC5hUykpLlc3KG5ldyBBLmpyKCksdC5QKQpvPW5l +dyBBLnFsKCkKdC5iNy5hKG51bGwpCnI9cy4kdGkKcT0kLlgzCmlmKHEhPT1CLk5VKW89QS5WSChvLHEp +CnMueGYobmV3IEEuRmUobmV3IEEudnMocSxyKSwyLG51bGwsbyxyLkMoIkA8MT4iKS5LcShyLmMpLkMo +IkZlPDEsMj4iKSkpfX0sCiRTOjF9CkEuanIucHJvdG90eXBlPXsKJDEoYSl7dmFyIHMKdC5mbi5hKGEp +CnM9ZG9jdW1lbnQuYm9keQpzLmNsYXNzTGlzdC5yZW1vdmUoInByb3Bvc2VkIikKcy5jbGFzc0xpc3Qu +YWRkKCJhcHBsaWVkIil9LAokUzo0Mn0KQS5xbC5wcm90b3R5cGU9ewokMihhLGIpe0EuQzIoIkNvdWxk +bid0IGFwcGx5IG1pZ3JhdGlvbiIsdC5LLmEoYSksYil9LAokUzo0M30KQS55OC5wcm90b3R5cGU9ewok +MShhKXtyZXR1cm4gdGhpcy54bih0LlYuYShhKSl9LAp4bihhKXt2YXIgcz0wLHI9QS5GWCh0LkgpLHE9 +MSxwLG89W10sbixtLGwsayxqLGkKdmFyICRhc3luYyQkMT1BLmx6KGZ1bmN0aW9uKGIsYyl7aWYoYj09 +PTEpe3A9YwpzPXF9d2hpbGUodHJ1ZSlzd2l0Y2gocyl7Y2FzZSAwOnE9Mwpkb2N1bWVudC5ib2R5LmNs +YXNzTGlzdC5hZGQoInJlcnVubmluZyIpCnM9NgpyZXR1cm4gQS5qUShBLnR5KCIvcmVydW4tbWlncmF0 +aW9uIixudWxsKSwkYXN5bmMkJDEpCmNhc2UgNjpuPWMKaz1uCmsudG9TdHJpbmcKaWYoQS5wOChKLng5 +KGssInN1Y2Nlc3MiKSkpdC5GLmEod2luZG93LmxvY2F0aW9uKS5yZWxvYWQoKQplbHNlIEEuSzAodC5l +dy5hKEoueDkobiwiZXJyb3JzIikpKQpvLnB1c2goNSkKcz00CmJyZWFrCmNhc2UgMzpxPTIKaT1wCm09 +QS5SdShpKQpsPUEudHMoaSkKQS5DMigiRmFpbGVkIHRvIHJlcnVuIG1pZ3JhdGlvbiIsbSxsKQpvLnB1 +c2goNSkKcz00CmJyZWFrCmNhc2UgMjpvPVsxXQpjYXNlIDQ6cT0xCmRvY3VtZW50LmJvZHkuY2xhc3NM +aXN0LnJlbW92ZSgicmVydW5uaW5nIikKcz1vLnBvcCgpCmJyZWFrCmNhc2UgNTpyZXR1cm4gQS55Qyhu +dWxsLHIpCmNhc2UgMTpyZXR1cm4gQS5mMyhwLHIpfX0pCnJldHVybiBBLkRJKCRhc3luYyQkMSxyKX0s +CiRTOjE3fQpBLkhpLnByb3RvdHlwZT17CiQxKGEpe3QuVi5hKGEpCkIub2wuUG8od2luZG93LEEuWGQo +Imh0dHBzIiwiZ2l0aHViLmNvbSIsImRhcnQtbGFuZy9zZGsvaXNzdWVzL25ldyIsQS5FRihbInRpdGxl +IiwiQ3VzdG9tZXItcmVwb3J0ZWQgaXNzdWUgd2l0aCBudWxsIHNhZmV0eSBtaWdyYXRpb24gdG9vbCIs +ImxhYmVscyIsdS5kLCJib2R5IiwiIyMjIyBTdGVwcyB0byByZXByb2R1Y2VcblxuIyMjIyBXaGF0IGRp +ZCB5b3UgZXhwZWN0IHRvIGhhcHBlbj9cblxuIyMjIyBXaGF0IGFjdHVhbGx5IGhhcHBlbmVkP1xuXG5f +U2NyZWVuc2hvdHMgYXJlIGFwcHJlY2lhdGVkX1xuXG4qKkRhcnQgU0RLIHZlcnNpb24qKjogIitBLkVq +KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZGstdmVyc2lvbiIpLnRleHRDb250ZW50KSsiXG5cblRo +YW5rcyBmb3IgZmlsaW5nIVxuIl0sdC5OLHQueikpLmduRCgpLCJyZXBvcnQtcHJvYmxlbSIpfSwKJFM6 +MX0KQS5CVC5wcm90b3R5cGU9ewokMShhKXt2YXIgcwp0LlYuYShhKQpzPWRvY3VtZW50LnF1ZXJ5U2Vs +ZWN0b3IoIi5wb3B1cC1wYW5lIikuc3R5bGUKcy5kaXNwbGF5PSJub25lIgpyZXR1cm4ibm9uZSJ9LAok +UzoxfQpBLlBZLnByb3RvdHlwZT17CiQxKGEpe3ZhciBzLHIscSxwLG8KdC5WLmEoYSkKcz0kLkQ5KCku +aW5uZXJUZXh0CnI9dC5oLmEoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm5hdi1wYW5lbCBbZGF0YS1u +YW1lKj0iJytBLkxqKHMpKyciXScpLnBhcmVudE5vZGUpCnE9ci5xdWVyeVNlbGVjdG9yKCIuc3RhdHVz +LWljb24iKQpwPSQuSVIKcC50b1N0cmluZwpvPUEueXcocCxzKQppZihvIGluc3RhbmNlb2YgQS5jRCl7 +cD1vLncKcC50b1N0cmluZ31lbHNlIHA9ITEKaWYocCl7QS5PdChvKQpBLnhuKHEsbykKQS5BUihyLG8p +fX0sCiRTOjF9CkEuTC5wcm90b3R5cGU9ewokMShhKXt2YXIgcyxyLHEscAp0LkIuYShhKQpzPXQuRgpy +PXMuYSh3aW5kb3cubG9jYXRpb24pLnBhdGhuYW1lCnIudG9TdHJpbmcKcT1BLkc2KHMuYSh3aW5kb3cu +bG9jYXRpb24pLmhyZWYpCnA9QS5hSyhzLmEod2luZG93LmxvY2F0aW9uKS5ocmVmKQppZihyLmxlbmd0 +aD4xKUEuRzcocixxLHAsITEsbnVsbCkKZWxzZXtBLkJFKHIsQS53UigpLCEwKQpBLkJYKCImbmJzcDsi +LG51bGwpfX0sCiRTOjE2fQpBLld4LnByb3RvdHlwZT17CiQxKGEpe3ZhciBzLHIscSxwLG89ImNvbGxh +cHNlZCIKdC5WLmEoYSkKcz10aGlzLmEKcj1KLllFKHMpCnE9dGhpcy5iCnA9Si5ZRShxKQppZighci5n +UChzKS50ZygwLG8pKXtyLmdQKHMpLmkoMCxvKQpwLmdQKHEpLmkoMCxvKX1lbHNle3IuZ1AocykuUigw +LG8pCnAuZ1AocSkuUigwLG8pfX0sCiRTOjF9CkEuSG8ucHJvdG90eXBlPXsKJDEoYSl7cmV0dXJuIEEu +dDIodC5WLmEoYSksdGhpcy5hKX0sCiRTOjF9CkEuSUMucHJvdG90eXBlPXsKJDEoYSl7dmFyIHMscixx +LHAKdC5WLmEoYSkKcz10aGlzLmEKcj1zLmdldEF0dHJpYnV0ZSgiZGF0YS0iK25ldyBBLlN5KG5ldyBB +Lmk3KHMpKS5PVSgib2Zmc2V0IikpCnIudG9TdHJpbmcKcT1BLlFBKHIsbnVsbCkKcz1zLmdldEF0dHJp +YnV0ZSgiZGF0YS0iK25ldyBBLlN5KG5ldyBBLmk3KHMpKS5PVSgibGluZSIpKQpzLnRvU3RyaW5nCnA9 +QS5RQShzLG51bGwpCnM9dGhpcy5iCnMudG9TdHJpbmcKQS5oWChzLHEscCl9LAokUzoxfQpBLmZDLnBy +b3RvdHlwZT17CiQxKGEpe3QucC5hKGEpCnRoaXMuYS5hTSgwLHRoaXMuYil9LAokUzo0NX0KQS5UbS5w +cm90b3R5cGU9ewokMShhKXtBLm4oYSkKcmV0dXJuIGEubGVuZ3RoPjQwP0IueEIuTmooYSwwLDQwKSsi +Li4uIjphfSwKJFM6Mn0KQS5uVC5wcm90b3R5cGU9ewokMCgpe0EuRnIodGhpcy5hLHRoaXMuYix0aGlz +LmMpfSwKJFM6MH0KQS5OWS5wcm90b3R5cGU9ewokMCgpe0EuRnIodGhpcy5hLG51bGwsbnVsbCl9LAok +UzowfQpBLnVlLnByb3RvdHlwZT17CiQxKGEpe3QuZi5hKGEpCnJldHVybiBBLkVqKGEucSgwLCJzZXZl +cml0eSIpKSsiIC0gIitBLkVqKGEucSgwLCJtZXNzYWdlIikpKyIgYXQgIitBLkVqKGEucSgwLCJsb2Nh +dGlvbiIpKSsiIC0gKCIrQS5FaihhLnEoMCwiY29kZSIpKSsiKSJ9LAokUzo0Nn0KQS5HSC5wcm90b3R5 +cGU9ewokMShhKXt0LmguYShhKQokLnpCKCkKdC5lcy5hKCQub3coKS5xKDAsImhsanMiKSkuVjcoImhp +Z2hsaWdodEJsb2NrIixbYV0pfSwKJFM6MTh9CkEuRUUucHJvdG90eXBlPXsKJDIoYSxiKXtyZXR1cm4g +QS5JWihhKStKLkhtKHQuZWUuYShiKS5iKX0sCiRTOjQ4fQpBLlBOLnByb3RvdHlwZT17CiQxKGEpe3Zh +ciBzLHIKdC5WLmEoYSkucHJldmVudERlZmF1bHQoKQpzPXRoaXMuYQpyPXRoaXMuYgpBLmFmKHQuRi5h +KHdpbmRvdy5sb2NhdGlvbikucGF0aG5hbWUscyxyLCEwLG5ldyBBLlFMKHMscikpCkEuaFgodGhpcy5j +LHMscil9LAokUzoxfQpBLlFMLnByb3RvdHlwZT17CiQwKCl7QS5Gcih0LkYuYSh3aW5kb3cubG9jYXRp +b24pLnBhdGhuYW1lLHRoaXMuYSx0aGlzLmIpfSwKJFM6MH0KQS5WUy5wcm90b3R5cGU9ewokMShhKXt2 +YXIgcyxyPSJzZWxlY3RlZC1maWxlIgp0LmguYShhKQpzPUouWUUoYSkKaWYoYS5nZXRBdHRyaWJ1dGUo +ImRhdGEtIituZXcgQS5TeShuZXcgQS5pNyhhKSkuT1UoIm5hbWUiKSk9PT10aGlzLmEuYSlzLmdQKGEp +LmkoMCxyKQplbHNlIHMuZ1AoYSkuUigwLHIpfSwKJFM6MTh9CkEuVEQucHJvdG90eXBlPXsKJDEoYSl7 +dmFyIHMscgp0LlYuYShhKQpzPXRoaXMuYQpzd2l0Y2gocy5nTCgpLmEpe2Nhc2UgMDpicmVhawpjYXNl +IDI6cy5uRygpCmJyZWFrCmNhc2UgMzpzLmMyKCkKYnJlYWsKY2FzZSAxOnMuYzIoKQpicmVha31yPXRo +aXMuYgpBLmJMKHIscykKQS54bih0aGlzLmMscykKQS5BUihyLHMpfSwKJFM6MX0KQS5JZi5wcm90b3R5 +cGU9ewokMShhKXt2YXIgcwp0LlYuYShhKQpzPXRoaXMuYQpBLk90KHMpCkEueG4odGhpcy5iLHMpCkEu +QVIodGhpcy5jLHMpfSwKJFM6MX0KQS50Qi5wcm90b3R5cGU9ewokMShhKXtyZXR1cm4gQS50Mih0LlYu +YShhKSwhMCl9LAokUzoxfQpBLm0yLnByb3RvdHlwZT17CiQxKGEpe3JldHVybiB0aGlzLlJJKHQuVi5h +KGEpKX0sClJJKGEpe3ZhciBzPTAscj1BLkZYKHQuSCkscT0xLHAsbz10aGlzLG4sbSxsLGssaixpLGgs +ZyxmCnZhciAkYXN5bmMkJDE9QS5seihmdW5jdGlvbihiLGMpe2lmKGI9PT0xKXtwPWMKcz1xfXdoaWxl +KHRydWUpc3dpdGNoKHMpe2Nhc2UgMDpxPTMKaj1kb2N1bWVudApuPUIuQ0QuelEoai5xdWVyeVNlbGVj +dG9yKCIuY29udGVudCIpLnNjcm9sbFRvcCkKaT10Lk4Kcz02CnJldHVybiBBLmpRKEEudHkoQS5RNCgi +L2FwcGx5LWhpbnQiLEEuRmwoaSxpKSksby5hLkx0KCkpLCRhc3luYyQkMSkKY2FzZSA2Omk9by5iCmg9 +aS5hCmgudG9TdHJpbmcKbT1BLlVzKGgpCnM9NwpyZXR1cm4gQS5qUShBLkc3KG0sbnVsbCxpLmIsITEs +bnVsbCksJGFzeW5jJCQxKQpjYXNlIDc6ai5ib2R5LmNsYXNzTGlzdC5hZGQoIm5lZWRzLXJlcnVuIikK +aj1qLnF1ZXJ5U2VsZWN0b3IoIi5jb250ZW50IikKai50b1N0cmluZwpqLnNjcm9sbFRvcD1CLmpuLnpR +KG4pCnE9MQpzPTUKYnJlYWsKY2FzZSAzOnE9MgpmPXAKbD1BLlJ1KGYpCms9QS50cyhmKQpBLkMyKCJj +b3VsZG4ndCBhcHBseSBoaW50IixsLGspCnM9NQpicmVhawpjYXNlIDI6cz0xCmJyZWFrCmNhc2UgNTpy +ZXR1cm4gQS55QyhudWxsLHIpCmNhc2UgMTpyZXR1cm4gQS5mMyhwLHIpfX0pCnJldHVybiBBLkRJKCRh +c3luYyQkMSxyKX0sCiRTOjE3fQpBLlFXLnByb3RvdHlwZT17CiJbIihhKXtyZXR1cm4gdGhpcy5hKyI6 +XG4iK3RoaXMuYn0sCiRpUno6MX0KQS5YQS5wcm90b3R5cGU9ewpFYihhLGIsYyl7cmV0dXJuITB9LApp +MChhKXtyZXR1cm4hMH0sCiRpa0Y6MX0KQS52dC5wcm90b3R5cGU9ewpnTCgpe3ZhciBzLHIscSxwLG8s +bixtLGw9dGhpcy5kCmlmKGwubGVuZ3RoPT09MClyZXR1cm4gQi5jdwpzPUIuTm0uZ3RIKGwpLmdMKCkK +Zm9yKHI9bC5sZW5ndGgscT0hMCxwPSEwLG89MDtvPGwubGVuZ3RoO2wubGVuZ3RoPT09cnx8KDAsQS5s +aykobCksKytvKXtuPWxbb10uZ0woKQppZihuIT1zKXM9bnVsbAptPW4hPT1CLmN3CmlmKG0mJm4hPT1C +LldEKXE9ITEKaWYobSYmbiE9PUIuWGopcD0hMX1pZihzIT1udWxsKXJldHVybiBzCmlmKHEpcmV0dXJu +IEIuV0QKaWYocClyZXR1cm4gQi5YagpyZXR1cm4gQi5kY30sCkxWKCl7dmFyIHMscixxLHA9dGhpcy5k +CmlmKHAhPW51bGwpZm9yKHM9cC5sZW5ndGgscj0wO3I8czsrK3Ipe3E9cFtyXQppZihxLmIhPT0kKUEu +YnQoInBhcmVudCIpCnEuYj10aGlzfX0sCmMyKCl7dmFyIHMscixxLHAsbwpmb3Iocz10aGlzLmQscj1z +Lmxlbmd0aCxxPTA7cTxzLmxlbmd0aDtzLmxlbmd0aD09PXJ8fCgwLEEubGspKHMpLCsrcSl7cD1zW3Fd +CmlmKHAgaW5zdGFuY2VvZiBBLnZ0KXAuYzIoKQplbHNle2lmKHAgaW5zdGFuY2VvZiBBLmNEKXtvPXAu +dwpvLnRvU3RyaW5nCm89byYmcC5yPT09Qi5Yan1lbHNlIG89ITEKaWYobylwLnI9Qi5XRH19fSwKbkco +KXt2YXIgcyxyLHEscCxvCmZvcihzPXRoaXMuZCxyPXMubGVuZ3RoLHE9MDtxPHMubGVuZ3RoO3MubGVu +Z3RoPT09cnx8KDAsQS5saykocyksKytxKXtwPXNbcV0KaWYocCBpbnN0YW5jZW9mIEEudnQpcC5uRygp +CmVsc2V7aWYocCBpbnN0YW5jZW9mIEEuY0Qpe289cC53Cm8udG9TdHJpbmcKbz1vJiZwLnI9PT1CLldE +fWVsc2Ugbz0hMQppZihvKXAucj1CLlhqfX19LApMdCgpe3ZhciBzLHI9QS5GbCh0Lk4sdC5YKQpyLlk1 +KDAsInR5cGUiLCJkaXJlY3RvcnkiKQpyLlk1KDAsIm5hbWUiLHRoaXMuYSkKcz10aGlzLmQKcy50b1N0 +cmluZwpyLlk1KDAsInN1YnRyZWUiLEEuVkQocykpCnM9dGhpcy5jCmlmKHMhPW51bGwpci5ZNSgwLCJw +YXRoIixzKQpyZXR1cm4gcn19CkEuY0QucHJvdG90eXBlPXsKTHQoKXt2YXIgcyxyPXRoaXMscT1BLkZs +KHQuTix0LlgpCnEuWTUoMCwidHlwZSIsImZpbGUiKQpxLlk1KDAsIm5hbWUiLHIuYSkKcz1yLmMKaWYo +cyE9bnVsbClxLlk1KDAsInBhdGgiLHMpCnM9ci5kCmlmKHMhPW51bGwpcS5ZNSgwLCJocmVmIixzKQpz +PXIuZQppZihzIT1udWxsKXEuWTUoMCwiZWRpdENvdW50IixzKQpzPXIuZgppZihzIT1udWxsKXEuWTUo +MCwid2FzRXhwbGljaXRseU9wdGVkT3V0IixzKQpzPXIucgppZihzIT1udWxsKXEuWTUoMCwibWlncmF0 +aW9uU3RhdHVzIixzLmEpCnM9ci53CmlmKHMhPW51bGwpcS5ZNSgwLCJtaWdyYXRpb25TdGF0dXNDYW5C +ZUNoYW5nZWQiLHMpCnJldHVybiBxfSwKZ0woKXtyZXR1cm4gdGhpcy5yfX0KQS5EOC5wcm90b3R5cGU9 +e30KQS5POS5wcm90b3R5cGU9ewoiWyIoYSl7cmV0dXJuIk5hdmlnYXRpb25UcmVlTm9kZVR5cGUuIit0 +aGlzLmJ9fQpBLkdiLnByb3RvdHlwZT17CiJbIihhKXtyZXR1cm4iVW5pdE1pZ3JhdGlvblN0YXR1cy4i +K3RoaXMuYn19CkEuTEwucHJvdG90eXBlPXsKTHQoKXtyZXR1cm4gQS5FRihbIm5vZGVJZCIsdGhpcy5i +LCJraW5kIix0aGlzLmEuYV0sdC5OLHQuWCl9fQpBLk1ELnByb3RvdHlwZT17CiQxKGEpe3JldHVybiB0 +LmdwLmEoYSkuYT09PXRoaXMuYS5xKDAsImtpbmQiKX0sCiRTOjQ5fQpBLkg3LnByb3RvdHlwZT17CiJb +IihhKXtyZXR1cm4iSGludEFjdGlvbktpbmQuIit0aGlzLmJ9fQpBLmxJLnByb3RvdHlwZT17CldPKGEs +Yil7dmFyIHMscixxPXQuZDQKQS5ZRigiYWJzb2x1dGUiLEEuUUkoW2IsbnVsbCxudWxsLG51bGwsbnVs +bCxudWxsLG51bGxdLHEpKQpzPXRoaXMuYQpzPXMuWXIoYik+MCYmIXMuaEsoYikKaWYocylyZXR1cm4g +YgpzPUEuYWIoKQpyPUEuUUkoW3MsYixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0scSkKQS5Z +Rigiam9pbiIscikKcmV0dXJuIHRoaXMuSVAobmV3IEEudTYocix0LmVKKSl9LAp6ZihhKXt2YXIgcyxy +LHE9QS5DTChhLHRoaXMuYSkKcS5JVigpCnM9cS5kCnI9cy5sZW5ndGgKaWYocj09PTApe3M9cS5iCnJl +dHVybiBzPT1udWxsPyIuIjpzfWlmKHI9PT0xKXtzPXEuYgpyZXR1cm4gcz09bnVsbD8iLiI6c31pZigw +Pj1yKXJldHVybiBBLk9IKHMsLTEpCnMucG9wKCkKcz1xLmUKaWYoMD49cy5sZW5ndGgpcmV0dXJuIEEu +T0gocywtMSkKcy5wb3AoKQpxLklWKCkKcmV0dXJuIHFbIlsiXSgwKX0sCklQKGEpe3ZhciBzLHIscSxw +LG8sbixtLGwsayxqCnQuTy5hKGEpCmZvcihzPWEuJHRpLHI9cy5DKCJhMihjWC5FKSIpLmEobmV3IEEu +cTcoKSkscT1hLmdBKGEpLHM9bmV3IEEuU08ocSxyLHMuQygiU088Y1guRT4iKSkscj10aGlzLmEscD0h +MSxvPSExLG49IiI7cy5HKCk7KXttPXEuZ2woKQppZihyLmhLKG0pJiZvKXtsPUEuQ0wobSxyKQprPW4u +Y2hhckNvZGVBdCgwKT09MD9uOm4Kbj1CLnhCLk5qKGssMCxyLlNwKGssITApKQpsLmI9bgppZihyLmRz +KG4pKUIuTm0uWTUobC5lLDAsci5nbUkoKSkKbj0iIitsWyJbIl0oMCl9ZWxzZSBpZihyLllyKG0pPjAp +e289IXIuaEsobSkKbj0iIittfWVsc2V7aj1tLmxlbmd0aAppZihqIT09MCl7aWYoMD49ailyZXR1cm4g +QS5PSChtLDApCmo9ci5VZChtWzBdKX1lbHNlIGo9ITEKaWYoIWopaWYocCluKz1yLmdtSSgpCm4rPW19 +cD1yLmRzKG0pfXJldHVybiBuLmNoYXJDb2RlQXQoMCk9PTA/bjpufSwKbzUoYSl7dmFyIHMKaWYoIXRo +aXMueTMoYSkpcmV0dXJuIGEKcz1BLkNMKGEsdGhpcy5hKQpzLnJSKCkKcmV0dXJuIHNbIlsiXSgwKX0s +CnkzKGEpe3ZhciBzLHIscSxwLG8sbixtLGwsaz10aGlzLmEsaj1rLllyKGEpCmlmKGohPT0wKXtpZihr +PT09JC5LaygpKWZvcihzPTA7czxqOysrcylpZihCLnhCLlcoYSxzKT09PTQ3KXJldHVybiEwCnI9agpx +PTQ3fWVsc2V7cj0wCnE9bnVsbH1mb3IocD1uZXcgQS5xaihhKS5hLG89cC5sZW5ndGgscz1yLG49bnVs +bDtzPG87KytzLG49cSxxPW0pe209Qi54Qi5PKHAscykKaWYoay5yNChtKSl7aWYoaz09PSQuS2soKSYm +bT09PTQ3KXJldHVybiEwCmlmKHEhPW51bGwmJmsucjQocSkpcmV0dXJuITAKaWYocT09PTQ2KWw9bj09 +bnVsbHx8bj09PTQ2fHxrLnI0KG4pCmVsc2UgbD0hMQppZihsKXJldHVybiEwfX1pZihxPT1udWxsKXJl +dHVybiEwCmlmKGsucjQocSkpcmV0dXJuITAKaWYocT09PTQ2KWs9bj09bnVsbHx8ay5yNChuKXx8bj09 +PTQ2CmVsc2Ugaz0hMQppZihrKXJldHVybiEwCnJldHVybiExfSwKSFAoYSxiKXt2YXIgcyxyLHEscCxv +LG4sbSxsPXRoaXMsaz0nVW5hYmxlIHRvIGZpbmQgYSBwYXRoIHRvICInCmI9bC5XTygwLGIpCnM9bC5h +CmlmKHMuWXIoYik8PTAmJnMuWXIoYSk+MClyZXR1cm4gbC5vNShhKQppZihzLllyKGEpPD0wfHxzLmhL +KGEpKWE9bC5XTygwLGEpCmlmKHMuWXIoYSk8PTAmJnMuWXIoYik+MCl0aHJvdyBBLmIoQS5JNyhrK2Er +JyIgZnJvbSAiJytiKyciLicpKQpyPUEuQ0woYixzKQpyLnJSKCkKcT1BLkNMKGEscykKcS5yUigpCnA9 +ci5kCm89cC5sZW5ndGgKaWYobyE9PTApe2lmKDA+PW8pcmV0dXJuIEEuT0gocCwwKQpwPUouUk0ocFsw +XSwiLiIpfWVsc2UgcD0hMQppZihwKXJldHVybiBxWyJbIl0oMCkKcD1yLmIKbz1xLmIKaWYocCE9bylw +PXA9PW51bGx8fG89PW51bGx8fCFzLk5jKHAsbykKZWxzZSBwPSExCmlmKHApcmV0dXJuIHFbIlsiXSgw +KQp3aGlsZSghMCl7cD1yLmQKbz1wLmxlbmd0aAppZihvIT09MCl7bj1xLmQKbT1uLmxlbmd0aAppZiht +IT09MCl7aWYoMD49bylyZXR1cm4gQS5PSChwLDApCnA9cFswXQppZigwPj1tKXJldHVybiBBLk9IKG4s +MCkKbj1zLk5jKHAsblswXSkKcD1ufWVsc2UgcD0hMX1lbHNlIHA9ITEKaWYoIXApYnJlYWsKQi5ObS5X +NChyLmQsMCkKQi5ObS5XNChyLmUsMSkKQi5ObS5XNChxLmQsMCkKQi5ObS5XNChxLmUsMSl9cD1yLmQK +bz1wLmxlbmd0aAppZihvIT09MCl7aWYoMD49bylyZXR1cm4gQS5PSChwLDApCnA9Si5STShwWzBdLCIu +LiIpfWVsc2UgcD0hMQppZihwKXRocm93IEEuYihBLkk3KGsrYSsnIiBmcm9tICInK2IrJyIuJykpCnA9 +dC5OCkIuTm0uVUcocS5kLDAsQS5POChyLmQubGVuZ3RoLCIuLiIsITEscCkpCkIuTm0uWTUocS5lLDAs +IiIpCkIuTm0uVUcocS5lLDEsQS5POChyLmQubGVuZ3RoLHMuZ21JKCksITEscCkpCnM9cS5kCnA9cy5s +ZW5ndGgKaWYocD09PTApcmV0dXJuIi4iCmlmKHA+MSYmSi5STShCLk5tLmdyWihzKSwiLiIpKXtzPXEu +ZAppZigwPj1zLmxlbmd0aClyZXR1cm4gQS5PSChzLC0xKQpzLnBvcCgpCnM9cS5lCmlmKDA+PXMubGVu +Z3RoKXJldHVybiBBLk9IKHMsLTEpCnMucG9wKCkKaWYoMD49cy5sZW5ndGgpcmV0dXJuIEEuT0gocywt +MSkKcy5wb3AoKQpCLk5tLmkocywiIil9cS5iPSIiCnEuSVYoKQpyZXR1cm4gcVsiWyJdKDApfX0KQS5x +Ny5wcm90b3R5cGU9ewokMShhKXtyZXR1cm4gQS5uKGEpIT09IiJ9LAokUzo0fQpBLk5vLnByb3RvdHlw +ZT17CiQxKGEpe0EuayhhKQpyZXR1cm4gYT09bnVsbD8ibnVsbCI6JyInK2ErJyInfSwKJFM6NTB9CkEu +ZnYucHJvdG90eXBlPXsKeFooYSl7dmFyIHMscj10aGlzLllyKGEpCmlmKHI+MClyZXR1cm4gQi54Qi5O +aihhLDAscikKaWYodGhpcy5oSyhhKSl7aWYoMD49YS5sZW5ndGgpcmV0dXJuIEEuT0goYSwwKQpzPWFb +MF19ZWxzZSBzPW51bGwKcmV0dXJuIHN9LApOYyhhLGIpe3JldHVybiBhPT09Yn19CkEuV0QucHJvdG90 +eXBlPXsKSVYoKXt2YXIgcyxyLHE9dGhpcwp3aGlsZSghMCl7cz1xLmQKaWYoIShzLmxlbmd0aCE9PTAm +JkouUk0oQi5ObS5ncloocyksIiIpKSlicmVhawpzPXEuZAppZigwPj1zLmxlbmd0aClyZXR1cm4gQS5P SChzLC0xKQpzLnBvcCgpCnM9cS5lCmlmKDA+PXMubGVuZ3RoKXJldHVybiBBLk9IKHMsLTEpCnMucG9w -KCkKcS5JVigpCnJldHVybiBxWyJbIl0oMCl9LApJUChhKXt2YXIgcyxyLHEscCxvLG4sbSxsLGssagp0 -Lk8uYShhKQpmb3Iocz1hLiR0aSxyPXMuQygiYTIoY1guRSkiKS5hKG5ldyBBLnE3KCkpLHE9YS5nQShh -KSxzPW5ldyBBLlNPKHEscixzLkMoIlNPPGNYLkU+IikpLHI9dGhpcy5hLHA9ITEsbz0hMSxuPSIiO3Mu -RygpOyl7bT1xLmdsKCkKaWYoci5oSyhtKSYmbyl7bD1BLkNMKG0scikKaz1uLmNoYXJDb2RlQXQoMCk9 -PTA/bjpuCm49Qi54Qi5OaihrLDAsci5TcChrLCEwKSkKbC5iPW4KaWYoci5kcyhuKSlCLk5tLlk1KGwu -ZSwwLHIuZ21JKCkpCm49IiIrbFsiWyJdKDApfWVsc2UgaWYoci5ZcihtKT4wKXtvPSFyLmhLKG0pCm49 -IiIrbX1lbHNle2o9bS5sZW5ndGgKaWYoaiE9PTApe2lmKDA+PWopcmV0dXJuIEEuT0gobSwwKQpqPXIu -VWQobVswXSl9ZWxzZSBqPSExCmlmKCFqKWlmKHApbis9ci5nbUkoKQpuKz1tfXA9ci5kcyhtKX1yZXR1 -cm4gbi5jaGFyQ29kZUF0KDApPT0wP246bn0sCm81KGEpe3ZhciBzCmlmKCF0aGlzLnkzKGEpKXJldHVy -biBhCnM9QS5DTChhLHRoaXMuYSkKcy5yUigpCnJldHVybiBzWyJbIl0oMCl9LAp5MyhhKXt2YXIgcyxy -LHEscCxvLG4sbSxsLGs9dGhpcy5hLGo9ay5ZcihhKQppZihqIT09MCl7aWYoaz09PSQuS2soKSlmb3Io -cz0wO3M8ajsrK3MpaWYoQi54Qi5XKGEscyk9PT00NylyZXR1cm4hMApyPWoKcT00N31lbHNle3I9MApx -PW51bGx9Zm9yKHA9bmV3IEEucWooYSkuYSxvPXAubGVuZ3RoLHM9cixuPW51bGw7czxvOysrcyxuPXEs -cT1tKXttPUIueEIuTyhwLHMpCmlmKGsucjQobSkpe2lmKGs9PT0kLktrKCkmJm09PT00NylyZXR1cm4h -MAppZihxIT1udWxsJiZrLnI0KHEpKXJldHVybiEwCmlmKHE9PT00NilsPW49PW51bGx8fG49PT00Nnx8 -ay5yNChuKQplbHNlIGw9ITEKaWYobClyZXR1cm4hMH19aWYocT09bnVsbClyZXR1cm4hMAppZihrLnI0 -KHEpKXJldHVybiEwCmlmKHE9PT00NilrPW49PW51bGx8fGsucjQobil8fG49PT00NgplbHNlIGs9ITEK -aWYoaylyZXR1cm4hMApyZXR1cm4hMX0sCkhQKGEsYil7dmFyIHMscixxLHAsbyxuLG0sbD10aGlzLGs9 -J1VuYWJsZSB0byBmaW5kIGEgcGF0aCB0byAiJwpiPWwuV08oMCxiKQpzPWwuYQppZihzLllyKGIpPD0w -JiZzLllyKGEpPjApcmV0dXJuIGwubzUoYSkKaWYocy5ZcihhKTw9MHx8cy5oSyhhKSlhPWwuV08oMCxh -KQppZihzLllyKGEpPD0wJiZzLllyKGIpPjApdGhyb3cgQS5iKEEuSTcoaythKyciIGZyb20gIicrYisn -Ii4nKSkKcj1BLkNMKGIscykKci5yUigpCnE9QS5DTChhLHMpCnEuclIoKQpwPXIuZApvPXAubGVuZ3Ro -CmlmKG8hPT0wKXtpZigwPj1vKXJldHVybiBBLk9IKHAsMCkKcD1KLlJNKHBbMF0sIi4iKX1lbHNlIHA9 -ITEKaWYocClyZXR1cm4gcVsiWyJdKDApCnA9ci5iCm89cS5iCmlmKHAhPW8pcD1wPT1udWxsfHxvPT1u -dWxsfHwhcy5OYyhwLG8pCmVsc2UgcD0hMQppZihwKXJldHVybiBxWyJbIl0oMCkKd2hpbGUoITApe3A9 -ci5kCm89cC5sZW5ndGgKaWYobyE9PTApe249cS5kCm09bi5sZW5ndGgKaWYobSE9PTApe2lmKDA+PW8p -cmV0dXJuIEEuT0gocCwwKQpwPXBbMF0KaWYoMD49bSlyZXR1cm4gQS5PSChuLDApCm49cy5OYyhwLG5b -MF0pCnA9bn1lbHNlIHA9ITF9ZWxzZSBwPSExCmlmKCFwKWJyZWFrCkIuTm0uVzQoci5kLDApCkIuTm0u -VzQoci5lLDEpCkIuTm0uVzQocS5kLDApCkIuTm0uVzQocS5lLDEpfXA9ci5kCm89cC5sZW5ndGgKaWYo -byE9PTApe2lmKDA+PW8pcmV0dXJuIEEuT0gocCwwKQpwPUouUk0ocFswXSwiLi4iKX1lbHNlIHA9ITEK -aWYocCl0aHJvdyBBLmIoQS5JNyhrK2ErJyIgZnJvbSAiJytiKyciLicpKQpwPXQuTgpCLk5tLlVHKHEu -ZCwwLEEuTzgoci5kLmxlbmd0aCwiLi4iLCExLHApKQpCLk5tLlk1KHEuZSwwLCIiKQpCLk5tLlVHKHEu -ZSwxLEEuTzgoci5kLmxlbmd0aCxzLmdtSSgpLCExLHApKQpzPXEuZApwPXMubGVuZ3RoCmlmKHA9PT0w -KXJldHVybiIuIgppZihwPjEmJkouUk0oQi5ObS5ncloocyksIi4iKSl7cz1xLmQKaWYoMD49cy5sZW5n -dGgpcmV0dXJuIEEuT0gocywtMSkKcy5wb3AoKQpzPXEuZQppZigwPj1zLmxlbmd0aClyZXR1cm4gQS5P -SChzLC0xKQpzLnBvcCgpCmlmKDA+PXMubGVuZ3RoKXJldHVybiBBLk9IKHMsLTEpCnMucG9wKCkKQi5O -bS5pKHMsIiIpfXEuYj0iIgpxLklWKCkKcmV0dXJuIHFbIlsiXSgwKX19CkEucTcucHJvdG90eXBlPXsK -JDEoYSl7cmV0dXJuIEEubihhKSE9PSIifSwKJFM6NH0KQS5Oby5wcm90b3R5cGU9ewokMShhKXtBLmso -YSkKcmV0dXJuIGE9PW51bGw/Im51bGwiOiciJythKyciJ30sCiRTOjUwfQpBLmZ2LnByb3RvdHlwZT17 -CnhaKGEpe3ZhciBzLHI9dGhpcy5ZcihhKQppZihyPjApcmV0dXJuIEIueEIuTmooYSwwLHIpCmlmKHRo -aXMuaEsoYSkpe2lmKDA+PWEubGVuZ3RoKXJldHVybiBBLk9IKGEsMCkKcz1hWzBdfWVsc2Ugcz1udWxs -CnJldHVybiBzfSwKTmMoYSxiKXtyZXR1cm4gYT09PWJ9fQpBLldELnByb3RvdHlwZT17CklWKCl7dmFy -IHMscixxPXRoaXMKd2hpbGUoITApe3M9cS5kCmlmKCEocy5sZW5ndGghPT0wJiZKLlJNKEIuTm0uZ3Ja -KHMpLCIiKSkpYnJlYWsKcz1xLmQKaWYoMD49cy5sZW5ndGgpcmV0dXJuIEEuT0gocywtMSkKcy5wb3Ao -KQpzPXEuZQppZigwPj1zLmxlbmd0aClyZXR1cm4gQS5PSChzLC0xKQpzLnBvcCgpfXM9cS5lCnI9cy5s -ZW5ndGgKaWYociE9PTApQi5ObS5ZNShzLHItMSwiIil9LApyUigpe3ZhciBzLHIscSxwLG8sbixtPXRo -aXMsbD1BLlFJKFtdLHQucykKZm9yKHM9bS5kLHI9cy5sZW5ndGgscT0wLHA9MDtwPHMubGVuZ3RoO3Mu -bGVuZ3RoPT09cnx8KDAsQS5saykocyksKytwKXtvPXNbcF0Kbj1KLmlhKG8pCmlmKCEobi5ETihvLCIu -Iil8fG4uRE4obywiIikpKWlmKG4uRE4obywiLi4iKSl7bj1sLmxlbmd0aAppZihuIT09MCl7aWYoMD49 -bilyZXR1cm4gQS5PSChsLC0xKQpsLnBvcCgpfWVsc2UgKytxfWVsc2UgQi5ObS5pKGwsbyl9aWYobS5i -PT1udWxsKUIuTm0uVUcobCwwLEEuTzgocSwiLi4iLCExLHQuTikpCmlmKGwubGVuZ3RoPT09MCYmbS5i -PT1udWxsKUIuTm0uaShsLCIuIikKbS5zbkoobCkKcz1tLmEKbS5zUGgoQS5POChsLmxlbmd0aCsxLHMu -Z21JKCksITAsdC5OKSkKcj1tLmIKaWYocj09bnVsbHx8bC5sZW5ndGg9PT0wfHwhcy5kcyhyKSlCLk5t -Llk1KG0uZSwwLCIiKQpyPW0uYgppZihyIT1udWxsJiZzPT09JC5LaygpKXtyLnRvU3RyaW5nCm0uYj1B -LnlzKHIsIi8iLCJcXCIpfW0uSVYoKX0sCiJbIihhKXt2YXIgcyxyLHEscD10aGlzLG89cC5iCm89byE9 -bnVsbD8iIitvOiIiCmZvcihzPTA7czxwLmQubGVuZ3RoOysrcyxvPXEpe3I9cC5lCmlmKCEoczxyLmxl -bmd0aCkpcmV0dXJuIEEuT0gocixzKQpyPUEuRWoocltzXSkKcT1wLmQKaWYoIShzPHEubGVuZ3RoKSly -ZXR1cm4gQS5PSChxLHMpCnE9bytyK0EuRWoocVtzXSl9bys9QS5FaihCLk5tLmdyWihwLmUpKQpyZXR1 -cm4gby5jaGFyQ29kZUF0KDApPT0wP286b30sCnNuSihhKXt0aGlzLmQ9dC5hLmEoYSl9LApzUGgoYSl7 -dGhpcy5lPXQuYS5hKGEpfX0KQS5kdi5wcm90b3R5cGU9ewoiWyIoYSl7cmV0dXJuIlBhdGhFeGNlcHRp -b246ICIrdGhpcy5hfSwKJGlSejoxfQpBLnpMLnByb3RvdHlwZT17CiJbIihhKXtyZXR1cm4gdGhpcy5n -b2ModGhpcyl9fQpBLk9GLnByb3RvdHlwZT17ClVkKGEpe3JldHVybiBCLnhCLnRnKGEsIi8iKX0sCnI0 -KGEpe3JldHVybiBhPT09NDd9LApkcyhhKXt2YXIgcz1hLmxlbmd0aApyZXR1cm4gcyE9PTAmJkIueEIu -TyhhLHMtMSkhPT00N30sClNwKGEsYil7aWYoYS5sZW5ndGghPT0wJiZCLnhCLlcoYSwwKT09PTQ3KXJl -dHVybiAxCnJldHVybiAwfSwKWXIoYSl7cmV0dXJuIHRoaXMuU3AoYSwhMSl9LApoSyhhKXtyZXR1cm4h -MX0sCmdvYygpe3JldHVybiJwb3NpeCJ9LApnbUkoKXtyZXR1cm4iLyJ9fQpBLnJ1LnByb3RvdHlwZT17 -ClVkKGEpe3JldHVybiBCLnhCLnRnKGEsIi8iKX0sCnI0KGEpe3JldHVybiBhPT09NDd9LApkcyhhKXt2 -YXIgcz1hLmxlbmd0aAppZihzPT09MClyZXR1cm4hMQppZihCLnhCLk8oYSxzLTEpIT09NDcpcmV0dXJu -ITAKcmV0dXJuIEIueEIuVGMoYSwiOi8vIikmJnRoaXMuWXIoYSk9PT1zfSwKU3AoYSxiKXt2YXIgcyxy -LHEscCxvPWEubGVuZ3RoCmlmKG89PT0wKXJldHVybiAwCmlmKEIueEIuVyhhLDApPT09NDcpcmV0dXJu -IDEKZm9yKHM9MDtzPG87KytzKXtyPUIueEIuVyhhLHMpCmlmKHI9PT00NylyZXR1cm4gMAppZihyPT09 -NTgpe2lmKHM9PT0wKXJldHVybiAwCnE9Qi54Qi5YVShhLCIvIixCLnhCLlFpKGEsIi8vIixzKzEpP3Mr -MzpzKQppZihxPD0wKXJldHVybiBvCmlmKCFifHxvPHErMylyZXR1cm4gcQppZighQi54Qi5uKGEsImZp -bGU6Ly8iKSlyZXR1cm4gcQppZighQS5ZdShhLHErMSkpcmV0dXJuIHEKcD1xKzMKcmV0dXJuIG89PT1w -P3A6cSs0fX1yZXR1cm4gMH0sCllyKGEpe3JldHVybiB0aGlzLlNwKGEsITEpfSwKaEsoYSl7cmV0dXJu -IGEubGVuZ3RoIT09MCYmQi54Qi5XKGEsMCk9PT00N30sCmdvYygpe3JldHVybiJ1cmwifSwKZ21JKCl7 -cmV0dXJuIi8ifX0KQS5JVi5wcm90b3R5cGU9ewpVZChhKXtyZXR1cm4gQi54Qi50ZyhhLCIvIil9LApy -NChhKXtyZXR1cm4gYT09PTQ3fHxhPT09OTJ9LApkcyhhKXt2YXIgcz1hLmxlbmd0aAppZihzPT09MCly -ZXR1cm4hMQpzPUIueEIuTyhhLHMtMSkKcmV0dXJuIShzPT09NDd8fHM9PT05Mil9LApTcChhLGIpe3Zh -ciBzLHIscT1hLmxlbmd0aAppZihxPT09MClyZXR1cm4gMApzPUIueEIuVyhhLDApCmlmKHM9PT00Nyly -ZXR1cm4gMQppZihzPT09OTIpe2lmKHE8Mnx8Qi54Qi5XKGEsMSkhPT05MilyZXR1cm4gMQpyPUIueEIu -WFUoYSwiXFwiLDIpCmlmKHI+MCl7cj1CLnhCLlhVKGEsIlxcIixyKzEpCmlmKHI+MClyZXR1cm4gcn1y -ZXR1cm4gcX1pZihxPDMpcmV0dXJuIDAKaWYoIUEuT1MocykpcmV0dXJuIDAKaWYoQi54Qi5XKGEsMSkh -PT01OClyZXR1cm4gMApxPUIueEIuVyhhLDIpCmlmKCEocT09PTQ3fHxxPT09OTIpKXJldHVybiAwCnJl -dHVybiAzfSwKWXIoYSl7cmV0dXJuIHRoaXMuU3AoYSwhMSl9LApoSyhhKXtyZXR1cm4gdGhpcy5Zcihh -KT09PTF9LApPdChhLGIpe3ZhciBzCmlmKGE9PT1iKXJldHVybiEwCmlmKGE9PT00NylyZXR1cm4gYj09 -PTkyCmlmKGE9PT05MilyZXR1cm4gYj09PTQ3CmlmKChhXmIpIT09MzIpcmV0dXJuITEKcz1hfDMyCnJl -dHVybiBzPj05NyYmczw9MTIyfSwKTmMoYSxiKXt2YXIgcyxyCmlmKGE9PT1iKXJldHVybiEwCnM9YS5s -ZW5ndGgKaWYocyE9PWIubGVuZ3RoKXJldHVybiExCmZvcihyPTA7cjxzOysrcilpZighdGhpcy5PdChC -LnhCLlcoYSxyKSxCLnhCLlcoYixyKSkpcmV0dXJuITEKcmV0dXJuITB9LApnb2MoKXtyZXR1cm4id2lu -ZG93cyJ9LApnbUkoKXtyZXR1cm4iXFwifX07KGZ1bmN0aW9uIGFsaWFzZXMoKXt2YXIgcz1KLkd2LnBy -b3RvdHlwZQpzLlU9c1siWyJdCnM9Si51MC5wcm90b3R5cGUKcy51PXNbIlsiXQpzPUEuY1gucHJvdG90 -eXBlCnMuR0c9cy5ldgpzPUEuTWgucHJvdG90eXBlCnMueGI9c1siWyJdCnM9QS5jdi5wcm90b3R5cGUK -cy5EVz1zLnI2CnM9QS5tNi5wcm90b3R5cGUKcy5qRj1zLkViCnM9QS5FNC5wcm90b3R5cGUKcy5Vcj1z -LnEKcy5lND1zLlk1CnM9QS52Zy5wcm90b3R5cGUKcy5iaD1zLlk1fSkoKTsoZnVuY3Rpb24gaW5zdGFs -bFRlYXJPZmZzKCl7dmFyIHM9aHVua0hlbHBlcnMuX3N0YXRpY18xLHI9aHVua0hlbHBlcnMuX3N0YXRp -Y18wLHE9aHVua0hlbHBlcnMuaW5zdGFsbEluc3RhbmNlVGVhck9mZixwPWh1bmtIZWxwZXJzLmluc3Rh -bGxTdGF0aWNUZWFyT2ZmLG89aHVua0hlbHBlcnMuX2luc3RhbmNlXzF1CnMoQSwiRVgiLCJaViIsNSkK -cyhBLCJ5dCIsIm9BIiw1KQpzKEEsInFXIiwiQnoiLDUpCnIoQSwiVUkiLCJlTiIsMCkKcShBLlBmLnBy -b3RvdHlwZSwiZ1lKIiwwLDEsbnVsbCxbIiQyIiwiJDEiXSxbIncwIiwicG0iXSwyOCwwLDApCnMoQSwi -Q3kiLCJOQyIsMykKcyhBLCJQSCIsIk10IiwyKQpwKEEsInBTIiw0LG51bGwsWyIkNCJdLFsicUQiXSw2 -LDApCnAoQSwiVjQiLDQsbnVsbCxbIiQ0Il0sWyJuWiJdLDYsMCkKbyhBLkFzLnByb3RvdHlwZSwiZ3VN -IiwiViIsMikKcyhBLCJpRyIsIndZIiw1MykKcyhBLCJ3MCIsImRVIiwzNikKcyhBLCJpUyIsImk2Iiwx -KX0pKCk7KGZ1bmN0aW9uIGluaGVyaXRhbmNlKCl7dmFyIHM9aHVua0hlbHBlcnMubWl4aW4scj1odW5r -SGVscGVycy5taXhpbkhhcmQscT1odW5rSGVscGVycy5pbmhlcml0LHA9aHVua0hlbHBlcnMuaW5oZXJp -dE1hbnkKcShBLk1oLG51bGwpCnAoQS5NaCxbQS5GSyxKLkd2LEoubTEsQS5jWCxBLmVULEEuWFMsQS5u -WSxBLkhiLEEuYTcsQS5BbixBLkZ1LEEuSkIsQS5TVSxBLlJlLEEud3YsQS5QbixBLldVLEEuTEksQS5U -cCxBLmY5LEEudGUsQS5icSxBLlhPLEEua3IsQS5ZayxBLnZoLEEuTjYsQS5WUixBLkVLLEEuUGIsQS50 -USxBLlNkLEEuSmMsQS5HLEEubFksQS5XMyxBLmloLEEuRnksQS5HVixBLkN3LEEuUGYsQS5GZSxBLnZz -LEEuT00sQS5xaCxBLk1PLEEua1QsQS54SSxBLm0wLEEuRlAsQS5ibixBLmxtLEEubEQsQS5LUCxBLmxm -LEEuV1ksQS5VayxBLlNoLEEuUncsQS5ieixBLmlQLEEuY2ssQS5rNSxBLktZLEEuQ0QsQS5hRSxBLk4z -LEEuYzgsQS5aZCxBLk0sQS5EbixBLlBFLEEuVWYsQS5pZCxBLkZrLEEuSlEsQS5HbSxBLnZELEEubTYs -QS5PdyxBLlc5LEEuZFcsQS5tayxBLktvLEEuaUosQS5FNCxBLmQyLEEuU2UsQS5NbCxBLnlELEEud2Is -QS5qOCxBLnFwLEEubVEsQS5YQSxBLkQ4LEEuTEwsQS5sSSxBLnpMLEEuV0QsQS5kdl0pCnAoSi5Hdixb -Si55RSxKLndlLEouTUYsSi5qZCxKLnFJLEouRHIsQS5FVF0pCnAoSi5NRixbSi51MCxBLkQwLEEuQXos -QS5ZOCxBLk5oLEEuYWUsQS5JQixBLm43LEEuZWEsQS5icixBLlNnLEEudTgsQS5ucSxBLnRELEEuaEZd -KQpwKEoudTAsW0ouaUMsSi5rZCxKLmM1XSkKcShKLlBvLEouamQpCnAoSi5xSSxbSi5MNyxKLmtEXSkK -cChBLmNYLFtBLkJSLEEuYlEsQS5pMSxBLlU1LEEuQU0sQS51NixBLlhSLEEubVcsQS51bl0pCnAoQS5C -UixbQS5aeSxBLlFDXSkKcShBLm9sLEEuWnkpCnEoQS5VcSxBLlFDKQpxKEEualYsQS5VcSkKcChBLlhT -LFtBLmMsQS5FeixBLmF6LEEudlYsQS5FcSxBLkM2LEEua1MsQS5VZCxBLkYsQS5BVCxBLm1wLEEudWIs -QS5kcyxBLmxqLEEuVVYsQS5wLEEuUVddKQpxKEEudXksQS5uWSkKcChBLnV5LFtBLncyLEEud3osQS5l -N10pCnEoQS5xaixBLncyKQpwKEEuYlEsW0EuYUwsQS5NQixBLmk1XSkKcChBLmFMLFtBLm5ILEEubEos -QS5pOF0pCnEoQS54eSxBLmkxKQpwKEEuQW4sW0EuTUgsQS5TTyxBLlUxXSkKcShBLmQ1LEEuQU0pCnEo -QS5SVSxBLlBuKQpxKEEuR2osQS5SVSkKcShBLlBELEEuR2opCnEoQS5MUCxBLldVKQpwKEEuVHAsW0Eu -RTEsQS5BeSxBLmxjLEEuZEMsQS5WWCxBLnRoLEEuaGEsQS5XTSxBLnBWLEEualosQS5CNSxBLk9SLEEu -eVEsQS5SWixBLmM2LEEucWQsQS5DdixBLnZOLEEuVXYsQS5FZyxBLkVvLEEuV2ssQS5JQSxBLkdFLEEu -TjcsQS51USxBLkRWLEEuUEMsQS5RUyxBLm5wLEEuVXQsQS5hTixBLmIwLEEuZSxBLm9aLEEuanIsQS55 -OCxBLkhpLEEuQlQsQS5QWSxBLkwsQS5XeCxBLkhvLEEuSUMsQS5mQyxBLlRtLEEudWUsQS5HSCxBLlBO -LEEuVlMsQS5URCxBLklmLEEudEIsQS5tMixBLk1ELEEucTcsQS5Ob10pCnAoQS5FMSxbQS5DaixBLndO -LEEuU1gsQS5HcyxBLlU3LEEucmEsQS50aSxBLldGLEEubjEsQS5jUyxBLlZDLEEuSlQsQS5NRSxBLnk1 -LEEueUksQS5LUyxBLkEzLEEuZm0sQS5FMixBLmpnLEEucWwsQS5FRV0pCnEoQS5XMCxBLkV6KQpwKEEu -bGMsW0EuengsQS5yVF0pCnEoQS5rWSxBLkM2KQpxKEEuaWwsQS5ZaykKcChBLmlsLFtBLk41LEEudXcs -QS5jZixBLlN5XSkKcChBLm1XLFtBLktXLEEucTRdKQpxKEEuTFosQS5FVCkKcChBLkxaLFtBLlJHLEEu -V0JdKQpxKEEuVlAsQS5SRykKcShBLkRnLEEuVlApCnEoQS5aRyxBLldCKQpxKEEuUGcsQS5aRykKcChB -LlBnLFtBLnhqLEEuZEUsQS5aQSxBLmRULEEuUHEsQS5lRSxBLlY2XSkKcShBLmlNLEEua1MpCnAoQS5B -eSxbQS5WcyxBLkZ0LEEueUgsQS5kYSxBLm9RLEEudnIsQS5ydCxBLktGLEEuWkwsQS5SVCxBLnJxLEEu -UlcsQS51TyxBLkV2LEEuVnAsQS54cixBLk56LEEuVlcsQS5uVCxBLk5ZLEEuUUxdKQpxKEEuWmYsQS5Q -ZikKcShBLkppLEEubTApCnEoQS5YdixBLkZQKQpxKEEuYjYsQS5YdikKcShBLlZqLEEuV1kpCnAoQS5V -ayxbQS5DVixBLlppLEEuYnldKQpxKEEud0ksQS5rVCkKcChBLndJLFtBLlU4LEEub2osQS5NeCxBLkUz -LEEuR1ldKQpxKEEuSzgsQS5VZCkKcShBLnR1LEEuU2gpCnEoQS51NSxBLlppKQpwKEEuQVQsW0EuYkos -QS5lWV0pCnEoQS5xZSxBLkRuKQpwKEEuRDAsW0EuS1YsQS53YSxBLks1LEEuQ21dKQpwKEEuS1YsW0Eu -Y3YsQS5ueCxBLlFGLEEuQ1FdKQpwKEEuY3YsW0EucUUsQS5oaV0pCnAoQS5xRSxbQS5HaCxBLmZZLEEu -closQS5RUCxBLmg0LEEuU04sQS5scCxBLlRiLEEuSXYsQS5XUCxBLnlZXSkKcShBLm9KLEEuWTgpCnEo -QS5oSCxBLkF6KQpxKEEuVmIsQS5RRikKcShBLmZKLEEud2EpCnAoQS5lYSxbQS53NixBLmV3XSkKcShB -LkFqLEEudzYpCnEoQS5BcixBLm5xKQpxKEEuQkgsQS5BcikKcShBLnc0LEEuSUIpCnEoQS51ZixBLnRE -KQpxKEEucmgsQS51ZikKcShBLmk3LEEuY2YpCnEoQS5BcyxBLlZqKQpwKEEuQXMsW0EuSTQsQS5LZV0p -CnEoQS5STyxBLnFoKQpxKEEuQ3EsQS5STykKcShBLnhDLEEuTU8pCnEoQS5jdCxBLm02KQpxKEEuQmYs -QS5pSikKcChBLkU0LFtBLnI3LEEudmddKQpxKEEuVHosQS52ZykKcShBLm5kLEEuaGkpCnAoQS5EOCxb -QS52dCxBLmNEXSkKcChBLmNrLFtBLk85LEEuR2IsQS5IN10pCnEoQS5mdixBLnpMKQpwKEEuZnYsW0Eu -T0YsQS5ydSxBLklWXSkKcyhBLncyLEEuUmUpCnMoQS5RQyxBLmxEKQpzKEEuUkcsQS5sRCkKcyhBLlZQ -LEEuU1UpCnMoQS5XQixBLmxEKQpzKEEuWkcsQS5TVSkKcyhBLm5ZLEEubEQpCnMoQS5XWSxBLmxmKQpz -KEEuUlUsQS5LUCkKcyhBLkZQLEEubGYpCnMoQS5ZOCxBLmlkKQpzKEEubnEsQS5sRCkKcyhBLkFyLEEu -R20pCnMoQS50RCxBLmxEKQpzKEEudWYsQS5HbSkKcihBLnZnLEEubEQpfSkoKQp2YXIgdj17dHlwZVVu -aXZlcnNlOntlQzpuZXcgTWFwKCksdFI6e30sZVQ6e30sdFBWOnt9LHNFQTpbXX0sbWFuZ2xlZEdsb2Jh -bE5hbWVzOntJajoiaW50IixDUDoiZG91YmxlIixaWjoibnVtIixxVToiU3RyaW5nIixhMjoiYm9vbCIs -Yzg6Ik51bGwiLHpNOiJMaXN0In0sbWFuZ2xlZE5hbWVzOnt9LHR5cGVzOlsifigpIiwifihBaikiLCJx -VShxVSkiLCJAKEApIiwiYTIocVUpIiwifih+KCkpIiwiYTIoY3YscVUscVUsSlEpIiwiYzgoQCkiLCJj -OCgpIiwifihNaD8sTWg/KSIsIkAoKSIsIn4ocVUsQCkiLCJ+KG42LHFVLElqKSIsIn4ocVUscVUpIiwi -YTIoa0YpIiwifihPbDxxVT4pIiwiYzgoZWEpIiwiYjg8fj4oQWopIiwifihjdikiLCJ+KHFVLElqKSIs -IklqKElqLElqKSIsIn4oQCkiLCJ+KHFVLHFVPykiLCJuNihALEApIiwiYzgoQCxHeikiLCJhMihLViki -LCJ+KElqLEApIiwifihlYSkiLCJ+KE1oW0d6P10pIiwiYzgoTWgsR3opIiwifihLVixLVj8pIiwifihA -LEApIiwiYzgoQCxAKSIsImEyKE9sPHFVPikiLCJ2czxAPihAKSIsInI3KEApIiwiTWg/KEApIiwiRTQo -QCkiLCJMTChAKSIsIlowPHFVLE1oPz4oTEwpIiwiYzgofigpKSIsIkAocVUpIiwiYzgoWjA8cVUsTWg/ -Pj8pIiwiYzgoTWgsQCkiLCJ+KEdELEApIiwifihldykiLCJxVShaMDxALEA+KSIsIlowPHFVLHFVPiha -MDxxVSxxVT4scVUpIiwiSWooSWosTjM8cVUsek08ajg+PikiLCJhMihINykiLCJxVShxVT8pIiwiQChA -LHFVKSIsIn4ocVUsSWo/KSIsIk1oPyhNaD8pIiwiVHo8QD4oQCkiXSxpbnRlcmNlcHRvcnNCeVRhZzpu -dWxsLGxlYWZUYWdzOm51bGwsYXJyYXlSdGk6U3ltYm9sKCIkdGkiKX0KQS54Yih2LnR5cGVVbml2ZXJz -ZSxKU09OLnBhcnNlKCd7ImlDIjoidTAiLCJrZCI6InUwIiwiYzUiOiJ1MCIsInJ4IjoiZWEiLCJlNSI6 -ImVhIiwiWTAiOiJoaSIsInRwIjoiaGkiLCJHOCI6ImV3IiwiTXIiOiJxRSIsImVMIjoicUUiLCJJMCI6 -IktWIiwiaHMiOiJLViIsIlhnIjoiUUYiLCJuciI6IkFqIiwieTQiOiJ3NiIsImROIjoiQ20iLCJ4YyI6 -Im54Iiwia0oiOiJueCIsInpVIjoiRGciLCJkZiI6IkVUIiwieUUiOnsiYTIiOltdfSwid2UiOnsiYzgi -OltdfSwidTAiOnsidm0iOltdfSwiamQiOnsiek0iOlsiMSJdLCJiUSI6WyIxIl0sImNYIjpbIjEiXX0s -IlBvIjp7ImpkIjpbIjEiXSwiek0iOlsiMSJdLCJiUSI6WyIxIl0sImNYIjpbIjEiXX0sIm0xIjp7IkFu -IjpbIjEiXX0sInFJIjp7IkNQIjpbXSwiWloiOltdfSwiTDciOnsiQ1AiOltdLCJJaiI6W10sIlpaIjpb -XX0sImtEIjp7IkNQIjpbXSwiWloiOltdfSwiRHIiOnsicVUiOltdLCJ2WCI6W119LCJCUiI6eyJjWCI6 -WyIyIl19LCJlVCI6eyJBbiI6WyIyIl19LCJaeSI6eyJCUiI6WyIxIiwiMiJdLCJjWCI6WyIyIl0sImNY -LkUiOiIyIn0sIm9sIjp7Ilp5IjpbIjEiLCIyIl0sIkJSIjpbIjEiLCIyIl0sImJRIjpbIjIiXSwiY1gi -OlsiMiJdLCJjWC5FIjoiMiJ9LCJVcSI6eyJsRCI6WyIyIl0sInpNIjpbIjIiXSwiQlIiOlsiMSIsIjIi -XSwiYlEiOlsiMiJdLCJjWCI6WyIyIl19LCJqViI6eyJVcSI6WyIxIiwiMiJdLCJsRCI6WyIyIl0sInpN -IjpbIjIiXSwiQlIiOlsiMSIsIjIiXSwiYlEiOlsiMiJdLCJjWCI6WyIyIl0sImxELkUiOiIyIiwiY1gu -RSI6IjIifSwiYyI6eyJYUyI6W119LCJxaiI6eyJsRCI6WyJJaiJdLCJSZSI6WyJJaiJdLCJ6TSI6WyJJ -aiJdLCJiUSI6WyJJaiJdLCJjWCI6WyJJaiJdLCJsRC5FIjoiSWoiLCJSZS5FIjoiSWoifSwiYlEiOnsi -Y1giOlsiMSJdfSwiYUwiOnsiYlEiOlsiMSJdLCJjWCI6WyIxIl19LCJuSCI6eyJhTCI6WyIxIl0sImJR -IjpbIjEiXSwiY1giOlsiMSJdLCJhTC5FIjoiMSIsImNYLkUiOiIxIn0sImE3Ijp7IkFuIjpbIjEiXX0s -ImkxIjp7ImNYIjpbIjIiXSwiY1guRSI6IjIifSwieHkiOnsiaTEiOlsiMSIsIjIiXSwiYlEiOlsiMiJd -LCJjWCI6WyIyIl0sImNYLkUiOiIyIn0sIk1IIjp7IkFuIjpbIjIiXX0sImxKIjp7ImFMIjpbIjIiXSwi -YlEiOlsiMiJdLCJjWCI6WyIyIl0sImFMLkUiOiIyIiwiY1guRSI6IjIifSwiVTUiOnsiY1giOlsiMSJd -LCJjWC5FIjoiMSJ9LCJTTyI6eyJBbiI6WyIxIl19LCJBTSI6eyJjWCI6WyIxIl0sImNYLkUiOiIxIn0s -ImQ1Ijp7IkFNIjpbIjEiXSwiYlEiOlsiMSJdLCJjWCI6WyIxIl0sImNYLkUiOiIxIn0sIlUxIjp7IkFu -IjpbIjEiXX0sIk1CIjp7ImJRIjpbIjEiXSwiY1giOlsiMSJdLCJjWC5FIjoiMSJ9LCJGdSI6eyJBbiI6 -WyIxIl19LCJ1NiI6eyJjWCI6WyIxIl0sImNYLkUiOiIxIn0sIkpCIjp7IkFuIjpbIjEiXX0sIncyIjp7 -ImxEIjpbIjEiXSwiUmUiOlsiMSJdLCJ6TSI6WyIxIl0sImJRIjpbIjEiXSwiY1giOlsiMSJdfSwid3Yi -OnsiR0QiOltdfSwiUEQiOnsiR2oiOlsiMSIsIjIiXSwiUlUiOlsiMSIsIjIiXSwiUG4iOlsiMSIsIjIi -XSwiS1AiOlsiMSIsIjIiXSwiWjAiOlsiMSIsIjIiXX0sIldVIjp7IlowIjpbIjEiLCIyIl19LCJMUCI6 -eyJXVSI6WyIxIiwiMiJdLCJaMCI6WyIxIiwiMiJdfSwiWFIiOnsiY1giOlsiMSJdLCJjWC5FIjoiMSJ9 -LCJMSSI6eyJ2USI6W119LCJXMCI6eyJFeiI6W10sIlhTIjpbXX0sImF6Ijp7IlhTIjpbXX0sInZWIjp7 -IlhTIjpbXX0sInRlIjp7IlJ6IjpbXX0sIlhPIjp7Ikd6IjpbXX0sIlRwIjp7IkVIIjpbXX0sIkF5Ijp7 -IkVIIjpbXX0sIkUxIjp7IkVIIjpbXX0sImxjIjp7IkVIIjpbXX0sInp4Ijp7IkVIIjpbXX0sInJUIjp7 -IkVIIjpbXX0sIkVxIjp7IlhTIjpbXX0sImtZIjp7IlhTIjpbXX0sIk41Ijp7IllrIjpbIjEiLCIyIl0s -IkZvIjpbIjEiLCIyIl0sIlowIjpbIjEiLCIyIl0sIllrLksiOiIxIiwiWWsuViI6IjIifSwiaTUiOnsi -YlEiOlsiMSJdLCJjWCI6WyIxIl0sImNYLkUiOiIxIn0sIk42Ijp7IkFuIjpbIjEiXX0sIlZSIjp7IndM -IjpbXSwidlgiOltdfSwiRUsiOnsiaWIiOltdLCJPZCI6W119LCJLVyI6eyJjWCI6WyJpYiJdLCJjWC5F -IjoiaWIifSwiUGIiOnsiQW4iOlsiaWIiXX0sInRRIjp7Ik9kIjpbXX0sInVuIjp7ImNYIjpbIk9kIl0s -ImNYLkUiOiJPZCJ9LCJTZCI6eyJBbiI6WyJPZCJdfSwiRVQiOnsiQVMiOltdfSwiTFoiOnsiWGoiOlsi -MSJdLCJFVCI6W10sIkFTIjpbXX0sIkRnIjp7ImxEIjpbIkNQIl0sIlhqIjpbIkNQIl0sInpNIjpbIkNQ -Il0sIkVUIjpbXSwiYlEiOlsiQ1AiXSwiQVMiOltdLCJjWCI6WyJDUCJdLCJTVSI6WyJDUCJdLCJsRC5F -IjoiQ1AifSwiUGciOnsibEQiOlsiSWoiXSwiWGoiOlsiSWoiXSwiek0iOlsiSWoiXSwiRVQiOltdLCJi -USI6WyJJaiJdLCJBUyI6W10sImNYIjpbIklqIl0sIlNVIjpbIklqIl19LCJ4aiI6eyJsRCI6WyJJaiJd -LCJYaiI6WyJJaiJdLCJ6TSI6WyJJaiJdLCJFVCI6W10sImJRIjpbIklqIl0sIkFTIjpbXSwiY1giOlsi -SWoiXSwiU1UiOlsiSWoiXSwibEQuRSI6IklqIn0sImRFIjp7ImxEIjpbIklqIl0sIlhqIjpbIklqIl0s -InpNIjpbIklqIl0sIkVUIjpbXSwiYlEiOlsiSWoiXSwiQVMiOltdLCJjWCI6WyJJaiJdLCJTVSI6WyJJ -aiJdLCJsRC5FIjoiSWoifSwiWkEiOnsibEQiOlsiSWoiXSwiWGoiOlsiSWoiXSwiek0iOlsiSWoiXSwi -RVQiOltdLCJiUSI6WyJJaiJdLCJBUyI6W10sImNYIjpbIklqIl0sIlNVIjpbIklqIl0sImxELkUiOiJJ -aiJ9LCJkVCI6eyJsRCI6WyJJaiJdLCJYaiI6WyJJaiJdLCJ6TSI6WyJJaiJdLCJFVCI6W10sImJRIjpb -IklqIl0sIkFTIjpbXSwiY1giOlsiSWoiXSwiU1UiOlsiSWoiXSwibEQuRSI6IklqIn0sIlBxIjp7ImxE -IjpbIklqIl0sIlhqIjpbIklqIl0sInpNIjpbIklqIl0sIkVUIjpbXSwiYlEiOlsiSWoiXSwiQVMiOltd -LCJjWCI6WyJJaiJdLCJTVSI6WyJJaiJdLCJsRC5FIjoiSWoifSwiZUUiOnsibEQiOlsiSWoiXSwiWGoi -OlsiSWoiXSwiek0iOlsiSWoiXSwiRVQiOltdLCJiUSI6WyJJaiJdLCJBUyI6W10sImNYIjpbIklqIl0s -IlNVIjpbIklqIl0sImxELkUiOiJJaiJ9LCJWNiI6eyJsRCI6WyJJaiJdLCJuNiI6W10sIlhqIjpbIklq -Il0sInpNIjpbIklqIl0sIkVUIjpbXSwiYlEiOlsiSWoiXSwiQVMiOltdLCJjWCI6WyJJaiJdLCJTVSI6 -WyJJaiJdLCJsRC5FIjoiSWoifSwia1MiOnsiWFMiOltdfSwiaU0iOnsiRXoiOltdLCJYUyI6W119LCJ2 -cyI6eyJiOCI6WyIxIl19LCJHViI6eyJBbiI6WyIxIl19LCJxNCI6eyJjWCI6WyIxIl0sImNYLkUiOiIx -In0sIkN3Ijp7IlhTIjpbXX0sIlpmIjp7IlBmIjpbIjEiXX0sIm0wIjp7IlFtIjpbXX0sIkppIjp7Im0w -IjpbXSwiUW0iOltdfSwiYjYiOnsibGYiOlsiMSJdLCJPbCI6WyIxIl0sImJRIjpbIjEiXSwiY1giOlsi -MSJdLCJsZi5FIjoiMSJ9LCJsbSI6eyJBbiI6WyIxIl19LCJtVyI6eyJjWCI6WyIxIl19LCJ1eSI6eyJs -RCI6WyIxIl0sInpNIjpbIjEiXSwiYlEiOlsiMSJdLCJjWCI6WyIxIl19LCJpbCI6eyJZayI6WyIxIiwi -MiJdLCJaMCI6WyIxIiwiMiJdfSwiWWsiOnsiWjAiOlsiMSIsIjIiXX0sIlBuIjp7IlowIjpbIjEiLCIy -Il19LCJHaiI6eyJSVSI6WyIxIiwiMiJdLCJQbiI6WyIxIiwiMiJdLCJLUCI6WyIxIiwiMiJdLCJaMCI6 -WyIxIiwiMiJdfSwiVmoiOnsibGYiOlsiMSJdLCJPbCI6WyIxIl0sImJRIjpbIjEiXSwiY1giOlsiMSJd -fSwiWHYiOnsibGYiOlsiMSJdLCJPbCI6WyIxIl0sImJRIjpbIjEiXSwiY1giOlsiMSJdfSwidXciOnsi -WWsiOlsicVUiLCJAIl0sIlowIjpbInFVIiwiQCJdLCJZay5LIjoicVUiLCJZay5WIjoiQCJ9LCJpOCI6 -eyJhTCI6WyJxVSJdLCJiUSI6WyJxVSJdLCJjWCI6WyJxVSJdLCJhTC5FIjoicVUiLCJjWC5FIjoicVUi -fSwiQ1YiOnsiVWsiOlsiek08SWo+IiwicVUiXSwiVWsuUyI6InpNPElqPiJ9LCJVOCI6eyJ3SSI6WyJ6 -TTxJaj4iLCJxVSJdfSwiWmkiOnsiVWsiOlsicVUiLCJ6TTxJaj4iXX0sIlVkIjp7IlhTIjpbXX0sIks4 -Ijp7IlhTIjpbXX0sImJ5Ijp7IlVrIjpbIk1oPyIsInFVIl0sIlVrLlMiOiJNaD8ifSwib2oiOnsid0ki -OlsiTWg/IiwicVUiXX0sIk14Ijp7IndJIjpbInFVIiwiTWg/Il19LCJ1NSI6eyJVayI6WyJxVSIsInpN -PElqPiJdLCJVay5TIjoicVUifSwiRTMiOnsid0kiOlsicVUiLCJ6TTxJaj4iXX0sIkdZIjp7IndJIjpb -InpNPElqPiIsInFVIl19LCJDUCI6eyJaWiI6W119LCJJaiI6eyJaWiI6W119LCJ6TSI6eyJiUSI6WyIx -Il0sImNYIjpbIjEiXX0sImliIjp7Ik9kIjpbXX0sIk9sIjp7ImJRIjpbIjEiXSwiY1giOlsiMSJdfSwi -cVUiOnsidlgiOltdfSwiQzYiOnsiWFMiOltdfSwiRXoiOnsiWFMiOltdfSwiRiI6eyJYUyI6W119LCJB -VCI6eyJYUyI6W119LCJiSiI6eyJYUyI6W119LCJlWSI6eyJYUyI6W119LCJtcCI6eyJYUyI6W119LCJ1 -YiI6eyJYUyI6W119LCJkcyI6eyJYUyI6W119LCJsaiI6eyJYUyI6W119LCJVViI6eyJYUyI6W119LCJr -NSI6eyJYUyI6W119LCJLWSI6eyJYUyI6W119LCJwIjp7IlhTIjpbXX0sIkNEIjp7IlJ6IjpbXX0sImFF -Ijp7IlJ6IjpbXX0sIlpkIjp7Ikd6IjpbXX0sIk0iOnsiQkwiOltdfSwiRG4iOnsiaUQiOltdfSwiVWYi -OnsiaUQiOltdfSwicWUiOnsiaUQiOltdfSwiY3YiOnsiS1YiOltdLCJEMCI6W119LCJmSiI6eyJEMCI6 -W119LCJBaiI6eyJlYSI6W119LCJLViI6eyJEMCI6W119LCJldyI6eyJlYSI6W119LCJKUSI6eyJrRiI6 -W119LCJxRSI6eyJjdiI6W10sIktWIjpbXSwiRDAiOltdfSwiR2giOnsiY3YiOltdLCJLViI6W10sIkQw -IjpbXX0sImZZIjp7ImN2IjpbXSwiS1YiOltdLCJEMCI6W119LCJyWiI6eyJjdiI6W10sIktWIjpbXSwi -RDAiOltdfSwiUVAiOnsiY3YiOltdLCJLViI6W10sIkQwIjpbXX0sIm54Ijp7IktWIjpbXSwiRDAiOltd -fSwiUUYiOnsiS1YiOltdLCJEMCI6W119LCJJQiI6eyJ0biI6WyJaWiJdfSwid3oiOnsibEQiOlsiMSJd -LCJ6TSI6WyIxIl0sImJRIjpbIjEiXSwiY1giOlsiMSJdLCJsRC5FIjoiMSJ9LCJoSCI6eyJBeiI6W119 -LCJoNCI6eyJjdiI6W10sIktWIjpbXSwiRDAiOltdfSwiVmIiOnsiS1YiOltdLCJEMCI6W119LCJ3YSI6 -eyJEMCI6W119LCJlNyI6eyJsRCI6WyJLViJdLCJ6TSI6WyJLViJdLCJiUSI6WyJLViJdLCJjWCI6WyJL -ViJdLCJsRC5FIjoiS1YifSwiQkgiOnsibEQiOlsiS1YiXSwiR20iOlsiS1YiXSwiek0iOlsiS1YiXSwi -WGoiOlsiS1YiXSwiYlEiOlsiS1YiXSwiY1giOlsiS1YiXSwibEQuRSI6IktWIiwiR20uRSI6IktWIn0s -IlNOIjp7ImN2IjpbXSwiS1YiOltdLCJEMCI6W119LCJscCI6eyJjdiI6W10sIktWIjpbXSwiRDAiOltd -fSwiVGIiOnsiY3YiOltdLCJLViI6W10sIkQwIjpbXX0sIkl2Ijp7ImN2IjpbXSwiS1YiOltdLCJEMCI6 -W119LCJXUCI6eyJjdiI6W10sIktWIjpbXSwiRDAiOltdfSwieVkiOnsiY3YiOltdLCJLViI6W10sIkQw -IjpbXX0sInc2Ijp7ImVhIjpbXX0sIks1Ijp7InY2IjpbXSwiRDAiOltdfSwiQ20iOnsiRDAiOltdfSwi -Q1EiOnsiS1YiOltdLCJEMCI6W119LCJ3NCI6eyJ0biI6WyJaWiJdfSwicmgiOnsibEQiOlsiS1YiXSwi -R20iOlsiS1YiXSwiek0iOlsiS1YiXSwiWGoiOlsiS1YiXSwiYlEiOlsiS1YiXSwiY1giOlsiS1YiXSwi -bEQuRSI6IktWIiwiR20uRSI6IktWIn0sImNmIjp7IllrIjpbInFVIiwicVUiXSwiWjAiOlsicVUiLCJx -VSJdfSwiaTciOnsiWWsiOlsicVUiLCJxVSJdLCJaMCI6WyJxVSIsInFVIl0sIllrLksiOiJxVSIsIllr -LlYiOiJxVSJ9LCJTeSI6eyJZayI6WyJxVSIsInFVIl0sIlowIjpbInFVIiwicVUiXSwiWWsuSyI6InFV -IiwiWWsuViI6InFVIn0sIkk0Ijp7ImxmIjpbInFVIl0sIk9sIjpbInFVIl0sImJRIjpbInFVIl0sImNY -IjpbInFVIl0sImxmLkUiOiJxVSJ9LCJSTyI6eyJxaCI6WyIxIl19LCJDcSI6eyJSTyI6WyIxIl0sInFo -IjpbIjEiXX0sInhDIjp7Ik1PIjpbIjEiXX0sInZEIjp7ImtGIjpbXX0sIm02Ijp7ImtGIjpbXX0sImN0 -Ijp7ImtGIjpbXX0sIk93Ijp7ImtGIjpbXX0sIlc5Ijp7IkFuIjpbIjEiXX0sImRXIjp7InY2IjpbXSwi -RDAiOltdfSwibWsiOnsieTAiOltdfSwiS28iOnsib24iOltdfSwiQXMiOnsibGYiOlsicVUiXSwiT2wi -OlsicVUiXSwiYlEiOlsicVUiXSwiY1giOlsicVUiXX0sInI3Ijp7IkU0IjpbXX0sIlR6Ijp7ImxEIjpb -IjEiXSwiek0iOlsiMSJdLCJiUSI6WyIxIl0sIkU0IjpbXSwiY1giOlsiMSJdLCJsRC5FIjoiMSJ9LCJu -ZCI6eyJoaSI6W10sImN2IjpbXSwiS1YiOltdLCJEMCI6W119LCJLZSI6eyJsZiI6WyJxVSJdLCJPbCI6 -WyJxVSJdLCJiUSI6WyJxVSJdLCJjWCI6WyJxVSJdLCJsZi5FIjoicVUifSwiaGkiOnsiY3YiOltdLCJL -ViI6W10sIkQwIjpbXX0sIlFXIjp7IlhTIjpbXSwiUnoiOltdfSwiWEEiOnsia0YiOltdfSwidnQiOnsi -RDgiOltdfSwiY0QiOnsiRDgiOltdfSwiZHYiOnsiUnoiOltdfSwiT0YiOnsiZnYiOltdfSwicnUiOnsi -ZnYiOltdfSwiSVYiOnsiZnYiOltdfSwibjYiOnsiek0iOlsiSWoiXSwiYlEiOlsiSWoiXSwiY1giOlsi -SWoiXSwiQVMiOltdfX0nKSkKQS5GRih2LnR5cGVVbml2ZXJzZSxKU09OLnBhcnNlKCd7IncyIjoxLCJR -QyI6MiwiTFoiOjEsImtUIjoyLCJtVyI6MSwidXkiOjEsImlsIjoyLCJWaiI6MSwiWHYiOjEsIm5ZIjox -LCJXWSI6MSwiRlAiOjEsInZnIjoxfScpKQp2YXIgdT17bDoiQ2Fubm90IGV4dHJhY3QgYSBmaWxlIHBh -dGggZnJvbSBhIFVSSSB3aXRoIGEgZnJhZ21lbnQgY29tcG9uZW50IixpOiJDYW5ub3QgZXh0cmFjdCBh -IGZpbGUgcGF0aCBmcm9tIGEgVVJJIHdpdGggYSBxdWVyeSBjb21wb25lbnQiLGo6IkNhbm5vdCBleHRy -YWN0IGEgbm9uLVdpbmRvd3MgZmlsZSBwYXRoIGZyb20gYSBmaWxlIFVSSSB3aXRoIGFuIGF1dGhvcml0 -eSIsYzoiRXJyb3IgaGFuZGxlciBtdXN0IGFjY2VwdCBvbmUgT2JqZWN0IG9yIG9uZSBPYmplY3QgYW5k -IGEgU3RhY2tUcmFjZSBhcyBhcmd1bWVudHMsIGFuZCByZXR1cm4gYSB2YWx1ZSBvZiB0aGUgcmV0dXJu -ZWQgZnV0dXJlJ3MgdHlwZSIsZDoiYXJlYS1hbmFseXplcixhbmFseXplci1ubmJkLW1pZ3JhdGlvbix0 -eXBlLWJ1ZyJ9CnZhciB0PShmdW5jdGlvbiBydGlpKCl7dmFyIHM9QS5OMApyZXR1cm57YnE6cygiR2gi -KSxuOnMoIkN3IiksY1I6cygicloiKSx3OnMoIkF6IikscjpzKCJRUCIpLGdGOnMoIlBEPEdELEA+Iiks -VTpzKCJiUTxAPiIpLGg6cygiY3YiKSx1OnMoIlhTIiksQjpzKCJlYSIpLGc4OnMoIlJ6IiksYzg6cygi -aEgiKSxZOnMoIkVIIiksaTpzKCJiODxAPiIpLEo6cygiTEwiKSxncDpzKCJINyIpLHg6cygiU2ciKSxv -OnMoInZRIiksZWg6cygiY1g8S1Y+IiksTzpzKCJjWDxxVT4iKSxrOnMoImNYPEA+IiksZkE6cygiamQ8 -U2U+IiksZ2k6cygiamQ8ajg+IiksZDpzKCJqZDxaMDxxVSxNaD8+PiIpLGZoOnMoImpkPEQ4PiIpLEQ6 -cygiamQ8a0Y+IiksczpzKCJqZDxxVT4iKSxoaDpzKCJqZDx5RD4iKSxhSjpzKCJqZDx3Yj4iKSxnTjpz -KCJqZDxuNj4iKSxiOnMoImpkPEA+IiksdDpzKCJqZDxJaj4iKSxkNDpzKCJqZDxxVT8+IiksVDpzKCJ3 -ZSIpLGVIOnMoInZtIiksRTpzKCJjNSIpLGFVOnMoIlhqPEA+IiksYW06cygiVHo8QD4iKSxlbzpzKCJO -NTxHRCxAPiIpLGR6OnMoImhGIiksZjQ6cygiek08ajg+IiksYVM6cygiek08WjA8cVUsTWg/Pj4iKSxl -dzpzKCJ6TTxNaD4iKSxhOnMoInpNPHFVPiIpLGo6cygiek08QD4iKSxMOnMoInpNPElqPiIpLFc6cygi -ek08TWg/PiIpLEY6cygidTgiKSxlZTpzKCJOMzxxVSx6TTxqOD4+IiksaDY6cygiWjA8cVUsTWg+Iiks -STpzKCJaMDxxVSxxVT4iKSxmOnMoIlowPEAsQD4iKSxHOnMoIlowPHFVLE1oPz4iKSxkdjpzKCJsSjxx -VSxxVT4iKSxkbzpzKCJsSjxxVSxAPiIpLFY6cygiQWoiKSxkRTpzKCJFVCIpLEE6cygiS1YiKSxmNjpz -KCJrRiIpLFA6cygiYzgiKSxLOnMoIk1oIikscDpzKCJldyIpLHE6cygidG48Wlo+IiksZnY6cygid0wi -KSxjejpzKCJpYiIpLGFPOnMoIm5kIiksQzpzKCJPbDxxVT4iKSxsOnMoIkd6IiksTjpzKCJxVSIpLGRH -OnMoInFVKHFVKSIpLGc3OnMoImhpIiksZm86cygiR0QiKSxhVzpzKCJ5WSIpLGVLOnMoIkV6IiksYWs6 -cygiQVMiKSxnYzpzKCJuNiIpLGJJOnMoImtkIiksZHc6cygiR2o8cVUscVU+IiksZEQ6cygiaUQiKSxl -SjpzKCJ1NjxxVT4iKSxnNDpzKCJLNSIpLGNpOnMoInY2IiksZzI6cygiQ20iKSxiajpzKCJaZjxmSj4i -KSxoOTpzKCJDUSIpLGFjOnMoImU3IiksUTpzKCJDcTxBaj4iKSxSOnMoInd6PGN2PiIpLGFvOnMoInZz -PGZKPiIpLGM6cygidnM8QD4iKSxmSjpzKCJ2czxJaj4iKSxjcjpzKCJKUSIpLHk6cygiYTIiKSxhbDpz -KCJhMihNaCkiKSxnUjpzKCJDUCIpLHo6cygiQCIpLGZPOnMoIkAoKSIpLHY6cygiQChNaCkiKSxtOnMo -IkAoTWgsR3opIiksYlU6cygiQChPbDxxVT4pIiksZE86cygiQChxVSkiKSxiODpzKCJAKEAsQCkiKSxT -OnMoIklqIiksYXc6cygiMCYqIiksXzpzKCJNaCoiKSxjaDpzKCJEMD8iKSxiRzpzKCJiODxjOD4/Iiks -ZXM6cygiRTQ/IiksYk06cygiek08QD4/IiksZ3E6cygiek08TWg/Pj8iKSxjOTpzKCJaMDxxVSxAPj8i -KSxmbjpzKCJaMDxxVSxNaD8+PyIpLFg6cygiTWg/IiksZGs6cygicVU/IiksZTpzKCJGZTxALEA+PyIp -LGc6cygiYm4/IiksYjc6cygiYTIoTWgpPyIpLGJ3OnMoIkAoZWEpPyIpLGZWOnMoIk1oPyhNaD8sTWg/ -KT8iKSxkQTpzKCJNaD8oQCk/IiksWjpzKCJ+KCk/IiksZ3g6cygifihldyk/IiksZGk6cygiWloiKSxI -OnMoIn4iKSxNOnMoIn4oKSIpLGVBOnMoIn4ocVUscVUpIiksY0E6cygifihxVSxAKSIpfX0pKCk7KGZ1 -bmN0aW9uIGNvbnN0YW50cygpe3ZhciBzPWh1bmtIZWxwZXJzLm1ha2VDb25zdExpc3QKQi54bj1BLkdo -LnByb3RvdHlwZQpCLlJZPUEuUVAucHJvdG90eXBlCkIubUg9QS5hZS5wcm90b3R5cGUKQi5CWj1BLlZi -LnByb3RvdHlwZQpCLkR0PUEuZkoucHJvdG90eXBlCkIuT2s9Si5Hdi5wcm90b3R5cGUKQi5ObT1KLmpk -LnByb3RvdHlwZQpCLmpuPUouTDcucHJvdG90eXBlCkIuQ0Q9Si5xSS5wcm90b3R5cGUKQi54Qj1KLkRy -LnByb3RvdHlwZQpCLkRHPUouYzUucHJvdG90eXBlCkIuVWI9Si5NRi5wcm90b3R5cGUKQi5FeD1BLnU4 -LnByb3RvdHlwZQpCLk5BPUEuVjYucHJvdG90eXBlCkIudDU9QS5CSC5wcm90b3R5cGUKQi5MdD1BLlNO -LnByb3RvdHlwZQpCLlpRPUouaUMucHJvdG90eXBlCkIuSWU9QS5UYi5wcm90b3R5cGUKQi52Qj1KLmtk -LnByb3RvdHlwZQpCLm9sPUEuSzUucHJvdG90eXBlCkIueTg9bmV3IEEuVTgoKQpCLmg5PW5ldyBBLkNW -KCkKQi5Hdz1uZXcgQS5GdShBLk4wKCJGdTwwJj4iKSkKQi5PND1mdW5jdGlvbiBnZXRUYWdGYWxsYmFj -ayhvKSB7CiAgdmFyIHMgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobyk7CiAgcmV0dXJu -IHMuc3Vic3RyaW5nKDgsIHMubGVuZ3RoIC0gMSk7Cn0KQi5ZcT1mdW5jdGlvbigpIHsKICB2YXIgdG9T -dHJpbmdGdW5jdGlvbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7CiAgZnVuY3Rpb24gZ2V0VGFn -KG8pIHsKICAgIHZhciBzID0gdG9TdHJpbmdGdW5jdGlvbi5jYWxsKG8pOwogICAgcmV0dXJuIHMuc3Vi -c3RyaW5nKDgsIHMubGVuZ3RoIC0gMSk7CiAgfQogIGZ1bmN0aW9uIGdldFVua25vd25UYWcob2JqZWN0 -LCB0YWcpIHsKICAgIGlmICgvXkhUTUxbQS1aXS4qRWxlbWVudCQvLnRlc3QodGFnKSkgewogICAgICB2 -YXIgbmFtZSA9IHRvU3RyaW5nRnVuY3Rpb24uY2FsbChvYmplY3QpOwogICAgICBpZiAobmFtZSA9PSAi -W29iamVjdCBPYmplY3RdIikgcmV0dXJuIG51bGw7CiAgICAgIHJldHVybiAiSFRNTEVsZW1lbnQiOwog -ICAgfQogIH0KICBmdW5jdGlvbiBnZXRVbmtub3duVGFnR2VuZXJpY0Jyb3dzZXIob2JqZWN0LCB0YWcp -IHsKICAgIGlmIChzZWxmLkhUTUxFbGVtZW50ICYmIG9iamVjdCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50 -KSByZXR1cm4gIkhUTUxFbGVtZW50IjsKICAgIHJldHVybiBnZXRVbmtub3duVGFnKG9iamVjdCwgdGFn -KTsKICB9CiAgZnVuY3Rpb24gcHJvdG90eXBlRm9yVGFnKHRhZykgewogICAgaWYgKHR5cGVvZiB3aW5k -b3cgPT0gInVuZGVmaW5lZCIpIHJldHVybiBudWxsOwogICAgaWYgKHR5cGVvZiB3aW5kb3dbdGFnXSA9 -PSAidW5kZWZpbmVkIikgcmV0dXJuIG51bGw7CiAgICB2YXIgY29uc3RydWN0b3IgPSB3aW5kb3dbdGFn -XTsKICAgIGlmICh0eXBlb2YgY29uc3RydWN0b3IgIT0gImZ1bmN0aW9uIikgcmV0dXJuIG51bGw7CiAg -ICByZXR1cm4gY29uc3RydWN0b3IucHJvdG90eXBlOwogIH0KICBmdW5jdGlvbiBkaXNjcmltaW5hdG9y -KHRhZykgeyByZXR1cm4gbnVsbDsgfQogIHZhciBpc0Jyb3dzZXIgPSB0eXBlb2YgbmF2aWdhdG9yID09 -ICJvYmplY3QiOwogIHJldHVybiB7CiAgICBnZXRUYWc6IGdldFRhZywKICAgIGdldFVua25vd25UYWc6 -IGlzQnJvd3NlciA/IGdldFVua25vd25UYWdHZW5lcmljQnJvd3NlciA6IGdldFVua25vd25UYWcsCiAg -ICBwcm90b3R5cGVGb3JUYWc6IHByb3RvdHlwZUZvclRhZywKICAgIGRpc2NyaW1pbmF0b3I6IGRpc2Ny -aW1pbmF0b3IgfTsKfQpCLndiPWZ1bmN0aW9uKGdldFRhZ0ZhbGxiYWNrKSB7CiAgcmV0dXJuIGZ1bmN0 -aW9uKGhvb2tzKSB7CiAgICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPSAib2JqZWN0IikgcmV0dXJuIGhv -b2tzOwogICAgdmFyIHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudDsKICAgIGlmICh1YS5pbmRleE9mKCJE -dW1wUmVuZGVyVHJlZSIpID49IDApIHJldHVybiBob29rczsKICAgIGlmICh1YS5pbmRleE9mKCJDaHJv -bWUiKSA+PSAwKSB7CiAgICAgIGZ1bmN0aW9uIGNvbmZpcm0ocCkgewogICAgICAgIHJldHVybiB0eXBl -b2Ygd2luZG93ID09ICJvYmplY3QiICYmIHdpbmRvd1twXSAmJiB3aW5kb3dbcF0ubmFtZSA9PSBwOwog -ICAgICB9CiAgICAgIGlmIChjb25maXJtKCJXaW5kb3ciKSAmJiBjb25maXJtKCJIVE1MRWxlbWVudCIp -KSByZXR1cm4gaG9va3M7CiAgICB9CiAgICBob29rcy5nZXRUYWcgPSBnZXRUYWdGYWxsYmFjazsKICB9 -Owp9CkIuS1U9ZnVuY3Rpb24oaG9va3MpIHsKICBpZiAodHlwZW9mIGRhcnRFeHBlcmltZW50YWxGaXh1 -cEdldFRhZyAhPSAiZnVuY3Rpb24iKSByZXR1cm4gaG9va3M7CiAgaG9va3MuZ2V0VGFnID0gZGFydEV4 -cGVyaW1lbnRhbEZpeHVwR2V0VGFnKGhvb2tzLmdldFRhZyk7Cn0KQi5mUT1mdW5jdGlvbihob29rcykg -ewogIHZhciBnZXRUYWcgPSBob29rcy5nZXRUYWc7CiAgdmFyIHByb3RvdHlwZUZvclRhZyA9IGhvb2tz -LnByb3RvdHlwZUZvclRhZzsKICBmdW5jdGlvbiBnZXRUYWdGaXhlZChvKSB7CiAgICB2YXIgdGFnID0g -Z2V0VGFnKG8pOwogICAgaWYgKHRhZyA9PSAiRG9jdW1lbnQiKSB7CiAgICAgIGlmICghIW8ueG1sVmVy -c2lvbikgcmV0dXJuICIhRG9jdW1lbnQiOwogICAgICByZXR1cm4gIiFIVE1MRG9jdW1lbnQiOwogICAg -fQogICAgcmV0dXJuIHRhZzsKICB9CiAgZnVuY3Rpb24gcHJvdG90eXBlRm9yVGFnRml4ZWQodGFnKSB7 -CiAgICBpZiAodGFnID09ICJEb2N1bWVudCIpIHJldHVybiBudWxsOwogICAgcmV0dXJuIHByb3RvdHlw -ZUZvclRhZyh0YWcpOwogIH0KICBob29rcy5nZXRUYWcgPSBnZXRUYWdGaXhlZDsKICBob29rcy5wcm90 -b3R5cGVGb3JUYWcgPSBwcm90b3R5cGVGb3JUYWdGaXhlZDsKfQpCLmRrPWZ1bmN0aW9uKGhvb2tzKSB7 -CiAgdmFyIHVzZXJBZ2VudCA9IHR5cGVvZiBuYXZpZ2F0b3IgPT0gIm9iamVjdCIgPyBuYXZpZ2F0b3Iu -dXNlckFnZW50IDogIiI7CiAgaWYgKHVzZXJBZ2VudC5pbmRleE9mKCJGaXJlZm94IikgPT0gLTEpIHJl -dHVybiBob29rczsKICB2YXIgZ2V0VGFnID0gaG9va3MuZ2V0VGFnOwogIHZhciBxdWlja01hcCA9IHsK -ICAgICJCZWZvcmVVbmxvYWRFdmVudCI6ICJFdmVudCIsCiAgICAiRGF0YVRyYW5zZmVyIjogIkNsaXBi -b2FyZCIsCiAgICAiR2VvR2VvbG9jYXRpb24iOiAiR2VvbG9jYXRpb24iLAogICAgIkxvY2F0aW9uIjog -IiFMb2NhdGlvbiIsCiAgICAiV29ya2VyTWVzc2FnZUV2ZW50IjogIk1lc3NhZ2VFdmVudCIsCiAgICAi -WE1MRG9jdW1lbnQiOiAiIURvY3VtZW50In07CiAgZnVuY3Rpb24gZ2V0VGFnRmlyZWZveChvKSB7CiAg -ICB2YXIgdGFnID0gZ2V0VGFnKG8pOwogICAgcmV0dXJuIHF1aWNrTWFwW3RhZ10gfHwgdGFnOwogIH0K -ICBob29rcy5nZXRUYWcgPSBnZXRUYWdGaXJlZm94Owp9CkIueGk9ZnVuY3Rpb24oaG9va3MpIHsKICB2 -YXIgdXNlckFnZW50ID0gdHlwZW9mIG5hdmlnYXRvciA9PSAib2JqZWN0IiA/IG5hdmlnYXRvci51c2Vy -QWdlbnQgOiAiIjsKICBpZiAodXNlckFnZW50LmluZGV4T2YoIlRyaWRlbnQvIikgPT0gLTEpIHJldHVy -biBob29rczsKICB2YXIgZ2V0VGFnID0gaG9va3MuZ2V0VGFnOwogIHZhciBxdWlja01hcCA9IHsKICAg -ICJCZWZvcmVVbmxvYWRFdmVudCI6ICJFdmVudCIsCiAgICAiRGF0YVRyYW5zZmVyIjogIkNsaXBib2Fy -ZCIsCiAgICAiSFRNTERERWxlbWVudCI6ICJIVE1MRWxlbWVudCIsCiAgICAiSFRNTERURWxlbWVudCI6 -ICJIVE1MRWxlbWVudCIsCiAgICAiSFRNTFBocmFzZUVsZW1lbnQiOiAiSFRNTEVsZW1lbnQiLAogICAg -IlBvc2l0aW9uIjogIkdlb3Bvc2l0aW9uIgogIH07CiAgZnVuY3Rpb24gZ2V0VGFnSUUobykgewogICAg -dmFyIHRhZyA9IGdldFRhZyhvKTsKICAgIHZhciBuZXdUYWcgPSBxdWlja01hcFt0YWddOwogICAgaWYg -KG5ld1RhZykgcmV0dXJuIG5ld1RhZzsKICAgIGlmICh0YWcgPT0gIk9iamVjdCIpIHsKICAgICAgaWYg -KHdpbmRvdy5EYXRhVmlldyAmJiAobyBpbnN0YW5jZW9mIHdpbmRvdy5EYXRhVmlldykpIHJldHVybiAi -RGF0YVZpZXciOwogICAgfQogICAgcmV0dXJuIHRhZzsKICB9CiAgZnVuY3Rpb24gcHJvdG90eXBlRm9y -VGFnSUUodGFnKSB7CiAgICB2YXIgY29uc3RydWN0b3IgPSB3aW5kb3dbdGFnXTsKICAgIGlmIChjb25z -dHJ1Y3RvciA9PSBudWxsKSByZXR1cm4gbnVsbDsKICAgIHJldHVybiBjb25zdHJ1Y3Rvci5wcm90b3R5 -cGU7CiAgfQogIGhvb2tzLmdldFRhZyA9IGdldFRhZ0lFOwogIGhvb2tzLnByb3RvdHlwZUZvclRhZyA9 -IHByb3RvdHlwZUZvclRhZ0lFOwp9CkIuaTc9ZnVuY3Rpb24oaG9va3MpIHsgcmV0dXJuIGhvb2tzOyB9 -CgpCLkN0PW5ldyBBLmJ5KCkKQi5FcT1uZXcgQS5rNSgpCkIuenQ9bmV3IEEuSGIoKQpCLnhNPW5ldyBB -LnU1KCkKQi5Raz1uZXcgQS5FMygpCkIuTnY9bmV3IEEua3IoKQpCLk5VPW5ldyBBLkppKCkKQi5wZD1u -ZXcgQS5aZCgpCkIuQTM9bmV3IEEuTXgobnVsbCkKQi5uWD1uZXcgQS5vaihudWxsKQpCLmFrPUEuUUko -cyhbMCwwLDMyNzc2LDMzNzkyLDEsMTAyNDAsMCwwXSksdC50KQpCLmNtPUEuUUkocyhbIio6OmNsYXNz -IiwiKjo6ZGlyIiwiKjo6ZHJhZ2dhYmxlIiwiKjo6aGlkZGVuIiwiKjo6aWQiLCIqOjppbmVydCIsIio6 -Oml0ZW1wcm9wIiwiKjo6aXRlbXJlZiIsIio6Oml0ZW1zY29wZSIsIio6OmxhbmciLCIqOjpzcGVsbGNo -ZWNrIiwiKjo6dGl0bGUiLCIqOjp0cmFuc2xhdGUiLCJBOjphY2Nlc3NrZXkiLCJBOjpjb29yZHMiLCJB -OjpocmVmbGFuZyIsIkE6Om5hbWUiLCJBOjpzaGFwZSIsIkE6OnRhYmluZGV4IiwiQTo6dGFyZ2V0Iiwi -QTo6dHlwZSIsIkFSRUE6OmFjY2Vzc2tleSIsIkFSRUE6OmFsdCIsIkFSRUE6OmNvb3JkcyIsIkFSRUE6 -Om5vaHJlZiIsIkFSRUE6OnNoYXBlIiwiQVJFQTo6dGFiaW5kZXgiLCJBUkVBOjp0YXJnZXQiLCJBVURJ -Tzo6Y29udHJvbHMiLCJBVURJTzo6bG9vcCIsIkFVRElPOjptZWRpYWdyb3VwIiwiQVVESU86Om11dGVk -IiwiQVVESU86OnByZWxvYWQiLCJCRE86OmRpciIsIkJPRFk6OmFsaW5rIiwiQk9EWTo6Ymdjb2xvciIs -IkJPRFk6OmxpbmsiLCJCT0RZOjp0ZXh0IiwiQk9EWTo6dmxpbmsiLCJCUjo6Y2xlYXIiLCJCVVRUT046 -OmFjY2Vzc2tleSIsIkJVVFRPTjo6ZGlzYWJsZWQiLCJCVVRUT046Om5hbWUiLCJCVVRUT046OnRhYmlu -ZGV4IiwiQlVUVE9OOjp0eXBlIiwiQlVUVE9OOjp2YWx1ZSIsIkNBTlZBUzo6aGVpZ2h0IiwiQ0FOVkFT -Ojp3aWR0aCIsIkNBUFRJT046OmFsaWduIiwiQ09MOjphbGlnbiIsIkNPTDo6Y2hhciIsIkNPTDo6Y2hh -cm9mZiIsIkNPTDo6c3BhbiIsIkNPTDo6dmFsaWduIiwiQ09MOjp3aWR0aCIsIkNPTEdST1VQOjphbGln -biIsIkNPTEdST1VQOjpjaGFyIiwiQ09MR1JPVVA6OmNoYXJvZmYiLCJDT0xHUk9VUDo6c3BhbiIsIkNP -TEdST1VQOjp2YWxpZ24iLCJDT0xHUk9VUDo6d2lkdGgiLCJDT01NQU5EOjpjaGVja2VkIiwiQ09NTUFO -RDo6Y29tbWFuZCIsIkNPTU1BTkQ6OmRpc2FibGVkIiwiQ09NTUFORDo6bGFiZWwiLCJDT01NQU5EOjpy -YWRpb2dyb3VwIiwiQ09NTUFORDo6dHlwZSIsIkRBVEE6OnZhbHVlIiwiREVMOjpkYXRldGltZSIsIkRF -VEFJTFM6Om9wZW4iLCJESVI6OmNvbXBhY3QiLCJESVY6OmFsaWduIiwiREw6OmNvbXBhY3QiLCJGSUVM -RFNFVDo6ZGlzYWJsZWQiLCJGT05UOjpjb2xvciIsIkZPTlQ6OmZhY2UiLCJGT05UOjpzaXplIiwiRk9S -TTo6YWNjZXB0IiwiRk9STTo6YXV0b2NvbXBsZXRlIiwiRk9STTo6ZW5jdHlwZSIsIkZPUk06Om1ldGhv -ZCIsIkZPUk06Om5hbWUiLCJGT1JNOjpub3ZhbGlkYXRlIiwiRk9STTo6dGFyZ2V0IiwiRlJBTUU6Om5h -bWUiLCJIMTo6YWxpZ24iLCJIMjo6YWxpZ24iLCJIMzo6YWxpZ24iLCJINDo6YWxpZ24iLCJINTo6YWxp -Z24iLCJINjo6YWxpZ24iLCJIUjo6YWxpZ24iLCJIUjo6bm9zaGFkZSIsIkhSOjpzaXplIiwiSFI6Ondp -ZHRoIiwiSFRNTDo6dmVyc2lvbiIsIklGUkFNRTo6YWxpZ24iLCJJRlJBTUU6OmZyYW1lYm9yZGVyIiwi -SUZSQU1FOjpoZWlnaHQiLCJJRlJBTUU6Om1hcmdpbmhlaWdodCIsIklGUkFNRTo6bWFyZ2lud2lkdGgi -LCJJRlJBTUU6OndpZHRoIiwiSU1HOjphbGlnbiIsIklNRzo6YWx0IiwiSU1HOjpib3JkZXIiLCJJTUc6 -OmhlaWdodCIsIklNRzo6aHNwYWNlIiwiSU1HOjppc21hcCIsIklNRzo6bmFtZSIsIklNRzo6dXNlbWFw -IiwiSU1HOjp2c3BhY2UiLCJJTUc6OndpZHRoIiwiSU5QVVQ6OmFjY2VwdCIsIklOUFVUOjphY2Nlc3Nr -ZXkiLCJJTlBVVDo6YWxpZ24iLCJJTlBVVDo6YWx0IiwiSU5QVVQ6OmF1dG9jb21wbGV0ZSIsIklOUFVU -OjphdXRvZm9jdXMiLCJJTlBVVDo6Y2hlY2tlZCIsIklOUFVUOjpkaXNhYmxlZCIsIklOUFVUOjppbnB1 -dG1vZGUiLCJJTlBVVDo6aXNtYXAiLCJJTlBVVDo6bGlzdCIsIklOUFVUOjptYXgiLCJJTlBVVDo6bWF4 -bGVuZ3RoIiwiSU5QVVQ6Om1pbiIsIklOUFVUOjptdWx0aXBsZSIsIklOUFVUOjpuYW1lIiwiSU5QVVQ6 -OnBsYWNlaG9sZGVyIiwiSU5QVVQ6OnJlYWRvbmx5IiwiSU5QVVQ6OnJlcXVpcmVkIiwiSU5QVVQ6OnNp -emUiLCJJTlBVVDo6c3RlcCIsIklOUFVUOjp0YWJpbmRleCIsIklOUFVUOjp0eXBlIiwiSU5QVVQ6OnVz -ZW1hcCIsIklOUFVUOjp2YWx1ZSIsIklOUzo6ZGF0ZXRpbWUiLCJLRVlHRU46OmRpc2FibGVkIiwiS0VZ -R0VOOjprZXl0eXBlIiwiS0VZR0VOOjpuYW1lIiwiTEFCRUw6OmFjY2Vzc2tleSIsIkxBQkVMOjpmb3Ii -LCJMRUdFTkQ6OmFjY2Vzc2tleSIsIkxFR0VORDo6YWxpZ24iLCJMSTo6dHlwZSIsIkxJOjp2YWx1ZSIs -IkxJTks6OnNpemVzIiwiTUFQOjpuYW1lIiwiTUVOVTo6Y29tcGFjdCIsIk1FTlU6OmxhYmVsIiwiTUVO -VTo6dHlwZSIsIk1FVEVSOjpoaWdoIiwiTUVURVI6OmxvdyIsIk1FVEVSOjptYXgiLCJNRVRFUjo6bWlu -IiwiTUVURVI6OnZhbHVlIiwiT0JKRUNUOjp0eXBlbXVzdG1hdGNoIiwiT0w6OmNvbXBhY3QiLCJPTDo6 -cmV2ZXJzZWQiLCJPTDo6c3RhcnQiLCJPTDo6dHlwZSIsIk9QVEdST1VQOjpkaXNhYmxlZCIsIk9QVEdS -T1VQOjpsYWJlbCIsIk9QVElPTjo6ZGlzYWJsZWQiLCJPUFRJT046OmxhYmVsIiwiT1BUSU9OOjpzZWxl -Y3RlZCIsIk9QVElPTjo6dmFsdWUiLCJPVVRQVVQ6OmZvciIsIk9VVFBVVDo6bmFtZSIsIlA6OmFsaWdu -IiwiUFJFOjp3aWR0aCIsIlBST0dSRVNTOjptYXgiLCJQUk9HUkVTUzo6bWluIiwiUFJPR1JFU1M6OnZh -bHVlIiwiU0VMRUNUOjphdXRvY29tcGxldGUiLCJTRUxFQ1Q6OmRpc2FibGVkIiwiU0VMRUNUOjptdWx0 -aXBsZSIsIlNFTEVDVDo6bmFtZSIsIlNFTEVDVDo6cmVxdWlyZWQiLCJTRUxFQ1Q6OnNpemUiLCJTRUxF -Q1Q6OnRhYmluZGV4IiwiU09VUkNFOjp0eXBlIiwiVEFCTEU6OmFsaWduIiwiVEFCTEU6OmJnY29sb3Ii -LCJUQUJMRTo6Ym9yZGVyIiwiVEFCTEU6OmNlbGxwYWRkaW5nIiwiVEFCTEU6OmNlbGxzcGFjaW5nIiwi -VEFCTEU6OmZyYW1lIiwiVEFCTEU6OnJ1bGVzIiwiVEFCTEU6OnN1bW1hcnkiLCJUQUJMRTo6d2lkdGgi -LCJUQk9EWTo6YWxpZ24iLCJUQk9EWTo6Y2hhciIsIlRCT0RZOjpjaGFyb2ZmIiwiVEJPRFk6OnZhbGln -biIsIlREOjphYmJyIiwiVEQ6OmFsaWduIiwiVEQ6OmF4aXMiLCJURDo6Ymdjb2xvciIsIlREOjpjaGFy -IiwiVEQ6OmNoYXJvZmYiLCJURDo6Y29sc3BhbiIsIlREOjpoZWFkZXJzIiwiVEQ6OmhlaWdodCIsIlRE -Ojpub3dyYXAiLCJURDo6cm93c3BhbiIsIlREOjpzY29wZSIsIlREOjp2YWxpZ24iLCJURDo6d2lkdGgi -LCJURVhUQVJFQTo6YWNjZXNza2V5IiwiVEVYVEFSRUE6OmF1dG9jb21wbGV0ZSIsIlRFWFRBUkVBOjpj -b2xzIiwiVEVYVEFSRUE6OmRpc2FibGVkIiwiVEVYVEFSRUE6OmlucHV0bW9kZSIsIlRFWFRBUkVBOjpu -YW1lIiwiVEVYVEFSRUE6OnBsYWNlaG9sZGVyIiwiVEVYVEFSRUE6OnJlYWRvbmx5IiwiVEVYVEFSRUE6 -OnJlcXVpcmVkIiwiVEVYVEFSRUE6OnJvd3MiLCJURVhUQVJFQTo6dGFiaW5kZXgiLCJURVhUQVJFQTo6 -d3JhcCIsIlRGT09UOjphbGlnbiIsIlRGT09UOjpjaGFyIiwiVEZPT1Q6OmNoYXJvZmYiLCJURk9PVDo6 -dmFsaWduIiwiVEg6OmFiYnIiLCJUSDo6YWxpZ24iLCJUSDo6YXhpcyIsIlRIOjpiZ2NvbG9yIiwiVEg6 -OmNoYXIiLCJUSDo6Y2hhcm9mZiIsIlRIOjpjb2xzcGFuIiwiVEg6OmhlYWRlcnMiLCJUSDo6aGVpZ2h0 -IiwiVEg6Om5vd3JhcCIsIlRIOjpyb3dzcGFuIiwiVEg6OnNjb3BlIiwiVEg6OnZhbGlnbiIsIlRIOjp3 -aWR0aCIsIlRIRUFEOjphbGlnbiIsIlRIRUFEOjpjaGFyIiwiVEhFQUQ6OmNoYXJvZmYiLCJUSEVBRDo6 -dmFsaWduIiwiVFI6OmFsaWduIiwiVFI6OmJnY29sb3IiLCJUUjo6Y2hhciIsIlRSOjpjaGFyb2ZmIiwi -VFI6OnZhbGlnbiIsIlRSQUNLOjpkZWZhdWx0IiwiVFJBQ0s6OmtpbmQiLCJUUkFDSzo6bGFiZWwiLCJU -UkFDSzo6c3JjbGFuZyIsIlVMOjpjb21wYWN0IiwiVUw6OnR5cGUiLCJWSURFTzo6Y29udHJvbHMiLCJW -SURFTzo6aGVpZ2h0IiwiVklERU86Omxvb3AiLCJWSURFTzo6bWVkaWFncm91cCIsIlZJREVPOjptdXRl -ZCIsIlZJREVPOjpwcmVsb2FkIiwiVklERU86OndpZHRoIl0pLHQucykKQi5WQz1BLlFJKHMoWzAsMCw2 -NTQ5MCw0NTA1NSw2NTUzNSwzNDgxNSw2NTUzNCwxODQzMV0pLHQudCkKQi5tSz1BLlFJKHMoWzAsMCwy -NjYyNCwxMDIzLDY1NTM0LDIwNDcsNjU1MzQsMjA0N10pLHQudCkKQi5jdz1uZXcgQS5HYigwLCJhbHJl -YWR5TWlncmF0ZWQiKQpCLmRjPW5ldyBBLkdiKDEsImluZGV0ZXJtaW5hdGUiKQpCLldEPW5ldyBBLkdi -KDIsIm1pZ3JhdGluZyIpCkIuWGo9bmV3IEEuR2IoMywib3B0aW5nT3V0IikKQi5XRz1BLlFJKHMoW0Iu -Y3csQi5kYyxCLldELEIuWGpdKSxBLk4wKCJqZDxHYj4iKSkKQi5TcT1BLlFJKHMoWyJIRUFEIiwiQVJF -QSIsIkJBU0UiLCJCQVNFRk9OVCIsIkJSIiwiQ09MIiwiQ09MR1JPVVAiLCJFTUJFRCIsIkZSQU1FIiwi -RlJBTUVTRVQiLCJIUiIsIklNQUdFIiwiSU1HIiwiSU5QVVQiLCJJU0lOREVYIiwiTElOSyIsIk1FVEEi -LCJQQVJBTSIsIlNPVVJDRSIsIlNUWUxFIiwiVElUTEUiLCJXQlIiXSksdC5zKQpCLmRuPUEuUUkocyhb -XSksQS5OMCgiamQ8TEw+IikpCkIueEQ9QS5RSShzKFtdKSx0LnMpCkIuaFU9QS5RSShzKFtdKSx0LmIp -CkIuQWQ9bmV3IEEuSDcoMCwiYWRkTnVsbGFibGVIaW50IikKQi5uZT1uZXcgQS5INygxLCJhZGROb25O -dWxsYWJsZUhpbnQiKQpCLm15PW5ldyBBLkg3KDIsImNoYW5nZVRvTnVsbGFibGVIaW50IikKQi5yeD1u -ZXcgQS5INygzLCJjaGFuZ2VUb05vbk51bGxhYmxlSGludCIpCkIud1Y9bmV3IEEuSDcoNCwicmVtb3Zl -TnVsbGFibGVIaW50IikKQi5mUj1uZXcgQS5INyg1LCJyZW1vdmVOb25OdWxsYWJsZUhpbnQiKQpCLk1t -PUEuUUkocyhbQi5BZCxCLm5lLEIubXksQi5yeCxCLndWLEIuZlJdKSxBLk4wKCJqZDxINz4iKSkKQi50 -bz1BLlFJKHMoWzAsMCwzMjcyMiwxMjI4Nyw2NTUzNCwzNDgxNSw2NTUzNCwxODQzMV0pLHQudCkKQi5G -Mz1BLlFJKHMoWzAsMCwyNDU3NiwxMDIzLDY1NTM0LDM0ODE1LDY1NTM0LDE4NDMxXSksdC50KQpCLmVh -PUEuUUkocyhbMCwwLDMyNzU0LDExMjYzLDY1NTM0LDM0ODE1LDY1NTM0LDE4NDMxXSksdC50KQpCLlpK -PUEuUUkocyhbMCwwLDMyNzIyLDEyMjg3LDY1NTM1LDM0ODE1LDY1NTM0LDE4NDMxXSksdC50KQpCLldk -PUEuUUkocyhbMCwwLDY1NDkwLDEyMjg3LDY1NTM1LDM0ODE1LDY1NTM0LDE4NDMxXSksdC50KQpCLlF4 -PUEuUUkocyhbImJpbmQiLCJpZiIsInJlZiIsInJlcGVhdCIsInN5bnRheCJdKSx0LnMpCkIuQkk9QS5R -SShzKFsiQTo6aHJlZiIsIkFSRUE6OmhyZWYiLCJCTE9DS1FVT1RFOjpjaXRlIiwiQk9EWTo6YmFja2dy -b3VuZCIsIkNPTU1BTkQ6Omljb24iLCJERUw6OmNpdGUiLCJGT1JNOjphY3Rpb24iLCJJTUc6OnNyYyIs -IklOUFVUOjpzcmMiLCJJTlM6OmNpdGUiLCJROjpjaXRlIiwiVklERU86OnBvc3RlciJdKSx0LnMpCkIu -RHg9bmV3IEEuTFAoMCx7fSxCLnhELEEuTjAoIkxQPHFVLHpNPGo4Pj4iKSkKQi5DTT1uZXcgQS5MUCgw -LHt9LEIueEQsQS5OMCgiTFA8cVUscVU+IikpCkIuaUg9QS5RSShzKFtdKSxBLk4wKCJqZDxHRD4iKSkK -Qi5XTz1uZXcgQS5MUCgwLHt9LEIuaUgsQS5OMCgiTFA8R0QsQD4iKSkKQi5ZMj1uZXcgQS5POSgwLCJk -aXJlY3RvcnkiKQpCLnJmPW5ldyBBLk85KDEsImZpbGUiKQpCLlRlPW5ldyBBLnd2KCJjYWxsIikKQi5M -eT1BLnhxKCJNaCIpCkIub0U9bmV3IEEuR1koITEpCkIud1E9bmV3IEEuRnkobnVsbCwyKX0pKCk7KGZ1 -bmN0aW9uIHN0YXRpY0ZpZWxkcygpeyQuem09bnVsbAokLnh1PW51bGwKJC5pMD1udWxsCiQuQWw9bnVs -bAokLk5GPW51bGwKJC5UWD1udWxsCiQueDc9bnVsbAokLm53PW51bGwKJC52dj1udWxsCiQuQnY9bnVs -bAokLlM2PW51bGwKJC5rOD1udWxsCiQubWc9bnVsbAokLlVEPSExCiQuWDM9Qi5OVQokLno9QS5RSShb -XSxBLk4wKCJqZDxNaD4iKSkKJC54bz1udWxsCiQuQk89bnVsbAokLmx0PW51bGwKJC5FVT1udWxsCiQu -b3I9QS5GbCh0Lk4sdC5ZKQokLklSPW51bGwKJC5JNj1udWxsCiQuRmY9bnVsbH0pKCk7KGZ1bmN0aW9u -IGxhenlJbml0aWFsaXplcnMoKXt2YXIgcz1odW5rSGVscGVycy5sYXp5RmluYWwscj1odW5rSGVscGVy -cy5sYXp5CnMoJCwiZmEiLCJ3IiwoKT0+QS5ZZygiXyRkYXJ0X2RhcnRDbG9zdXJlIikpCnMoJCwiS3Ei -LCJTbiIsKCk9PkEuY00oQS5TNyh7CnRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIiRyZWNlaXZlciQi -fX0pKSkKcygkLCJZbiIsImxxIiwoKT0+QS5jTShBLlM3KHskbWV0aG9kJDpudWxsLAp0b1N0cmluZzpm -dW5jdGlvbigpe3JldHVybiIkcmVjZWl2ZXIkIn19KSkpCnMoJCwiUjEiLCJOOSIsKCk9PkEuY00oQS5T -NyhudWxsKSkpCnMoJCwiZk4iLCJpSSIsKCk9PkEuY00oZnVuY3Rpb24oKXt2YXIgJGFyZ3VtZW50c0V4 -cHIkPSIkYXJndW1lbnRzJCIKdHJ5e251bGwuJG1ldGhvZCQoJGFyZ3VtZW50c0V4cHIkKX1jYXRjaChx -KXtyZXR1cm4gcS5tZXNzYWdlfX0oKSkpCnMoJCwicWkiLCJVTiIsKCk9PkEuY00oQS5TNyh2b2lkIDAp -KSkKcygkLCJwdiIsIlpoIiwoKT0+QS5jTShmdW5jdGlvbigpe3ZhciAkYXJndW1lbnRzRXhwciQ9IiRh -cmd1bWVudHMkIgp0cnl7KHZvaWQgMCkuJG1ldGhvZCQoJGFyZ3VtZW50c0V4cHIkKX1jYXRjaChxKXty -ZXR1cm4gcS5tZXNzYWdlfX0oKSkpCnMoJCwia3EiLCJyTiIsKCk9PkEuY00oQS5NaihudWxsKSkpCnMo -JCwidHQiLCJjMyIsKCk9PkEuY00oZnVuY3Rpb24oKXt0cnl7bnVsbC4kbWV0aG9kJH1jYXRjaChxKXty -ZXR1cm4gcS5tZXNzYWdlfX0oKSkpCnMoJCwiZHQiLCJISyIsKCk9PkEuY00oQS5Naih2b2lkIDApKSkK -cygkLCJBNyIsInIxIiwoKT0+QS5jTShmdW5jdGlvbigpe3RyeXsodm9pZCAwKS4kbWV0aG9kJH1jYXRj -aChxKXtyZXR1cm4gcS5tZXNzYWdlfX0oKSkpCnMoJCwiV2MiLCJ1dCIsKCk9PkEueGcoKSkKcygkLCJr -aCIsInJmIiwoKT0+bmV3IEEueHIoKS4kMCgpKQpzKCQsImRIIiwiSEciLCgpPT5uZXcgQS5OeigpLiQw -KCkpCnMoJCwiaGoiLCJWNyIsKCk9Pm5ldyBJbnQ4QXJyYXkoQS5YRihBLlFJKFstMiwtMiwtMiwtMiwt -MiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwt -MiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMiwtMSwtMiwtMiwtMiwtMiwtMiw2Miwt -Miw2MiwtMiw2Myw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSwtMiwtMiwtMiwtMSwtMiwtMiwt -MiwwLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIy -LDIzLDI0LDI1LC0yLC0yLC0yLC0yLDYzLC0yLDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2 -LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLC0yLC0yLC0yLC0yLC0y -XSx0LnQpKSkpCnMoJCwiWWUiLCJ3USIsKCk9PnR5cGVvZiBwcm9jZXNzIT0idW5kZWZpbmVkIiYmT2Jq -ZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHByb2Nlc3MpPT0iW29iamVjdCBwcm9jZXNzXSImJnBy -b2Nlc3MucGxhdGZvcm09PSJ3aW4zMiIpCnMoJCwibWYiLCJ6NCIsKCk9PkEubnUoIl5bXFwtXFwuMC05 -QS1aX2Eten5dKiQiKSkKcygkLCJYMCIsInQ4IiwoKT0+QS5DVShCLkx5KSkKcygkLCJPUSIsInZaIiwo -KT0+QS5LTigpKQpzKCQsIlNDIiwiQU4iLCgpPT5BLnRNKFsiQSIsIkFCQlIiLCJBQ1JPTllNIiwiQURE -UkVTUyIsIkFSRUEiLCJBUlRJQ0xFIiwiQVNJREUiLCJBVURJTyIsIkIiLCJCREkiLCJCRE8iLCJCSUci -LCJCTE9DS1FVT1RFIiwiQlIiLCJCVVRUT04iLCJDQU5WQVMiLCJDQVBUSU9OIiwiQ0VOVEVSIiwiQ0lU -RSIsIkNPREUiLCJDT0wiLCJDT0xHUk9VUCIsIkNPTU1BTkQiLCJEQVRBIiwiREFUQUxJU1QiLCJERCIs -IkRFTCIsIkRFVEFJTFMiLCJERk4iLCJESVIiLCJESVYiLCJETCIsIkRUIiwiRU0iLCJGSUVMRFNFVCIs -IkZJR0NBUFRJT04iLCJGSUdVUkUiLCJGT05UIiwiRk9PVEVSIiwiRk9STSIsIkgxIiwiSDIiLCJIMyIs -Ikg0IiwiSDUiLCJINiIsIkhFQURFUiIsIkhHUk9VUCIsIkhSIiwiSSIsIklGUkFNRSIsIklNRyIsIklO -UFVUIiwiSU5TIiwiS0JEIiwiTEFCRUwiLCJMRUdFTkQiLCJMSSIsIk1BUCIsIk1BUksiLCJNRU5VIiwi -TUVURVIiLCJOQVYiLCJOT0JSIiwiT0wiLCJPUFRHUk9VUCIsIk9QVElPTiIsIk9VVFBVVCIsIlAiLCJQ -UkUiLCJQUk9HUkVTUyIsIlEiLCJTIiwiU0FNUCIsIlNFQ1RJT04iLCJTRUxFQ1QiLCJTTUFMTCIsIlNP -VVJDRSIsIlNQQU4iLCJTVFJJS0UiLCJTVFJPTkciLCJTVUIiLCJTVU1NQVJZIiwiU1VQIiwiVEFCTEUi -LCJUQk9EWSIsIlREIiwiVEVYVEFSRUEiLCJURk9PVCIsIlRIIiwiVEhFQUQiLCJUSU1FIiwiVFIiLCJU -UkFDSyIsIlRUIiwiVSIsIlVMIiwiVkFSIiwiVklERU8iLCJXQlIiXSx0Lk4pKQpzKCQsIlg0IiwiaEci -LCgpPT5BLm51KCJeXFxTKyQiKSkKcygkLCJ3TyIsIm93IiwoKT0+QS5ORChzZWxmKSkKcygkLCJrdCIs -IlI4IiwoKT0+QS5ZZygiXyRkYXJ0X2RhcnRPYmplY3QiKSkKcygkLCJmSyIsImtJIiwoKT0+ZnVuY3Rp -b24gRGFydE9iamVjdChhKXt0aGlzLm89YX0pCnMoJCwicXQiLCJ6QiIsKCk9Pm5ldyBBLm1RKCkpCnMo -JCwiQ2siLCJVRSIsKCk9PkEuaEsoQi5vbC5nbVcoQS54MygpKS5ocmVmKS5naFkoKS5xKDAsImF1dGhU -b2tlbiIpKQpzKCQsImhUIiwieVAiLCgpPT5BLlpyKCkucXVlcnlTZWxlY3RvcigiLmVkaXQtbGlzdCAu -cGFuZWwtY29udGVudCIpKQpzKCQsImFVIiwiRFoiLCgpPT5BLlpyKCkucXVlcnlTZWxlY3RvcigiLmVk -aXQtbGlzdCAucGFuZWwtaGVhZGluZyIpKQpzKCQsIlc2IiwiaEwiLCgpPT5BLlpyKCkucXVlcnlTZWxl -Y3RvcigiLmVkaXQtcGFuZWwgLnBhbmVsLWNvbnRlbnQiKSkKcygkLCJUUiIsIkRXIiwoKT0+QS5acigp -LnF1ZXJ5U2VsZWN0b3IoImZvb3RlciIpKQpzKCQsIkVZIiwiZmkiLCgpPT5BLlpyKCkucXVlcnlTZWxl -Y3RvcigiaGVhZGVyIikpCnMoJCwiYkEiLCJjMCIsKCk9PkEuWnIoKS5xdWVyeVNlbGVjdG9yKCIjbWln -cmF0ZS11bml0LXN0YXR1cy1pY29uIikpCnMoJCwidDAiLCJiTiIsKCk9PkEuWnIoKS5xdWVyeVNlbGVj -dG9yKCIjbWlncmF0ZS11bml0LXN0YXR1cy1pY29uLWxhYmVsIikpCnMoJCwiYXYiLCJEOSIsKCk9PkEu -WnIoKS5xdWVyeVNlbGVjdG9yKCIjdW5pdC1uYW1lIikpCnIoJCwiZmUiLCJLRyIsKCk9Pm5ldyBBLlhB -KCkpCnMoJCwiZW8iLCJuVSIsKCk9Pm5ldyBBLmxJKEEuTjAoImZ2IikuYSgkLkhrKCkpKSkKcygkLCJ5 -ciIsImJEIiwoKT0+bmV3IEEuT0YoQS5udSgiLyIpLEEubnUoIlteL10kIiksQS5udSgiXi8iKSkpCnMo -JCwiTWsiLCJLayIsKCk9Pm5ldyBBLklWKEEubnUoIlsvXFxcXF0iKSxBLm51KCJbXi9cXFxcXSQiKSxB -Lm51KCJeKFxcXFxcXFxcW15cXFxcXStcXFxcW15cXFxcL10rfFthLXpBLVpdOlsvXFxcXF0pIiksQS5u -dSgiXlsvXFxcXF0oPyFbL1xcXFxdKSIpKSkKcygkLCJhayIsIkViIiwoKT0+bmV3IEEucnUoQS5udSgi -LyIpLEEubnUoIiheW2EtekEtWl1bLSsuYS16QS1aXFxkXSo6Ly98W14vXSkkIiksQS5udSgiW2EtekEt -Wl1bLSsuYS16QS1aXFxkXSo6Ly9bXi9dKiIpLEEubnUoIl4vIikpKQpzKCQsImxzIiwiSGsiLCgpPT5B -LlJoKCkpfSkoKTsoZnVuY3Rpb24gbmF0aXZlU3VwcG9ydCgpeyFmdW5jdGlvbigpe3ZhciBzPWZ1bmN0 -aW9uKGEpe3ZhciBtPXt9Cm1bYV09MQpyZXR1cm4gT2JqZWN0LmtleXMoaHVua0hlbHBlcnMuY29udmVy -dFRvRmFzdE9iamVjdChtKSlbMF19CnYuZ2V0SXNvbGF0ZVRhZz1mdW5jdGlvbihhKXtyZXR1cm4gcygi -X19fZGFydF8iK2Erdi5pc29sYXRlVGFnKX0KdmFyIHI9Il9fX2RhcnRfaXNvbGF0ZV90YWdzXyIKdmFy -IHE9T2JqZWN0W3JdfHwoT2JqZWN0W3JdPU9iamVjdC5jcmVhdGUobnVsbCkpCnZhciBwPSJfWnhZeFgi -CmZvcih2YXIgbz0wOztvKyspe3ZhciBuPXMocCsiXyIrbysiXyIpCmlmKCEobiBpbiBxKSl7cVtuXT0x -CnYuaXNvbGF0ZVRhZz1uCmJyZWFrfX12LmRpc3BhdGNoUHJvcGVydHlOYW1lPXYuZ2V0SXNvbGF0ZVRh -ZygiZGlzcGF0Y2hfcmVjb3JkIil9KCkKaHVua0hlbHBlcnMuc2V0T3JVcGRhdGVJbnRlcmNlcHRvcnNC -eVRhZyh7RE9NRXJyb3I6Si5NRixNZWRpYUVycm9yOkouTUYsTmF2aWdhdG9yOkouTUYsTmF2aWdhdG9y -Q29uY3VycmVudEhhcmR3YXJlOkouTUYsTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6Si5NRixPdmVyY29u -c3RyYWluZWRFcnJvcjpKLk1GLFBvc2l0aW9uRXJyb3I6Si5NRixHZW9sb2NhdGlvblBvc2l0aW9uRXJy -b3I6Si5NRixSYW5nZTpKLk1GLERhdGFWaWV3OkEuRVQsQXJyYXlCdWZmZXJWaWV3OkEuRVQsRmxvYXQz -MkFycmF5OkEuRGcsRmxvYXQ2NEFycmF5OkEuRGcsSW50MTZBcnJheTpBLnhqLEludDMyQXJyYXk6QS5k -RSxJbnQ4QXJyYXk6QS5aQSxVaW50MTZBcnJheTpBLmRULFVpbnQzMkFycmF5OkEuUHEsVWludDhDbGFt -cGVkQXJyYXk6QS5lRSxDYW52YXNQaXhlbEFycmF5OkEuZUUsVWludDhBcnJheTpBLlY2LEhUTUxBdWRp -b0VsZW1lbnQ6QS5xRSxIVE1MQlJFbGVtZW50OkEucUUsSFRNTEJ1dHRvbkVsZW1lbnQ6QS5xRSxIVE1M -Q2FudmFzRWxlbWVudDpBLnFFLEhUTUxDb250ZW50RWxlbWVudDpBLnFFLEhUTUxETGlzdEVsZW1lbnQ6 -QS5xRSxIVE1MRGF0YUVsZW1lbnQ6QS5xRSxIVE1MRGF0YUxpc3RFbGVtZW50OkEucUUsSFRNTERldGFp -bHNFbGVtZW50OkEucUUsSFRNTERpYWxvZ0VsZW1lbnQ6QS5xRSxIVE1MRGl2RWxlbWVudDpBLnFFLEhU -TUxFbWJlZEVsZW1lbnQ6QS5xRSxIVE1MRmllbGRTZXRFbGVtZW50OkEucUUsSFRNTEhSRWxlbWVudDpB -LnFFLEhUTUxIZWFkRWxlbWVudDpBLnFFLEhUTUxIZWFkaW5nRWxlbWVudDpBLnFFLEhUTUxIdG1sRWxl -bWVudDpBLnFFLEhUTUxJRnJhbWVFbGVtZW50OkEucUUsSFRNTEltYWdlRWxlbWVudDpBLnFFLEhUTUxJ -bnB1dEVsZW1lbnQ6QS5xRSxIVE1MTElFbGVtZW50OkEucUUsSFRNTExhYmVsRWxlbWVudDpBLnFFLEhU -TUxMZWdlbmRFbGVtZW50OkEucUUsSFRNTExpbmtFbGVtZW50OkEucUUsSFRNTE1hcEVsZW1lbnQ6QS5x -RSxIVE1MTWVkaWFFbGVtZW50OkEucUUsSFRNTE1lbnVFbGVtZW50OkEucUUsSFRNTE1ldGFFbGVtZW50 -OkEucUUsSFRNTE1ldGVyRWxlbWVudDpBLnFFLEhUTUxNb2RFbGVtZW50OkEucUUsSFRNTE9MaXN0RWxl -bWVudDpBLnFFLEhUTUxPYmplY3RFbGVtZW50OkEucUUsSFRNTE9wdEdyb3VwRWxlbWVudDpBLnFFLEhU -TUxPcHRpb25FbGVtZW50OkEucUUsSFRNTE91dHB1dEVsZW1lbnQ6QS5xRSxIVE1MUGFyYW1FbGVtZW50 -OkEucUUsSFRNTFBpY3R1cmVFbGVtZW50OkEucUUsSFRNTFByZUVsZW1lbnQ6QS5xRSxIVE1MUHJvZ3Jl -c3NFbGVtZW50OkEucUUsSFRNTFF1b3RlRWxlbWVudDpBLnFFLEhUTUxTY3JpcHRFbGVtZW50OkEucUUs -SFRNTFNoYWRvd0VsZW1lbnQ6QS5xRSxIVE1MU2xvdEVsZW1lbnQ6QS5xRSxIVE1MU291cmNlRWxlbWVu -dDpBLnFFLEhUTUxTcGFuRWxlbWVudDpBLnFFLEhUTUxTdHlsZUVsZW1lbnQ6QS5xRSxIVE1MVGFibGVD -YXB0aW9uRWxlbWVudDpBLnFFLEhUTUxUYWJsZUNlbGxFbGVtZW50OkEucUUsSFRNTFRhYmxlRGF0YUNl -bGxFbGVtZW50OkEucUUsSFRNTFRhYmxlSGVhZGVyQ2VsbEVsZW1lbnQ6QS5xRSxIVE1MVGFibGVDb2xF -bGVtZW50OkEucUUsSFRNTFRleHRBcmVhRWxlbWVudDpBLnFFLEhUTUxUaW1lRWxlbWVudDpBLnFFLEhU -TUxUaXRsZUVsZW1lbnQ6QS5xRSxIVE1MVHJhY2tFbGVtZW50OkEucUUsSFRNTFVMaXN0RWxlbWVudDpB -LnFFLEhUTUxVbmtub3duRWxlbWVudDpBLnFFLEhUTUxWaWRlb0VsZW1lbnQ6QS5xRSxIVE1MRGlyZWN0 -b3J5RWxlbWVudDpBLnFFLEhUTUxGb250RWxlbWVudDpBLnFFLEhUTUxGcmFtZUVsZW1lbnQ6QS5xRSxI -VE1MRnJhbWVTZXRFbGVtZW50OkEucUUsSFRNTE1hcnF1ZWVFbGVtZW50OkEucUUsSFRNTEVsZW1lbnQ6 -QS5xRSxIVE1MQW5jaG9yRWxlbWVudDpBLkdoLEhUTUxBcmVhRWxlbWVudDpBLmZZLEhUTUxCYXNlRWxl -bWVudDpBLnJaLEJsb2I6QS5BeixIVE1MQm9keUVsZW1lbnQ6QS5RUCxDREFUQVNlY3Rpb246QS5ueCxD -aGFyYWN0ZXJEYXRhOkEubngsQ29tbWVudDpBLm54LFByb2Nlc3NpbmdJbnN0cnVjdGlvbjpBLm54LFRl -eHQ6QS5ueCxDU1NTdHlsZURlY2xhcmF0aW9uOkEub0osTVNTdHlsZUNTU1Byb3BlcnRpZXM6QS5vSixD -U1MyUHJvcGVydGllczpBLm9KLFhNTERvY3VtZW50OkEuUUYsRG9jdW1lbnQ6QS5RRixET01FeGNlcHRp -b246QS5OaCxET01JbXBsZW1lbnRhdGlvbjpBLmFlLERPTVJlY3RSZWFkT25seTpBLklCLERPTVRva2Vu -TGlzdDpBLm43LEVsZW1lbnQ6QS5jdixBYm9ydFBheW1lbnRFdmVudDpBLmVhLEFuaW1hdGlvbkV2ZW50 -OkEuZWEsQW5pbWF0aW9uUGxheWJhY2tFdmVudDpBLmVhLEFwcGxpY2F0aW9uQ2FjaGVFcnJvckV2ZW50 -OkEuZWEsQmFja2dyb3VuZEZldGNoQ2xpY2tFdmVudDpBLmVhLEJhY2tncm91bmRGZXRjaEV2ZW50OkEu -ZWEsQmFja2dyb3VuZEZldGNoRmFpbEV2ZW50OkEuZWEsQmFja2dyb3VuZEZldGNoZWRFdmVudDpBLmVh -LEJlZm9yZUluc3RhbGxQcm9tcHRFdmVudDpBLmVhLEJlZm9yZVVubG9hZEV2ZW50OkEuZWEsQmxvYkV2 -ZW50OkEuZWEsQ2FuTWFrZVBheW1lbnRFdmVudDpBLmVhLENsaXBib2FyZEV2ZW50OkEuZWEsQ2xvc2VF -dmVudDpBLmVhLEN1c3RvbUV2ZW50OkEuZWEsRGV2aWNlTW90aW9uRXZlbnQ6QS5lYSxEZXZpY2VPcmll -bnRhdGlvbkV2ZW50OkEuZWEsRXJyb3JFdmVudDpBLmVhLEV4dGVuZGFibGVFdmVudDpBLmVhLEV4dGVu -ZGFibGVNZXNzYWdlRXZlbnQ6QS5lYSxGZXRjaEV2ZW50OkEuZWEsRm9udEZhY2VTZXRMb2FkRXZlbnQ6 -QS5lYSxGb3JlaWduRmV0Y2hFdmVudDpBLmVhLEdhbWVwYWRFdmVudDpBLmVhLEhhc2hDaGFuZ2VFdmVu -dDpBLmVhLEluc3RhbGxFdmVudDpBLmVhLE1lZGlhRW5jcnlwdGVkRXZlbnQ6QS5lYSxNZWRpYUtleU1l -c3NhZ2VFdmVudDpBLmVhLE1lZGlhUXVlcnlMaXN0RXZlbnQ6QS5lYSxNZWRpYVN0cmVhbUV2ZW50OkEu -ZWEsTWVkaWFTdHJlYW1UcmFja0V2ZW50OkEuZWEsTWVzc2FnZUV2ZW50OkEuZWEsTUlESUNvbm5lY3Rp -b25FdmVudDpBLmVhLE1JRElNZXNzYWdlRXZlbnQ6QS5lYSxNdXRhdGlvbkV2ZW50OkEuZWEsTm90aWZp -Y2F0aW9uRXZlbnQ6QS5lYSxQYWdlVHJhbnNpdGlvbkV2ZW50OkEuZWEsUGF5bWVudFJlcXVlc3RFdmVu -dDpBLmVhLFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQ6QS5lYSxQb3BTdGF0ZUV2ZW50OkEuZWEsUHJl -c2VudGF0aW9uQ29ubmVjdGlvbkF2YWlsYWJsZUV2ZW50OkEuZWEsUHJlc2VudGF0aW9uQ29ubmVjdGlv -bkNsb3NlRXZlbnQ6QS5lYSxQcm9taXNlUmVqZWN0aW9uRXZlbnQ6QS5lYSxQdXNoRXZlbnQ6QS5lYSxS -VENEYXRhQ2hhbm5lbEV2ZW50OkEuZWEsUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDpBLmVhLFJUQ1BlZXJD -b25uZWN0aW9uSWNlRXZlbnQ6QS5lYSxSVENUcmFja0V2ZW50OkEuZWEsU2VjdXJpdHlQb2xpY3lWaW9s -YXRpb25FdmVudDpBLmVhLFNlbnNvckVycm9yRXZlbnQ6QS5lYSxTcGVlY2hSZWNvZ25pdGlvbkVycm9y -OkEuZWEsU3BlZWNoUmVjb2duaXRpb25FdmVudDpBLmVhLFNwZWVjaFN5bnRoZXNpc0V2ZW50OkEuZWEs -U3RvcmFnZUV2ZW50OkEuZWEsU3luY0V2ZW50OkEuZWEsVHJhY2tFdmVudDpBLmVhLFRyYW5zaXRpb25F -dmVudDpBLmVhLFdlYktpdFRyYW5zaXRpb25FdmVudDpBLmVhLFZSRGV2aWNlRXZlbnQ6QS5lYSxWUkRp -c3BsYXlFdmVudDpBLmVhLFZSU2Vzc2lvbkV2ZW50OkEuZWEsTW9qb0ludGVyZmFjZVJlcXVlc3RFdmVu -dDpBLmVhLFVTQkNvbm5lY3Rpb25FdmVudDpBLmVhLElEQlZlcnNpb25DaGFuZ2VFdmVudDpBLmVhLEF1 -ZGlvUHJvY2Vzc2luZ0V2ZW50OkEuZWEsT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50OkEuZWEsV2Vi -R0xDb250ZXh0RXZlbnQ6QS5lYSxFdmVudDpBLmVhLElucHV0RXZlbnQ6QS5lYSxTdWJtaXRFdmVudDpB -LmVhLEV2ZW50VGFyZ2V0OkEuRDAsRmlsZTpBLmhILEhUTUxGb3JtRWxlbWVudDpBLmg0LEhpc3Rvcnk6 -QS5icixIVE1MRG9jdW1lbnQ6QS5WYixYTUxIdHRwUmVxdWVzdDpBLmZKLFhNTEh0dHBSZXF1ZXN0RXZl -bnRUYXJnZXQ6QS53YSxJbWFnZURhdGE6QS5TZyxMb2NhdGlvbjpBLnU4LE1vdXNlRXZlbnQ6QS5BaixE -cmFnRXZlbnQ6QS5BaixQb2ludGVyRXZlbnQ6QS5BaixXaGVlbEV2ZW50OkEuQWosRG9jdW1lbnRGcmFn -bWVudDpBLktWLFNoYWRvd1Jvb3Q6QS5LVixEb2N1bWVudFR5cGU6QS5LVixOb2RlOkEuS1YsTm9kZUxp -c3Q6QS5CSCxSYWRpb05vZGVMaXN0OkEuQkgsSFRNTFBhcmFncmFwaEVsZW1lbnQ6QS5TTixQcm9ncmVz -c0V2ZW50OkEuZXcsUmVzb3VyY2VQcm9ncmVzc0V2ZW50OkEuZXcsSFRNTFNlbGVjdEVsZW1lbnQ6QS5s -cCxIVE1MVGFibGVFbGVtZW50OkEuVGIsSFRNTFRhYmxlUm93RWxlbWVudDpBLkl2LEhUTUxUYWJsZVNl -Y3Rpb25FbGVtZW50OkEuV1AsSFRNTFRlbXBsYXRlRWxlbWVudDpBLnlZLENvbXBvc2l0aW9uRXZlbnQ6 -QS53NixGb2N1c0V2ZW50OkEudzYsS2V5Ym9hcmRFdmVudDpBLnc2LFRleHRFdmVudDpBLnc2LFRvdWNo -RXZlbnQ6QS53NixVSUV2ZW50OkEudzYsV2luZG93OkEuSzUsRE9NV2luZG93OkEuSzUsRGVkaWNhdGVk -V29ya2VyR2xvYmFsU2NvcGU6QS5DbSxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6QS5DbSxTaGFyZWRX -b3JrZXJHbG9iYWxTY29wZTpBLkNtLFdvcmtlckdsb2JhbFNjb3BlOkEuQ20sQXR0cjpBLkNRLENsaWVu -dFJlY3Q6QS53NCxET01SZWN0OkEudzQsTmFtZWROb2RlTWFwOkEucmgsTW96TmFtZWRBdHRyTWFwOkEu -cmgsSURCS2V5UmFuZ2U6QS5oRixTVkdTY3JpcHRFbGVtZW50OkEubmQsU1ZHQUVsZW1lbnQ6QS5oaSxT -VkdBbmltYXRlRWxlbWVudDpBLmhpLFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OkEuaGksU1ZHQW5pbWF0 -ZVRyYW5zZm9ybUVsZW1lbnQ6QS5oaSxTVkdBbmltYXRpb25FbGVtZW50OkEuaGksU1ZHQ2lyY2xlRWxl -bWVudDpBLmhpLFNWR0NsaXBQYXRoRWxlbWVudDpBLmhpLFNWR0RlZnNFbGVtZW50OkEuaGksU1ZHRGVz -Y0VsZW1lbnQ6QS5oaSxTVkdEaXNjYXJkRWxlbWVudDpBLmhpLFNWR0VsbGlwc2VFbGVtZW50OkEuaGks -U1ZHRkVCbGVuZEVsZW1lbnQ6QS5oaSxTVkdGRUNvbG9yTWF0cml4RWxlbWVudDpBLmhpLFNWR0ZFQ29t -cG9uZW50VHJhbnNmZXJFbGVtZW50OkEuaGksU1ZHRkVDb21wb3NpdGVFbGVtZW50OkEuaGksU1ZHRkVD -b252b2x2ZU1hdHJpeEVsZW1lbnQ6QS5oaSxTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6QS5oaSxT -VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6QS5oaSxTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQ6QS5o -aSxTVkdGRUZsb29kRWxlbWVudDpBLmhpLFNWR0ZFRnVuY0FFbGVtZW50OkEuaGksU1ZHRkVGdW5jQkVs -ZW1lbnQ6QS5oaSxTVkdGRUZ1bmNHRWxlbWVudDpBLmhpLFNWR0ZFRnVuY1JFbGVtZW50OkEuaGksU1ZH -RkVHYXVzc2lhbkJsdXJFbGVtZW50OkEuaGksU1ZHRkVJbWFnZUVsZW1lbnQ6QS5oaSxTVkdGRU1lcmdl -RWxlbWVudDpBLmhpLFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDpBLmhpLFNWR0ZFTW9ycGhvbG9neUVsZW1l -bnQ6QS5oaSxTVkdGRU9mZnNldEVsZW1lbnQ6QS5oaSxTVkdGRVBvaW50TGlnaHRFbGVtZW50OkEuaGks -U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDpBLmhpLFNWR0ZFU3BvdExpZ2h0RWxlbWVudDpBLmhp -LFNWR0ZFVGlsZUVsZW1lbnQ6QS5oaSxTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OkEuaGksU1ZHRmlsdGVy -RWxlbWVudDpBLmhpLFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OkEuaGksU1ZHR0VsZW1lbnQ6QS5oaSxT -VkdHZW9tZXRyeUVsZW1lbnQ6QS5oaSxTVkdHcmFwaGljc0VsZW1lbnQ6QS5oaSxTVkdJbWFnZUVsZW1l -bnQ6QS5oaSxTVkdMaW5lRWxlbWVudDpBLmhpLFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDpBLmhpLFNW -R01hcmtlckVsZW1lbnQ6QS5oaSxTVkdNYXNrRWxlbWVudDpBLmhpLFNWR01ldGFkYXRhRWxlbWVudDpB -LmhpLFNWR1BhdGhFbGVtZW50OkEuaGksU1ZHUGF0dGVybkVsZW1lbnQ6QS5oaSxTVkdQb2x5Z29uRWxl -bWVudDpBLmhpLFNWR1BvbHlsaW5lRWxlbWVudDpBLmhpLFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDpB -LmhpLFNWR1JlY3RFbGVtZW50OkEuaGksU1ZHU2V0RWxlbWVudDpBLmhpLFNWR1N0b3BFbGVtZW50OkEu -aGksU1ZHU3R5bGVFbGVtZW50OkEuaGksU1ZHU1ZHRWxlbWVudDpBLmhpLFNWR1N3aXRjaEVsZW1lbnQ6 -QS5oaSxTVkdTeW1ib2xFbGVtZW50OkEuaGksU1ZHVFNwYW5FbGVtZW50OkEuaGksU1ZHVGV4dENvbnRl -bnRFbGVtZW50OkEuaGksU1ZHVGV4dEVsZW1lbnQ6QS5oaSxTVkdUZXh0UGF0aEVsZW1lbnQ6QS5oaSxT -VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OkEuaGksU1ZHVGl0bGVFbGVtZW50OkEuaGksU1ZHVXNlRWxl -bWVudDpBLmhpLFNWR1ZpZXdFbGVtZW50OkEuaGksU1ZHR3JhZGllbnRFbGVtZW50OkEuaGksU1ZHQ29t -cG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6QS5oaSxTVkdGRURyb3BTaGFkb3dFbGVtZW50OkEu -aGksU1ZHTVBhdGhFbGVtZW50OkEuaGksU1ZHRWxlbWVudDpBLmhpfSkKaHVua0hlbHBlcnMuc2V0T3JV -cGRhdGVMZWFmVGFncyh7RE9NRXJyb3I6dHJ1ZSxNZWRpYUVycm9yOnRydWUsTmF2aWdhdG9yOnRydWUs -TmF2aWdhdG9yQ29uY3VycmVudEhhcmR3YXJlOnRydWUsTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6dHJ1 -ZSxPdmVyY29uc3RyYWluZWRFcnJvcjp0cnVlLFBvc2l0aW9uRXJyb3I6dHJ1ZSxHZW9sb2NhdGlvblBv -c2l0aW9uRXJyb3I6dHJ1ZSxSYW5nZTp0cnVlLERhdGFWaWV3OnRydWUsQXJyYXlCdWZmZXJWaWV3OmZh -bHNlLEZsb2F0MzJBcnJheTp0cnVlLEZsb2F0NjRBcnJheTp0cnVlLEludDE2QXJyYXk6dHJ1ZSxJbnQz -MkFycmF5OnRydWUsSW50OEFycmF5OnRydWUsVWludDE2QXJyYXk6dHJ1ZSxVaW50MzJBcnJheTp0cnVl -LFVpbnQ4Q2xhbXBlZEFycmF5OnRydWUsQ2FudmFzUGl4ZWxBcnJheTp0cnVlLFVpbnQ4QXJyYXk6ZmFs -c2UsSFRNTEF1ZGlvRWxlbWVudDp0cnVlLEhUTUxCUkVsZW1lbnQ6dHJ1ZSxIVE1MQnV0dG9uRWxlbWVu -dDp0cnVlLEhUTUxDYW52YXNFbGVtZW50OnRydWUsSFRNTENvbnRlbnRFbGVtZW50OnRydWUsSFRNTERM -aXN0RWxlbWVudDp0cnVlLEhUTUxEYXRhRWxlbWVudDp0cnVlLEhUTUxEYXRhTGlzdEVsZW1lbnQ6dHJ1 -ZSxIVE1MRGV0YWlsc0VsZW1lbnQ6dHJ1ZSxIVE1MRGlhbG9nRWxlbWVudDp0cnVlLEhUTUxEaXZFbGVt -ZW50OnRydWUsSFRNTEVtYmVkRWxlbWVudDp0cnVlLEhUTUxGaWVsZFNldEVsZW1lbnQ6dHJ1ZSxIVE1M -SFJFbGVtZW50OnRydWUsSFRNTEhlYWRFbGVtZW50OnRydWUsSFRNTEhlYWRpbmdFbGVtZW50OnRydWUs -SFRNTEh0bWxFbGVtZW50OnRydWUsSFRNTElGcmFtZUVsZW1lbnQ6dHJ1ZSxIVE1MSW1hZ2VFbGVtZW50 -OnRydWUsSFRNTElucHV0RWxlbWVudDp0cnVlLEhUTUxMSUVsZW1lbnQ6dHJ1ZSxIVE1MTGFiZWxFbGVt -ZW50OnRydWUsSFRNTExlZ2VuZEVsZW1lbnQ6dHJ1ZSxIVE1MTGlua0VsZW1lbnQ6dHJ1ZSxIVE1MTWFw -RWxlbWVudDp0cnVlLEhUTUxNZWRpYUVsZW1lbnQ6dHJ1ZSxIVE1MTWVudUVsZW1lbnQ6dHJ1ZSxIVE1M -TWV0YUVsZW1lbnQ6dHJ1ZSxIVE1MTWV0ZXJFbGVtZW50OnRydWUsSFRNTE1vZEVsZW1lbnQ6dHJ1ZSxI -VE1MT0xpc3RFbGVtZW50OnRydWUsSFRNTE9iamVjdEVsZW1lbnQ6dHJ1ZSxIVE1MT3B0R3JvdXBFbGVt -ZW50OnRydWUsSFRNTE9wdGlvbkVsZW1lbnQ6dHJ1ZSxIVE1MT3V0cHV0RWxlbWVudDp0cnVlLEhUTUxQ -YXJhbUVsZW1lbnQ6dHJ1ZSxIVE1MUGljdHVyZUVsZW1lbnQ6dHJ1ZSxIVE1MUHJlRWxlbWVudDp0cnVl -LEhUTUxQcm9ncmVzc0VsZW1lbnQ6dHJ1ZSxIVE1MUXVvdGVFbGVtZW50OnRydWUsSFRNTFNjcmlwdEVs -ZW1lbnQ6dHJ1ZSxIVE1MU2hhZG93RWxlbWVudDp0cnVlLEhUTUxTbG90RWxlbWVudDp0cnVlLEhUTUxT -b3VyY2VFbGVtZW50OnRydWUsSFRNTFNwYW5FbGVtZW50OnRydWUsSFRNTFN0eWxlRWxlbWVudDp0cnVl -LEhUTUxUYWJsZUNhcHRpb25FbGVtZW50OnRydWUsSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6dHJ1ZSxIVE1M -VGFibGVEYXRhQ2VsbEVsZW1lbnQ6dHJ1ZSxIVE1MVGFibGVIZWFkZXJDZWxsRWxlbWVudDp0cnVlLEhU -TUxUYWJsZUNvbEVsZW1lbnQ6dHJ1ZSxIVE1MVGV4dEFyZWFFbGVtZW50OnRydWUsSFRNTFRpbWVFbGVt -ZW50OnRydWUsSFRNTFRpdGxlRWxlbWVudDp0cnVlLEhUTUxUcmFja0VsZW1lbnQ6dHJ1ZSxIVE1MVUxp -c3RFbGVtZW50OnRydWUsSFRNTFVua25vd25FbGVtZW50OnRydWUsSFRNTFZpZGVvRWxlbWVudDp0cnVl -LEhUTUxEaXJlY3RvcnlFbGVtZW50OnRydWUsSFRNTEZvbnRFbGVtZW50OnRydWUsSFRNTEZyYW1lRWxl -bWVudDp0cnVlLEhUTUxGcmFtZVNldEVsZW1lbnQ6dHJ1ZSxIVE1MTWFycXVlZUVsZW1lbnQ6dHJ1ZSxI -VE1MRWxlbWVudDpmYWxzZSxIVE1MQW5jaG9yRWxlbWVudDp0cnVlLEhUTUxBcmVhRWxlbWVudDp0cnVl -LEhUTUxCYXNlRWxlbWVudDp0cnVlLEJsb2I6ZmFsc2UsSFRNTEJvZHlFbGVtZW50OnRydWUsQ0RBVEFT -ZWN0aW9uOnRydWUsQ2hhcmFjdGVyRGF0YTp0cnVlLENvbW1lbnQ6dHJ1ZSxQcm9jZXNzaW5nSW5zdHJ1 -Y3Rpb246dHJ1ZSxUZXh0OnRydWUsQ1NTU3R5bGVEZWNsYXJhdGlvbjp0cnVlLE1TU3R5bGVDU1NQcm9w -ZXJ0aWVzOnRydWUsQ1NTMlByb3BlcnRpZXM6dHJ1ZSxYTUxEb2N1bWVudDp0cnVlLERvY3VtZW50OmZh -bHNlLERPTUV4Y2VwdGlvbjp0cnVlLERPTUltcGxlbWVudGF0aW9uOnRydWUsRE9NUmVjdFJlYWRPbmx5 -OmZhbHNlLERPTVRva2VuTGlzdDp0cnVlLEVsZW1lbnQ6ZmFsc2UsQWJvcnRQYXltZW50RXZlbnQ6dHJ1 -ZSxBbmltYXRpb25FdmVudDp0cnVlLEFuaW1hdGlvblBsYXliYWNrRXZlbnQ6dHJ1ZSxBcHBsaWNhdGlv -bkNhY2hlRXJyb3JFdmVudDp0cnVlLEJhY2tncm91bmRGZXRjaENsaWNrRXZlbnQ6dHJ1ZSxCYWNrZ3Jv -dW5kRmV0Y2hFdmVudDp0cnVlLEJhY2tncm91bmRGZXRjaEZhaWxFdmVudDp0cnVlLEJhY2tncm91bmRG -ZXRjaGVkRXZlbnQ6dHJ1ZSxCZWZvcmVJbnN0YWxsUHJvbXB0RXZlbnQ6dHJ1ZSxCZWZvcmVVbmxvYWRF -dmVudDp0cnVlLEJsb2JFdmVudDp0cnVlLENhbk1ha2VQYXltZW50RXZlbnQ6dHJ1ZSxDbGlwYm9hcmRF -dmVudDp0cnVlLENsb3NlRXZlbnQ6dHJ1ZSxDdXN0b21FdmVudDp0cnVlLERldmljZU1vdGlvbkV2ZW50 -OnRydWUsRGV2aWNlT3JpZW50YXRpb25FdmVudDp0cnVlLEVycm9yRXZlbnQ6dHJ1ZSxFeHRlbmRhYmxl -RXZlbnQ6dHJ1ZSxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50OnRydWUsRmV0Y2hFdmVudDp0cnVlLEZvbnRG -YWNlU2V0TG9hZEV2ZW50OnRydWUsRm9yZWlnbkZldGNoRXZlbnQ6dHJ1ZSxHYW1lcGFkRXZlbnQ6dHJ1 -ZSxIYXNoQ2hhbmdlRXZlbnQ6dHJ1ZSxJbnN0YWxsRXZlbnQ6dHJ1ZSxNZWRpYUVuY3J5cHRlZEV2ZW50 -OnRydWUsTWVkaWFLZXlNZXNzYWdlRXZlbnQ6dHJ1ZSxNZWRpYVF1ZXJ5TGlzdEV2ZW50OnRydWUsTWVk -aWFTdHJlYW1FdmVudDp0cnVlLE1lZGlhU3RyZWFtVHJhY2tFdmVudDp0cnVlLE1lc3NhZ2VFdmVudDp0 -cnVlLE1JRElDb25uZWN0aW9uRXZlbnQ6dHJ1ZSxNSURJTWVzc2FnZUV2ZW50OnRydWUsTXV0YXRpb25F -dmVudDp0cnVlLE5vdGlmaWNhdGlvbkV2ZW50OnRydWUsUGFnZVRyYW5zaXRpb25FdmVudDp0cnVlLFBh -eW1lbnRSZXF1ZXN0RXZlbnQ6dHJ1ZSxQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50OnRydWUsUG9wU3Rh -dGVFdmVudDp0cnVlLFByZXNlbnRhdGlvbkNvbm5lY3Rpb25BdmFpbGFibGVFdmVudDp0cnVlLFByZXNl -bnRhdGlvbkNvbm5lY3Rpb25DbG9zZUV2ZW50OnRydWUsUHJvbWlzZVJlamVjdGlvbkV2ZW50OnRydWUs -UHVzaEV2ZW50OnRydWUsUlRDRGF0YUNoYW5uZWxFdmVudDp0cnVlLFJUQ0RUTUZUb25lQ2hhbmdlRXZl -bnQ6dHJ1ZSxSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50OnRydWUsUlRDVHJhY2tFdmVudDp0cnVlLFNl -Y3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQ6dHJ1ZSxTZW5zb3JFcnJvckV2ZW50OnRydWUsU3BlZWNo -UmVjb2duaXRpb25FcnJvcjp0cnVlLFNwZWVjaFJlY29nbml0aW9uRXZlbnQ6dHJ1ZSxTcGVlY2hTeW50 -aGVzaXNFdmVudDp0cnVlLFN0b3JhZ2VFdmVudDp0cnVlLFN5bmNFdmVudDp0cnVlLFRyYWNrRXZlbnQ6 -dHJ1ZSxUcmFuc2l0aW9uRXZlbnQ6dHJ1ZSxXZWJLaXRUcmFuc2l0aW9uRXZlbnQ6dHJ1ZSxWUkRldmlj -ZUV2ZW50OnRydWUsVlJEaXNwbGF5RXZlbnQ6dHJ1ZSxWUlNlc3Npb25FdmVudDp0cnVlLE1vam9JbnRl -cmZhY2VSZXF1ZXN0RXZlbnQ6dHJ1ZSxVU0JDb25uZWN0aW9uRXZlbnQ6dHJ1ZSxJREJWZXJzaW9uQ2hh -bmdlRXZlbnQ6dHJ1ZSxBdWRpb1Byb2Nlc3NpbmdFdmVudDp0cnVlLE9mZmxpbmVBdWRpb0NvbXBsZXRp -b25FdmVudDp0cnVlLFdlYkdMQ29udGV4dEV2ZW50OnRydWUsRXZlbnQ6ZmFsc2UsSW5wdXRFdmVudDpm -YWxzZSxTdWJtaXRFdmVudDpmYWxzZSxFdmVudFRhcmdldDpmYWxzZSxGaWxlOnRydWUsSFRNTEZvcm1F -bGVtZW50OnRydWUsSGlzdG9yeTp0cnVlLEhUTUxEb2N1bWVudDp0cnVlLFhNTEh0dHBSZXF1ZXN0OnRy -dWUsWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDpmYWxzZSxJbWFnZURhdGE6dHJ1ZSxMb2NhdGlvbjp0 -cnVlLE1vdXNlRXZlbnQ6dHJ1ZSxEcmFnRXZlbnQ6dHJ1ZSxQb2ludGVyRXZlbnQ6dHJ1ZSxXaGVlbEV2 -ZW50OnRydWUsRG9jdW1lbnRGcmFnbWVudDp0cnVlLFNoYWRvd1Jvb3Q6dHJ1ZSxEb2N1bWVudFR5cGU6 -dHJ1ZSxOb2RlOmZhbHNlLE5vZGVMaXN0OnRydWUsUmFkaW9Ob2RlTGlzdDp0cnVlLEhUTUxQYXJhZ3Jh -cGhFbGVtZW50OnRydWUsUHJvZ3Jlc3NFdmVudDp0cnVlLFJlc291cmNlUHJvZ3Jlc3NFdmVudDp0cnVl -LEhUTUxTZWxlY3RFbGVtZW50OnRydWUsSFRNTFRhYmxlRWxlbWVudDp0cnVlLEhUTUxUYWJsZVJvd0Vs -ZW1lbnQ6dHJ1ZSxIVE1MVGFibGVTZWN0aW9uRWxlbWVudDp0cnVlLEhUTUxUZW1wbGF0ZUVsZW1lbnQ6 -dHJ1ZSxDb21wb3NpdGlvbkV2ZW50OnRydWUsRm9jdXNFdmVudDp0cnVlLEtleWJvYXJkRXZlbnQ6dHJ1 -ZSxUZXh0RXZlbnQ6dHJ1ZSxUb3VjaEV2ZW50OnRydWUsVUlFdmVudDpmYWxzZSxXaW5kb3c6dHJ1ZSxE -T01XaW5kb3c6dHJ1ZSxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTp0cnVlLFNlcnZpY2VXb3JrZXJH -bG9iYWxTY29wZTp0cnVlLFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOnRydWUsV29ya2VyR2xvYmFsU2Nv -cGU6dHJ1ZSxBdHRyOnRydWUsQ2xpZW50UmVjdDp0cnVlLERPTVJlY3Q6dHJ1ZSxOYW1lZE5vZGVNYXA6 -dHJ1ZSxNb3pOYW1lZEF0dHJNYXA6dHJ1ZSxJREJLZXlSYW5nZTp0cnVlLFNWR1NjcmlwdEVsZW1lbnQ6 -dHJ1ZSxTVkdBRWxlbWVudDp0cnVlLFNWR0FuaW1hdGVFbGVtZW50OnRydWUsU1ZHQW5pbWF0ZU1vdGlv -bkVsZW1lbnQ6dHJ1ZSxTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDp0cnVlLFNWR0FuaW1hdGlvbkVs -ZW1lbnQ6dHJ1ZSxTVkdDaXJjbGVFbGVtZW50OnRydWUsU1ZHQ2xpcFBhdGhFbGVtZW50OnRydWUsU1ZH -RGVmc0VsZW1lbnQ6dHJ1ZSxTVkdEZXNjRWxlbWVudDp0cnVlLFNWR0Rpc2NhcmRFbGVtZW50OnRydWUs -U1ZHRWxsaXBzZUVsZW1lbnQ6dHJ1ZSxTVkdGRUJsZW5kRWxlbWVudDp0cnVlLFNWR0ZFQ29sb3JNYXRy -aXhFbGVtZW50OnRydWUsU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6dHJ1ZSxTVkdGRUNvbXBv -c2l0ZUVsZW1lbnQ6dHJ1ZSxTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDp0cnVlLFNWR0ZFRGlmZnVz -ZUxpZ2h0aW5nRWxlbWVudDp0cnVlLFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDp0cnVlLFNWR0ZF -RGlzdGFudExpZ2h0RWxlbWVudDp0cnVlLFNWR0ZFRmxvb2RFbGVtZW50OnRydWUsU1ZHRkVGdW5jQUVs -ZW1lbnQ6dHJ1ZSxTVkdGRUZ1bmNCRWxlbWVudDp0cnVlLFNWR0ZFRnVuY0dFbGVtZW50OnRydWUsU1ZH -RkVGdW5jUkVsZW1lbnQ6dHJ1ZSxTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6dHJ1ZSxTVkdGRUltYWdl -RWxlbWVudDp0cnVlLFNWR0ZFTWVyZ2VFbGVtZW50OnRydWUsU1ZHRkVNZXJnZU5vZGVFbGVtZW50OnRy -dWUsU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDp0cnVlLFNWR0ZFT2Zmc2V0RWxlbWVudDp0cnVlLFNWR0ZF -UG9pbnRMaWdodEVsZW1lbnQ6dHJ1ZSxTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OnRydWUsU1ZH -RkVTcG90TGlnaHRFbGVtZW50OnRydWUsU1ZHRkVUaWxlRWxlbWVudDp0cnVlLFNWR0ZFVHVyYnVsZW5j -ZUVsZW1lbnQ6dHJ1ZSxTVkdGaWx0ZXJFbGVtZW50OnRydWUsU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6 -dHJ1ZSxTVkdHRWxlbWVudDp0cnVlLFNWR0dlb21ldHJ5RWxlbWVudDp0cnVlLFNWR0dyYXBoaWNzRWxl -bWVudDp0cnVlLFNWR0ltYWdlRWxlbWVudDp0cnVlLFNWR0xpbmVFbGVtZW50OnRydWUsU1ZHTGluZWFy -R3JhZGllbnRFbGVtZW50OnRydWUsU1ZHTWFya2VyRWxlbWVudDp0cnVlLFNWR01hc2tFbGVtZW50OnRy -dWUsU1ZHTWV0YWRhdGFFbGVtZW50OnRydWUsU1ZHUGF0aEVsZW1lbnQ6dHJ1ZSxTVkdQYXR0ZXJuRWxl -bWVudDp0cnVlLFNWR1BvbHlnb25FbGVtZW50OnRydWUsU1ZHUG9seWxpbmVFbGVtZW50OnRydWUsU1ZH -UmFkaWFsR3JhZGllbnRFbGVtZW50OnRydWUsU1ZHUmVjdEVsZW1lbnQ6dHJ1ZSxTVkdTZXRFbGVtZW50 -OnRydWUsU1ZHU3RvcEVsZW1lbnQ6dHJ1ZSxTVkdTdHlsZUVsZW1lbnQ6dHJ1ZSxTVkdTVkdFbGVtZW50 -OnRydWUsU1ZHU3dpdGNoRWxlbWVudDp0cnVlLFNWR1N5bWJvbEVsZW1lbnQ6dHJ1ZSxTVkdUU3BhbkVs -ZW1lbnQ6dHJ1ZSxTVkdUZXh0Q29udGVudEVsZW1lbnQ6dHJ1ZSxTVkdUZXh0RWxlbWVudDp0cnVlLFNW -R1RleHRQYXRoRWxlbWVudDp0cnVlLFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6dHJ1ZSxTVkdUaXRs -ZUVsZW1lbnQ6dHJ1ZSxTVkdVc2VFbGVtZW50OnRydWUsU1ZHVmlld0VsZW1lbnQ6dHJ1ZSxTVkdHcmFk -aWVudEVsZW1lbnQ6dHJ1ZSxTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDp0cnVlLFNW -R0ZFRHJvcFNoYWRvd0VsZW1lbnQ6dHJ1ZSxTVkdNUGF0aEVsZW1lbnQ6dHJ1ZSxTVkdFbGVtZW50OmZh -bHNlfSkKQS5MWi4kbmF0aXZlU3VwZXJjbGFzc1RhZz0iQXJyYXlCdWZmZXJWaWV3IgpBLlJHLiRuYXRp -dmVTdXBlcmNsYXNzVGFnPSJBcnJheUJ1ZmZlclZpZXciCkEuVlAuJG5hdGl2ZVN1cGVyY2xhc3NUYWc9 -IkFycmF5QnVmZmVyVmlldyIKQS5EZy4kbmF0aXZlU3VwZXJjbGFzc1RhZz0iQXJyYXlCdWZmZXJWaWV3 -IgpBLldCLiRuYXRpdmVTdXBlcmNsYXNzVGFnPSJBcnJheUJ1ZmZlclZpZXciCkEuWkcuJG5hdGl2ZVN1 -cGVyY2xhc3NUYWc9IkFycmF5QnVmZmVyVmlldyIKQS5QZy4kbmF0aXZlU3VwZXJjbGFzc1RhZz0iQXJy -YXlCdWZmZXJWaWV3In0pKCkKY29udmVydEFsbFRvRmFzdE9iamVjdCh3KQpjb252ZXJ0VG9GYXN0T2Jq -ZWN0KCQpOyhmdW5jdGlvbihhKXtpZih0eXBlb2YgZG9jdW1lbnQ9PT0idW5kZWZpbmVkIil7YShudWxs -KQpyZXR1cm59aWYodHlwZW9mIGRvY3VtZW50LmN1cnJlbnRTY3JpcHQhPSJ1bmRlZmluZWQiKXthKGRv -Y3VtZW50LmN1cnJlbnRTY3JpcHQpCnJldHVybn12YXIgcz1kb2N1bWVudC5zY3JpcHRzCmZ1bmN0aW9u -IG9uTG9hZChiKXtmb3IodmFyIHE9MDtxPHMubGVuZ3RoOysrcSlzW3FdLnJlbW92ZUV2ZW50TGlzdGVu -ZXIoImxvYWQiLG9uTG9hZCxmYWxzZSkKYShiLnRhcmdldCl9Zm9yKHZhciByPTA7cjxzLmxlbmd0aDsr -K3Ipc1tyXS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixvbkxvYWQsZmFsc2UpfSkoZnVuY3Rpb24oYSl7 -di5jdXJyZW50U2NyaXB0PWEKdmFyIHM9QS5JcQppZih0eXBlb2YgZGFydE1haW5SdW5uZXI9PT0iZnVu -Y3Rpb24iKWRhcnRNYWluUnVubmVyKHMsW10pCmVsc2UgcyhbXSl9KX0pKCkKLy8jIHNvdXJjZU1hcHBp -bmdVUkw9bWlncmF0aW9uLmpzLm1hcAo= +KCl9cz1xLmUKcj1zLmxlbmd0aAppZihyIT09MClCLk5tLlk1KHMsci0xLCIiKX0sCnJSKCl7dmFyIHMs +cixxLHAsbyxuLG09dGhpcyxsPUEuUUkoW10sdC5zKQpmb3Iocz1tLmQscj1zLmxlbmd0aCxxPTAscD0w +O3A8cy5sZW5ndGg7cy5sZW5ndGg9PT1yfHwoMCxBLmxrKShzKSwrK3Ape289c1twXQpuPUouaWEobykK +aWYoIShuLkROKG8sIi4iKXx8bi5ETihvLCIiKSkpaWYobi5ETihvLCIuLiIpKXtuPWwubGVuZ3RoCmlm +KG4hPT0wKXtpZigwPj1uKXJldHVybiBBLk9IKGwsLTEpCmwucG9wKCl9ZWxzZSArK3F9ZWxzZSBCLk5t +LmkobCxvKX1pZihtLmI9PW51bGwpQi5ObS5VRyhsLDAsQS5POChxLCIuLiIsITEsdC5OKSkKaWYobC5s +ZW5ndGg9PT0wJiZtLmI9PW51bGwpQi5ObS5pKGwsIi4iKQptLnNuSihsKQpzPW0uYQptLnNQaChBLk84 +KGwubGVuZ3RoKzEscy5nbUkoKSwhMCx0Lk4pKQpyPW0uYgppZihyPT1udWxsfHxsLmxlbmd0aD09PTB8 +fCFzLmRzKHIpKUIuTm0uWTUobS5lLDAsIiIpCnI9bS5iCmlmKHIhPW51bGwmJnM9PT0kLktrKCkpe3Iu +dG9TdHJpbmcKbS5iPUEueXMociwiLyIsIlxcIil9bS5JVigpfSwKIlsiKGEpe3ZhciBzLHIscSxwPXRo +aXMsbz1wLmIKbz1vIT1udWxsPyIiK286IiIKZm9yKHM9MDtzPHAuZC5sZW5ndGg7KytzLG89cSl7cj1w +LmUKaWYoIShzPHIubGVuZ3RoKSlyZXR1cm4gQS5PSChyLHMpCnI9QS5FaihyW3NdKQpxPXAuZAppZigh +KHM8cS5sZW5ndGgpKXJldHVybiBBLk9IKHEscykKcT1vK3IrQS5FaihxW3NdKX1vKz1BLkVqKEIuTm0u +Z3JaKHAuZSkpCnJldHVybiBvLmNoYXJDb2RlQXQoMCk9PTA/bzpvfSwKc25KKGEpe3RoaXMuZD10LmEu +YShhKX0sCnNQaChhKXt0aGlzLmU9dC5hLmEoYSl9fQpBLmR2LnByb3RvdHlwZT17CiJbIihhKXtyZXR1 +cm4iUGF0aEV4Y2VwdGlvbjogIit0aGlzLmF9LAokaVJ6OjF9CkEuekwucHJvdG90eXBlPXsKIlsiKGEp +e3JldHVybiB0aGlzLmdvYyh0aGlzKX19CkEuT0YucHJvdG90eXBlPXsKVWQoYSl7cmV0dXJuIEIueEIu +dGcoYSwiLyIpfSwKcjQoYSl7cmV0dXJuIGE9PT00N30sCmRzKGEpe3ZhciBzPWEubGVuZ3RoCnJldHVy +biBzIT09MCYmQi54Qi5PKGEscy0xKSE9PTQ3fSwKU3AoYSxiKXtpZihhLmxlbmd0aCE9PTAmJkIueEIu +VyhhLDApPT09NDcpcmV0dXJuIDEKcmV0dXJuIDB9LApZcihhKXtyZXR1cm4gdGhpcy5TcChhLCExKX0s +CmhLKGEpe3JldHVybiExfSwKZ29jKCl7cmV0dXJuInBvc2l4In0sCmdtSSgpe3JldHVybiIvIn19CkEu +cnUucHJvdG90eXBlPXsKVWQoYSl7cmV0dXJuIEIueEIudGcoYSwiLyIpfSwKcjQoYSl7cmV0dXJuIGE9 +PT00N30sCmRzKGEpe3ZhciBzPWEubGVuZ3RoCmlmKHM9PT0wKXJldHVybiExCmlmKEIueEIuTyhhLHMt +MSkhPT00NylyZXR1cm4hMApyZXR1cm4gQi54Qi5UYyhhLCI6Ly8iKSYmdGhpcy5ZcihhKT09PXN9LApT +cChhLGIpe3ZhciBzLHIscSxwLG89YS5sZW5ndGgKaWYobz09PTApcmV0dXJuIDAKaWYoQi54Qi5XKGEs +MCk9PT00NylyZXR1cm4gMQpmb3Iocz0wO3M8bzsrK3Mpe3I9Qi54Qi5XKGEscykKaWYocj09PTQ3KXJl +dHVybiAwCmlmKHI9PT01OCl7aWYocz09PTApcmV0dXJuIDAKcT1CLnhCLlhVKGEsIi8iLEIueEIuUWko +YSwiLy8iLHMrMSk/cyszOnMpCmlmKHE8PTApcmV0dXJuIG8KaWYoIWJ8fG88cSszKXJldHVybiBxCmlm +KCFCLnhCLm4oYSwiZmlsZTovLyIpKXJldHVybiBxCmlmKCFBLll1KGEscSsxKSlyZXR1cm4gcQpwPXEr +MwpyZXR1cm4gbz09PXA/cDpxKzR9fXJldHVybiAwfSwKWXIoYSl7cmV0dXJuIHRoaXMuU3AoYSwhMSl9 +LApoSyhhKXtyZXR1cm4gYS5sZW5ndGghPT0wJiZCLnhCLlcoYSwwKT09PTQ3fSwKZ29jKCl7cmV0dXJu +InVybCJ9LApnbUkoKXtyZXR1cm4iLyJ9fQpBLklWLnByb3RvdHlwZT17ClVkKGEpe3JldHVybiBCLnhC +LnRnKGEsIi8iKX0sCnI0KGEpe3JldHVybiBhPT09NDd8fGE9PT05Mn0sCmRzKGEpe3ZhciBzPWEubGVu +Z3RoCmlmKHM9PT0wKXJldHVybiExCnM9Qi54Qi5PKGEscy0xKQpyZXR1cm4hKHM9PT00N3x8cz09PTky +KX0sClNwKGEsYil7dmFyIHMscixxPWEubGVuZ3RoCmlmKHE9PT0wKXJldHVybiAwCnM9Qi54Qi5XKGEs +MCkKaWYocz09PTQ3KXJldHVybiAxCmlmKHM9PT05Mil7aWYocTwyfHxCLnhCLlcoYSwxKSE9PTkyKXJl +dHVybiAxCnI9Qi54Qi5YVShhLCJcXCIsMikKaWYocj4wKXtyPUIueEIuWFUoYSwiXFwiLHIrMSkKaWYo +cj4wKXJldHVybiByfXJldHVybiBxfWlmKHE8MylyZXR1cm4gMAppZighQS5PUyhzKSlyZXR1cm4gMApp +ZihCLnhCLlcoYSwxKSE9PTU4KXJldHVybiAwCnE9Qi54Qi5XKGEsMikKaWYoIShxPT09NDd8fHE9PT05 +MikpcmV0dXJuIDAKcmV0dXJuIDN9LApZcihhKXtyZXR1cm4gdGhpcy5TcChhLCExKX0sCmhLKGEpe3Jl +dHVybiB0aGlzLllyKGEpPT09MX0sCk90KGEsYil7dmFyIHMKaWYoYT09PWIpcmV0dXJuITAKaWYoYT09 +PTQ3KXJldHVybiBiPT09OTIKaWYoYT09PTkyKXJldHVybiBiPT09NDcKaWYoKGFeYikhPT0zMilyZXR1 +cm4hMQpzPWF8MzIKcmV0dXJuIHM+PTk3JiZzPD0xMjJ9LApOYyhhLGIpe3ZhciBzLHIKaWYoYT09PWIp +cmV0dXJuITAKcz1hLmxlbmd0aAppZihzIT09Yi5sZW5ndGgpcmV0dXJuITEKZm9yKHI9MDtyPHM7Kyty +KWlmKCF0aGlzLk90KEIueEIuVyhhLHIpLEIueEIuVyhiLHIpKSlyZXR1cm4hMQpyZXR1cm4hMH0sCmdv +Yygpe3JldHVybiJ3aW5kb3dzIn0sCmdtSSgpe3JldHVybiJcXCJ9fTsoZnVuY3Rpb24gYWxpYXNlcygp +e3ZhciBzPUouR3YucHJvdG90eXBlCnMuVT1zWyJbIl0Kcz1KLnUwLnByb3RvdHlwZQpzLnU9c1siWyJd +CnM9QS5jWC5wcm90b3R5cGUKcy5HRz1zLmV2CnM9QS5NaC5wcm90b3R5cGUKcy54Yj1zWyJbIl0Kcz1B +LmN2LnByb3RvdHlwZQpzLkRXPXMucjYKcz1BLm02LnByb3RvdHlwZQpzLmpGPXMuRWIKcz1BLkU0LnBy +b3RvdHlwZQpzLlVyPXMucQpzLmU0PXMuWTUKcz1BLnZnLnByb3RvdHlwZQpzLmJoPXMuWTV9KSgpOyhm +dW5jdGlvbiBpbnN0YWxsVGVhck9mZnMoKXt2YXIgcz1odW5rSGVscGVycy5fc3RhdGljXzEscj1odW5r +SGVscGVycy5fc3RhdGljXzAscT1odW5rSGVscGVycy5pbnN0YWxsSW5zdGFuY2VUZWFyT2ZmLHA9aHVu +a0hlbHBlcnMuaW5zdGFsbFN0YXRpY1RlYXJPZmYsbz1odW5rSGVscGVycy5faW5zdGFuY2VfMXUKcyhB +LCJFWCIsIlpWIiw1KQpzKEEsInl0Iiwib0EiLDUpCnMoQSwicVciLCJCeiIsNSkKcihBLCJVSSIsImVO +IiwwKQpxKEEuUGYucHJvdG90eXBlLCJnWUoiLDAsMSxudWxsLFsiJDIiLCIkMSJdLFsidzAiLCJwbSJd +LDI4LDAsMCkKcyhBLCJDeSIsIk5DIiwzKQpzKEEsIlBIIiwiTXQiLDIpCnAoQSwicFMiLDQsbnVsbCxb +IiQ0Il0sWyJxRCJdLDYsMCkKcChBLCJWNCIsNCxudWxsLFsiJDQiXSxbIm5aIl0sNiwwKQpvKEEuQXMu +cHJvdG90eXBlLCJndU0iLCJWIiwyKQpzKEEsImlHIiwid1kiLDUzKQpzKEEsIncwIiwiZFUiLDM2KQpz +KEEsImlTIiwiaTYiLDEpfSkoKTsoZnVuY3Rpb24gaW5oZXJpdGFuY2UoKXt2YXIgcz1odW5rSGVscGVy +cy5taXhpbixyPWh1bmtIZWxwZXJzLm1peGluSGFyZCxxPWh1bmtIZWxwZXJzLmluaGVyaXQscD1odW5r +SGVscGVycy5pbmhlcml0TWFueQpxKEEuTWgsbnVsbCkKcChBLk1oLFtBLkZLLEouR3YsSi5tMSxBLmNY +LEEuZVQsQS5YUyxBLm5ZLEEuSGIsQS5hNyxBLkFuLEEuRnUsQS5KQixBLlNVLEEuUmUsQS53dixBLlBu +LEEuV1UsQS5MSSxBLlRwLEEuZjksQS50ZSxBLmJxLEEuWE8sQS5rcixBLllrLEEudmgsQS5ONixBLlZS +LEEuRUssQS5QYixBLnRRLEEuU2QsQS5KYyxBLkcsQS5sWSxBLlczLEEuaWgsQS5GeSxBLkdWLEEuQ3cs +QS5QZixBLkZlLEEudnMsQS5PTSxBLnFoLEEuTU8sQS5rVCxBLnhJLEEubTAsQS5GUCxBLmJuLEEubG0s +QS5sRCxBLktQLEEubGYsQS5XWSxBLlVrLEEuU2gsQS5SdyxBLmJ6LEEuaVAsQS5jayxBLms1LEEuS1ks +QS5DRCxBLmFFLEEuTjMsQS5jOCxBLlpkLEEuTSxBLkRuLEEuUEUsQS5VZixBLmlkLEEuRmssQS5KUSxB +LkdtLEEudkQsQS5tNixBLk93LEEuVzksQS5kVyxBLm1rLEEuS28sQS5pSixBLkU0LEEuZDIsQS5TZSxB +Lk1sLEEueUQsQS53YixBLmo4LEEucXAsQS5tUSxBLlhBLEEuRDgsQS5MTCxBLmxJLEEuekwsQS5XRCxB +LmR2XSkKcChKLkd2LFtKLnlFLEoud2UsSi5NRixKLmpkLEoucUksSi5EcixBLkVUXSkKcChKLk1GLFtK +LnUwLEEuRDAsQS5BeixBLlk4LEEuTmgsQS5hZSxBLklCLEEubjcsQS5lYSxBLmJyLEEuU2csQS51OCxB +Lm5xLEEudEQsQS5oRl0pCnAoSi51MCxbSi5pQyxKLmtkLEouYzVdKQpxKEouUG8sSi5qZCkKcChKLnFJ +LFtKLkw3LEoua0RdKQpwKEEuY1gsW0EuQlIsQS5iUSxBLmkxLEEuVTUsQS5BTSxBLnU2LEEuWFIsQS5t +VyxBLnVuXSkKcChBLkJSLFtBLlp5LEEuUUNdKQpxKEEub2wsQS5aeSkKcShBLlVxLEEuUUMpCnEoQS5q +VixBLlVxKQpwKEEuWFMsW0EuYyxBLkV6LEEuYXosQS52VixBLkVxLEEuQzYsQS5rUyxBLlVkLEEuRixB +LkFULEEubXAsQS51YixBLmRzLEEubGosQS5VVixBLnAsQS5RV10pCnEoQS51eSxBLm5ZKQpwKEEudXks +W0EudzIsQS53eixBLmU3XSkKcShBLnFqLEEudzIpCnAoQS5iUSxbQS5hTCxBLk1CLEEuaTVdKQpwKEEu +YUwsW0EubkgsQS5sSixBLmk4XSkKcShBLnh5LEEuaTEpCnAoQS5BbixbQS5NSCxBLlNPLEEuVTFdKQpx +KEEuZDUsQS5BTSkKcShBLlJVLEEuUG4pCnEoQS5HaixBLlJVKQpxKEEuUEQsQS5HaikKcShBLkxQLEEu +V1UpCnAoQS5UcCxbQS5FMSxBLkF5LEEubGMsQS5kQyxBLlZYLEEudGgsQS5oYSxBLldNLEEucFYsQS5q +WixBLkI1LEEuT1IsQS55USxBLlJaLEEuYzYsQS5xZCxBLkN2LEEudk4sQS5VdixBLkVnLEEuRW8sQS5X +ayxBLklBLEEuR0UsQS5ONyxBLnVRLEEuRFYsQS5QQyxBLlFTLEEubnAsQS5VdCxBLmFOLEEuYjAsQS5l +LEEub1osQS5qcixBLnk4LEEuSGksQS5CVCxBLlBZLEEuTCxBLld4LEEuSG8sQS5JQyxBLmZDLEEuVG0s +QS51ZSxBLkdILEEuUE4sQS5WUyxBLlRELEEuSWYsQS50QixBLm0yLEEuTUQsQS5xNyxBLk5vXSkKcChB +LkUxLFtBLkNqLEEud04sQS5TWCxBLkdzLEEuVTcsQS5yYSxBLnRpLEEuV0YsQS5uMSxBLmNTLEEuVkMs +QS5KVCxBLk1FLEEueTUsQS55SSxBLktTLEEuQTMsQS5mbSxBLkUyLEEuamcsQS5xbCxBLkVFXSkKcShB +LlcwLEEuRXopCnAoQS5sYyxbQS56eCxBLnJUXSkKcShBLmtZLEEuQzYpCnEoQS5pbCxBLllrKQpwKEEu +aWwsW0EuTjUsQS51dyxBLmNmLEEuU3ldKQpwKEEubVcsW0EuS1csQS5xNF0pCnEoQS5MWixBLkVUKQpw +KEEuTFosW0EuUkcsQS5XQl0pCnEoQS5WUCxBLlJHKQpxKEEuRGcsQS5WUCkKcShBLlpHLEEuV0IpCnEo +QS5QZyxBLlpHKQpwKEEuUGcsW0EueGosQS5kRSxBLlpBLEEuZFQsQS5QcSxBLmVFLEEuVjZdKQpxKEEu +aU0sQS5rUykKcChBLkF5LFtBLlZzLEEuRnQsQS55SCxBLmRhLEEub1EsQS52cixBLnJ0LEEuS0YsQS5a +TCxBLlJULEEucnEsQS5SVyxBLnVPLEEuRXYsQS5WcCxBLnhyLEEuTnosQS5WVyxBLm5ULEEuTlksQS5R +TF0pCnEoQS5aZixBLlBmKQpxKEEuSmksQS5tMCkKcShBLlh2LEEuRlApCnEoQS5iNixBLlh2KQpxKEEu +VmosQS5XWSkKcChBLlVrLFtBLkNWLEEuWmksQS5ieV0pCnEoQS53SSxBLmtUKQpwKEEud0ksW0EuVTgs +QS5vaixBLk14LEEuRTMsQS5HWV0pCnEoQS5LOCxBLlVkKQpxKEEudHUsQS5TaCkKcShBLnU1LEEuWmkp +CnAoQS5BVCxbQS5iSixBLmVZXSkKcShBLnFlLEEuRG4pCnAoQS5EMCxbQS5LVixBLndhLEEuSzUsQS5D +bV0pCnAoQS5LVixbQS5jdixBLm54LEEuUUYsQS5DUV0pCnAoQS5jdixbQS5xRSxBLmhpXSkKcChBLnFF +LFtBLkdoLEEuZlksQS5yWixBLlFQLEEuaDQsQS5TTixBLmxwLEEuVGIsQS5JdixBLldQLEEueVldKQpx +KEEub0osQS5ZOCkKcShBLmhILEEuQXopCnEoQS5WYixBLlFGKQpxKEEuZkosQS53YSkKcChBLmVhLFtB +Lnc2LEEuZXddKQpxKEEuQWosQS53NikKcShBLkFyLEEubnEpCnEoQS5CSCxBLkFyKQpxKEEudzQsQS5J +QikKcShBLnVmLEEudEQpCnEoQS5yaCxBLnVmKQpxKEEuaTcsQS5jZikKcShBLkFzLEEuVmopCnAoQS5B +cyxbQS5JNCxBLktlXSkKcShBLlJPLEEucWgpCnEoQS5DcSxBLlJPKQpxKEEueEMsQS5NTykKcShBLmN0 +LEEubTYpCnEoQS5CZixBLmlKKQpwKEEuRTQsW0EucjcsQS52Z10pCnEoQS5UeixBLnZnKQpxKEEubmQs +QS5oaSkKcChBLkQ4LFtBLnZ0LEEuY0RdKQpwKEEuY2ssW0EuTzksQS5HYixBLkg3XSkKcShBLmZ2LEEu +ekwpCnAoQS5mdixbQS5PRixBLnJ1LEEuSVZdKQpzKEEudzIsQS5SZSkKcyhBLlFDLEEubEQpCnMoQS5S +RyxBLmxEKQpzKEEuVlAsQS5TVSkKcyhBLldCLEEubEQpCnMoQS5aRyxBLlNVKQpzKEEublksQS5sRCkK +cyhBLldZLEEubGYpCnMoQS5SVSxBLktQKQpzKEEuRlAsQS5sZikKcyhBLlk4LEEuaWQpCnMoQS5ucSxB +LmxEKQpzKEEuQXIsQS5HbSkKcyhBLnRELEEubEQpCnMoQS51ZixBLkdtKQpyKEEudmcsQS5sRCl9KSgp +CnZhciB2PXt0eXBlVW5pdmVyc2U6e2VDOm5ldyBNYXAoKSx0Ujp7fSxlVDp7fSx0UFY6e30sc0VBOltd +fSxtYW5nbGVkR2xvYmFsTmFtZXM6e0lqOiJpbnQiLENQOiJkb3VibGUiLFpaOiJudW0iLHFVOiJTdHJp +bmciLGEyOiJib29sIixjODoiTnVsbCIsek06Ikxpc3QifSxtYW5nbGVkTmFtZXM6e30sdHlwZXM6WyJ+ +KCkiLCJ+KEFqKSIsInFVKHFVKSIsIkAoQCkiLCJhMihxVSkiLCJ+KH4oKSkiLCJhMihjdixxVSxxVSxK +USkiLCJjOChAKSIsImM4KCkiLCJ+KE1oPyxNaD8pIiwiQCgpIiwifihxVSxAKSIsIn4objYscVUsSWop +IiwifihxVSxxVSkiLCJhMihrRikiLCJ+KE9sPHFVPikiLCJjOChlYSkiLCJiODx+PihBaikiLCJ+KGN2 +KSIsIn4ocVUsSWopIiwiSWooSWosSWopIiwifihAKSIsIn4ocVUscVU/KSIsIm42KEAsQCkiLCJjOChA +LEd6KSIsImEyKEtWKSIsIn4oSWosQCkiLCJ+KGVhKSIsIn4oTWhbR3o/XSkiLCJjOChNaCxHeikiLCJ+ +KEtWLEtWPykiLCJ+KEAsQCkiLCJjOChALEApIiwiYTIoT2w8cVU+KSIsInZzPEA+KEApIiwicjcoQCki +LCJNaD8oQCkiLCJFNChAKSIsIkxMKEApIiwiWjA8cVUsTWg/PihMTCkiLCJjOCh+KCkpIiwiQChxVSki +LCJjOChaMDxxVSxNaD8+PykiLCJjOChNaCxAKSIsIn4oR0QsQCkiLCJ+KGV3KSIsInFVKFowPEAsQD4p +IiwiWjA8cVUscVU+KFowPHFVLHFVPixxVSkiLCJJaihJaixOMzxxVSx6TTxqOD4+KSIsImEyKEg3KSIs +InFVKHFVPykiLCJAKEAscVUpIiwifihxVSxJaj8pIiwiTWg/KE1oPykiLCJUejxAPihAKSJdLGludGVy +Y2VwdG9yc0J5VGFnOm51bGwsbGVhZlRhZ3M6bnVsbCxhcnJheVJ0aTpTeW1ib2woIiR0aSIpfQpBLnhi +KHYudHlwZVVuaXZlcnNlLEpTT04ucGFyc2UoJ3siaUMiOiJ1MCIsImtkIjoidTAiLCJjNSI6InUwIiwi +cngiOiJlYSIsImU1IjoiZWEiLCJZMCI6ImhpIiwidHAiOiJoaSIsIkc4IjoiZXciLCJNciI6InFFIiwi +ZUwiOiJxRSIsIkkwIjoiS1YiLCJocyI6IktWIiwiWGciOiJRRiIsIm5yIjoiQWoiLCJ5NCI6Inc2Iiwi +ZE4iOiJDbSIsInhjIjoibngiLCJrSiI6Im54IiwielUiOiJEZyIsImRmIjoiRVQiLCJ5RSI6eyJhMiI6 +W119LCJ3ZSI6eyJjOCI6W119LCJ1MCI6eyJ2bSI6W119LCJqZCI6eyJ6TSI6WyIxIl0sImJRIjpbIjEi +XSwiY1giOlsiMSJdfSwiUG8iOnsiamQiOlsiMSJdLCJ6TSI6WyIxIl0sImJRIjpbIjEiXSwiY1giOlsi +MSJdfSwibTEiOnsiQW4iOlsiMSJdfSwicUkiOnsiQ1AiOltdLCJaWiI6W119LCJMNyI6eyJDUCI6W10s +IklqIjpbXSwiWloiOltdfSwia0QiOnsiQ1AiOltdLCJaWiI6W119LCJEciI6eyJxVSI6W10sInZYIjpb +XX0sIkJSIjp7ImNYIjpbIjIiXX0sImVUIjp7IkFuIjpbIjIiXX0sIlp5Ijp7IkJSIjpbIjEiLCIyIl0s +ImNYIjpbIjIiXSwiY1guRSI6IjIifSwib2wiOnsiWnkiOlsiMSIsIjIiXSwiQlIiOlsiMSIsIjIiXSwi +YlEiOlsiMiJdLCJjWCI6WyIyIl0sImNYLkUiOiIyIn0sIlVxIjp7ImxEIjpbIjIiXSwiek0iOlsiMiJd +LCJCUiI6WyIxIiwiMiJdLCJiUSI6WyIyIl0sImNYIjpbIjIiXX0sImpWIjp7IlVxIjpbIjEiLCIyIl0s +ImxEIjpbIjIiXSwiek0iOlsiMiJdLCJCUiI6WyIxIiwiMiJdLCJiUSI6WyIyIl0sImNYIjpbIjIiXSwi +bEQuRSI6IjIiLCJjWC5FIjoiMiJ9LCJjIjp7IlhTIjpbXX0sInFqIjp7ImxEIjpbIklqIl0sIlJlIjpb +IklqIl0sInpNIjpbIklqIl0sImJRIjpbIklqIl0sImNYIjpbIklqIl0sImxELkUiOiJJaiIsIlJlLkUi +OiJJaiJ9LCJiUSI6eyJjWCI6WyIxIl19LCJhTCI6eyJiUSI6WyIxIl0sImNYIjpbIjEiXX0sIm5IIjp7 +ImFMIjpbIjEiXSwiYlEiOlsiMSJdLCJjWCI6WyIxIl0sImFMLkUiOiIxIiwiY1guRSI6IjEifSwiYTci +OnsiQW4iOlsiMSJdfSwiaTEiOnsiY1giOlsiMiJdLCJjWC5FIjoiMiJ9LCJ4eSI6eyJpMSI6WyIxIiwi +MiJdLCJiUSI6WyIyIl0sImNYIjpbIjIiXSwiY1guRSI6IjIifSwiTUgiOnsiQW4iOlsiMiJdfSwibEoi +OnsiYUwiOlsiMiJdLCJiUSI6WyIyIl0sImNYIjpbIjIiXSwiYUwuRSI6IjIiLCJjWC5FIjoiMiJ9LCJV +NSI6eyJjWCI6WyIxIl0sImNYLkUiOiIxIn0sIlNPIjp7IkFuIjpbIjEiXX0sIkFNIjp7ImNYIjpbIjEi +XSwiY1guRSI6IjEifSwiZDUiOnsiQU0iOlsiMSJdLCJiUSI6WyIxIl0sImNYIjpbIjEiXSwiY1guRSI6 +IjEifSwiVTEiOnsiQW4iOlsiMSJdfSwiTUIiOnsiYlEiOlsiMSJdLCJjWCI6WyIxIl0sImNYLkUiOiIx +In0sIkZ1Ijp7IkFuIjpbIjEiXX0sInU2Ijp7ImNYIjpbIjEiXSwiY1guRSI6IjEifSwiSkIiOnsiQW4i +OlsiMSJdfSwidzIiOnsibEQiOlsiMSJdLCJSZSI6WyIxIl0sInpNIjpbIjEiXSwiYlEiOlsiMSJdLCJj +WCI6WyIxIl19LCJ3diI6eyJHRCI6W119LCJQRCI6eyJHaiI6WyIxIiwiMiJdLCJSVSI6WyIxIiwiMiJd +LCJQbiI6WyIxIiwiMiJdLCJLUCI6WyIxIiwiMiJdLCJaMCI6WyIxIiwiMiJdfSwiV1UiOnsiWjAiOlsi +MSIsIjIiXX0sIkxQIjp7IldVIjpbIjEiLCIyIl0sIlowIjpbIjEiLCIyIl19LCJYUiI6eyJjWCI6WyIx +Il0sImNYLkUiOiIxIn0sIkxJIjp7InZRIjpbXX0sIlcwIjp7IkV6IjpbXSwiWFMiOltdfSwiYXoiOnsi +WFMiOltdfSwidlYiOnsiWFMiOltdfSwidGUiOnsiUnoiOltdfSwiWE8iOnsiR3oiOltdfSwiVHAiOnsi +RUgiOltdfSwiQXkiOnsiRUgiOltdfSwiRTEiOnsiRUgiOltdfSwibGMiOnsiRUgiOltdfSwiengiOnsi +RUgiOltdfSwiclQiOnsiRUgiOltdfSwiRXEiOnsiWFMiOltdfSwia1kiOnsiWFMiOltdfSwiTjUiOnsi +WWsiOlsiMSIsIjIiXSwiRm8iOlsiMSIsIjIiXSwiWjAiOlsiMSIsIjIiXSwiWWsuSyI6IjEiLCJZay5W +IjoiMiJ9LCJpNSI6eyJiUSI6WyIxIl0sImNYIjpbIjEiXSwiY1guRSI6IjEifSwiTjYiOnsiQW4iOlsi +MSJdfSwiVlIiOnsid0wiOltdLCJ2WCI6W119LCJFSyI6eyJpYiI6W10sIk9kIjpbXX0sIktXIjp7ImNY +IjpbImliIl0sImNYLkUiOiJpYiJ9LCJQYiI6eyJBbiI6WyJpYiJdfSwidFEiOnsiT2QiOltdfSwidW4i +OnsiY1giOlsiT2QiXSwiY1guRSI6Ik9kIn0sIlNkIjp7IkFuIjpbIk9kIl19LCJFVCI6eyJBUyI6W119 +LCJMWiI6eyJYaiI6WyIxIl0sIkVUIjpbXSwiQVMiOltdfSwiRGciOnsibEQiOlsiQ1AiXSwiWGoiOlsi +Q1AiXSwiek0iOlsiQ1AiXSwiRVQiOltdLCJiUSI6WyJDUCJdLCJBUyI6W10sImNYIjpbIkNQIl0sIlNV +IjpbIkNQIl0sImxELkUiOiJDUCJ9LCJQZyI6eyJsRCI6WyJJaiJdLCJYaiI6WyJJaiJdLCJ6TSI6WyJJ +aiJdLCJFVCI6W10sImJRIjpbIklqIl0sIkFTIjpbXSwiY1giOlsiSWoiXSwiU1UiOlsiSWoiXX0sInhq +Ijp7ImxEIjpbIklqIl0sIlhqIjpbIklqIl0sInpNIjpbIklqIl0sIkVUIjpbXSwiYlEiOlsiSWoiXSwi +QVMiOltdLCJjWCI6WyJJaiJdLCJTVSI6WyJJaiJdLCJsRC5FIjoiSWoifSwiZEUiOnsibEQiOlsiSWoi +XSwiWGoiOlsiSWoiXSwiek0iOlsiSWoiXSwiRVQiOltdLCJiUSI6WyJJaiJdLCJBUyI6W10sImNYIjpb +IklqIl0sIlNVIjpbIklqIl0sImxELkUiOiJJaiJ9LCJaQSI6eyJsRCI6WyJJaiJdLCJYaiI6WyJJaiJd +LCJ6TSI6WyJJaiJdLCJFVCI6W10sImJRIjpbIklqIl0sIkFTIjpbXSwiY1giOlsiSWoiXSwiU1UiOlsi +SWoiXSwibEQuRSI6IklqIn0sImRUIjp7ImxEIjpbIklqIl0sIlhqIjpbIklqIl0sInpNIjpbIklqIl0s +IkVUIjpbXSwiYlEiOlsiSWoiXSwiQVMiOltdLCJjWCI6WyJJaiJdLCJTVSI6WyJJaiJdLCJsRC5FIjoi +SWoifSwiUHEiOnsibEQiOlsiSWoiXSwiWGoiOlsiSWoiXSwiek0iOlsiSWoiXSwiRVQiOltdLCJiUSI6 +WyJJaiJdLCJBUyI6W10sImNYIjpbIklqIl0sIlNVIjpbIklqIl0sImxELkUiOiJJaiJ9LCJlRSI6eyJs +RCI6WyJJaiJdLCJYaiI6WyJJaiJdLCJ6TSI6WyJJaiJdLCJFVCI6W10sImJRIjpbIklqIl0sIkFTIjpb +XSwiY1giOlsiSWoiXSwiU1UiOlsiSWoiXSwibEQuRSI6IklqIn0sIlY2Ijp7ImxEIjpbIklqIl0sIm42 +IjpbXSwiWGoiOlsiSWoiXSwiek0iOlsiSWoiXSwiRVQiOltdLCJiUSI6WyJJaiJdLCJBUyI6W10sImNY +IjpbIklqIl0sIlNVIjpbIklqIl0sImxELkUiOiJJaiJ9LCJrUyI6eyJYUyI6W119LCJpTSI6eyJFeiI6 +W10sIlhTIjpbXX0sInZzIjp7ImI4IjpbIjEiXX0sIkdWIjp7IkFuIjpbIjEiXX0sInE0Ijp7ImNYIjpb +IjEiXSwiY1guRSI6IjEifSwiQ3ciOnsiWFMiOltdfSwiWmYiOnsiUGYiOlsiMSJdfSwibTAiOnsiUW0i +OltdfSwiSmkiOnsibTAiOltdLCJRbSI6W119LCJiNiI6eyJsZiI6WyIxIl0sIk9sIjpbIjEiXSwiYlEi +OlsiMSJdLCJjWCI6WyIxIl0sImxmLkUiOiIxIn0sImxtIjp7IkFuIjpbIjEiXX0sIm1XIjp7ImNYIjpb +IjEiXX0sInV5Ijp7ImxEIjpbIjEiXSwiek0iOlsiMSJdLCJiUSI6WyIxIl0sImNYIjpbIjEiXX0sImls +Ijp7IllrIjpbIjEiLCIyIl0sIlowIjpbIjEiLCIyIl19LCJZayI6eyJaMCI6WyIxIiwiMiJdfSwiUG4i +OnsiWjAiOlsiMSIsIjIiXX0sIkdqIjp7IlJVIjpbIjEiLCIyIl0sIlBuIjpbIjEiLCIyIl0sIktQIjpb +IjEiLCIyIl0sIlowIjpbIjEiLCIyIl19LCJWaiI6eyJsZiI6WyIxIl0sIk9sIjpbIjEiXSwiYlEiOlsi +MSJdLCJjWCI6WyIxIl19LCJYdiI6eyJsZiI6WyIxIl0sIk9sIjpbIjEiXSwiYlEiOlsiMSJdLCJjWCI6 +WyIxIl19LCJ1dyI6eyJZayI6WyJxVSIsIkAiXSwiWjAiOlsicVUiLCJAIl0sIllrLksiOiJxVSIsIllr +LlYiOiJAIn0sImk4Ijp7ImFMIjpbInFVIl0sImJRIjpbInFVIl0sImNYIjpbInFVIl0sImFMLkUiOiJx +VSIsImNYLkUiOiJxVSJ9LCJDViI6eyJVayI6WyJ6TTxJaj4iLCJxVSJdLCJVay5TIjoiek08SWo+In0s +IlU4Ijp7IndJIjpbInpNPElqPiIsInFVIl19LCJaaSI6eyJVayI6WyJxVSIsInpNPElqPiJdfSwiVWQi +OnsiWFMiOltdfSwiSzgiOnsiWFMiOltdfSwiYnkiOnsiVWsiOlsiTWg/IiwicVUiXSwiVWsuUyI6Ik1o +PyJ9LCJvaiI6eyJ3SSI6WyJNaD8iLCJxVSJdfSwiTXgiOnsid0kiOlsicVUiLCJNaD8iXX0sInU1Ijp7 +IlVrIjpbInFVIiwiek08SWo+Il0sIlVrLlMiOiJxVSJ9LCJFMyI6eyJ3SSI6WyJxVSIsInpNPElqPiJd +fSwiR1kiOnsid0kiOlsiek08SWo+IiwicVUiXX0sIkNQIjp7IlpaIjpbXX0sIklqIjp7IlpaIjpbXX0s +InpNIjp7ImJRIjpbIjEiXSwiY1giOlsiMSJdfSwiaWIiOnsiT2QiOltdfSwiT2wiOnsiYlEiOlsiMSJd +LCJjWCI6WyIxIl19LCJxVSI6eyJ2WCI6W119LCJDNiI6eyJYUyI6W119LCJFeiI6eyJYUyI6W119LCJG +Ijp7IlhTIjpbXX0sIkFUIjp7IlhTIjpbXX0sImJKIjp7IlhTIjpbXX0sImVZIjp7IlhTIjpbXX0sIm1w +Ijp7IlhTIjpbXX0sInViIjp7IlhTIjpbXX0sImRzIjp7IlhTIjpbXX0sImxqIjp7IlhTIjpbXX0sIlVW +Ijp7IlhTIjpbXX0sIms1Ijp7IlhTIjpbXX0sIktZIjp7IlhTIjpbXX0sInAiOnsiWFMiOltdfSwiQ0Qi +OnsiUnoiOltdfSwiYUUiOnsiUnoiOltdfSwiWmQiOnsiR3oiOltdfSwiTSI6eyJCTCI6W119LCJEbiI6 +eyJpRCI6W119LCJVZiI6eyJpRCI6W119LCJxZSI6eyJpRCI6W119LCJjdiI6eyJLViI6W10sIkQwIjpb +XX0sImZKIjp7IkQwIjpbXX0sIkFqIjp7ImVhIjpbXX0sIktWIjp7IkQwIjpbXX0sImV3Ijp7ImVhIjpb +XX0sIkpRIjp7ImtGIjpbXX0sInFFIjp7ImN2IjpbXSwiS1YiOltdLCJEMCI6W119LCJHaCI6eyJjdiI6 +W10sIktWIjpbXSwiRDAiOltdfSwiZlkiOnsiY3YiOltdLCJLViI6W10sIkQwIjpbXX0sInJaIjp7ImN2 +IjpbXSwiS1YiOltdLCJEMCI6W119LCJRUCI6eyJjdiI6W10sIktWIjpbXSwiRDAiOltdfSwibngiOnsi +S1YiOltdLCJEMCI6W119LCJRRiI6eyJLViI6W10sIkQwIjpbXX0sIklCIjp7InRuIjpbIlpaIl19LCJ3 +eiI6eyJsRCI6WyIxIl0sInpNIjpbIjEiXSwiYlEiOlsiMSJdLCJjWCI6WyIxIl0sImxELkUiOiIxIn0s +ImhIIjp7IkF6IjpbXX0sImg0Ijp7ImN2IjpbXSwiS1YiOltdLCJEMCI6W119LCJWYiI6eyJLViI6W10s +IkQwIjpbXX0sIndhIjp7IkQwIjpbXX0sImU3Ijp7ImxEIjpbIktWIl0sInpNIjpbIktWIl0sImJRIjpb +IktWIl0sImNYIjpbIktWIl0sImxELkUiOiJLViJ9LCJCSCI6eyJsRCI6WyJLViJdLCJHbSI6WyJLViJd +LCJ6TSI6WyJLViJdLCJYaiI6WyJLViJdLCJiUSI6WyJLViJdLCJjWCI6WyJLViJdLCJsRC5FIjoiS1Yi +LCJHbS5FIjoiS1YifSwiU04iOnsiY3YiOltdLCJLViI6W10sIkQwIjpbXX0sImxwIjp7ImN2IjpbXSwi +S1YiOltdLCJEMCI6W119LCJUYiI6eyJjdiI6W10sIktWIjpbXSwiRDAiOltdfSwiSXYiOnsiY3YiOltd +LCJLViI6W10sIkQwIjpbXX0sIldQIjp7ImN2IjpbXSwiS1YiOltdLCJEMCI6W119LCJ5WSI6eyJjdiI6 +W10sIktWIjpbXSwiRDAiOltdfSwidzYiOnsiZWEiOltdfSwiSzUiOnsidjYiOltdLCJEMCI6W119LCJD +bSI6eyJEMCI6W119LCJDUSI6eyJLViI6W10sIkQwIjpbXX0sInc0Ijp7InRuIjpbIlpaIl19LCJyaCI6 +eyJsRCI6WyJLViJdLCJHbSI6WyJLViJdLCJ6TSI6WyJLViJdLCJYaiI6WyJLViJdLCJiUSI6WyJLViJd +LCJjWCI6WyJLViJdLCJsRC5FIjoiS1YiLCJHbS5FIjoiS1YifSwiY2YiOnsiWWsiOlsicVUiLCJxVSJd +LCJaMCI6WyJxVSIsInFVIl19LCJpNyI6eyJZayI6WyJxVSIsInFVIl0sIlowIjpbInFVIiwicVUiXSwi +WWsuSyI6InFVIiwiWWsuViI6InFVIn0sIlN5Ijp7IllrIjpbInFVIiwicVUiXSwiWjAiOlsicVUiLCJx +VSJdLCJZay5LIjoicVUiLCJZay5WIjoicVUifSwiSTQiOnsibGYiOlsicVUiXSwiT2wiOlsicVUiXSwi +YlEiOlsicVUiXSwiY1giOlsicVUiXSwibGYuRSI6InFVIn0sIlJPIjp7InFoIjpbIjEiXX0sIkNxIjp7 +IlJPIjpbIjEiXSwicWgiOlsiMSJdfSwieEMiOnsiTU8iOlsiMSJdfSwidkQiOnsia0YiOltdfSwibTYi +Onsia0YiOltdfSwiY3QiOnsia0YiOltdfSwiT3ciOnsia0YiOltdfSwiVzkiOnsiQW4iOlsiMSJdfSwi +ZFciOnsidjYiOltdLCJEMCI6W119LCJtayI6eyJ5MCI6W119LCJLbyI6eyJvbiI6W119LCJBcyI6eyJs +ZiI6WyJxVSJdLCJPbCI6WyJxVSJdLCJiUSI6WyJxVSJdLCJjWCI6WyJxVSJdfSwicjciOnsiRTQiOltd +fSwiVHoiOnsibEQiOlsiMSJdLCJ6TSI6WyIxIl0sImJRIjpbIjEiXSwiRTQiOltdLCJjWCI6WyIxIl0s +ImxELkUiOiIxIn0sIm5kIjp7ImhpIjpbXSwiY3YiOltdLCJLViI6W10sIkQwIjpbXX0sIktlIjp7Imxm +IjpbInFVIl0sIk9sIjpbInFVIl0sImJRIjpbInFVIl0sImNYIjpbInFVIl0sImxmLkUiOiJxVSJ9LCJo +aSI6eyJjdiI6W10sIktWIjpbXSwiRDAiOltdfSwiUVciOnsiWFMiOltdLCJSeiI6W119LCJYQSI6eyJr +RiI6W119LCJ2dCI6eyJEOCI6W119LCJjRCI6eyJEOCI6W119LCJkdiI6eyJSeiI6W119LCJPRiI6eyJm +diI6W119LCJydSI6eyJmdiI6W119LCJJViI6eyJmdiI6W119LCJuNiI6eyJ6TSI6WyJJaiJdLCJiUSI6 +WyJJaiJdLCJjWCI6WyJJaiJdLCJBUyI6W119fScpKQpBLkZGKHYudHlwZVVuaXZlcnNlLEpTT04ucGFy +c2UoJ3sidzIiOjEsIlFDIjoyLCJMWiI6MSwia1QiOjIsIm1XIjoxLCJ1eSI6MSwiaWwiOjIsIlZqIjox +LCJYdiI6MSwiblkiOjEsIldZIjoxLCJGUCI6MSwidmciOjF9JykpCnZhciB1PXtsOiJDYW5ub3QgZXh0 +cmFjdCBhIGZpbGUgcGF0aCBmcm9tIGEgVVJJIHdpdGggYSBmcmFnbWVudCBjb21wb25lbnQiLGk6IkNh +bm5vdCBleHRyYWN0IGEgZmlsZSBwYXRoIGZyb20gYSBVUkkgd2l0aCBhIHF1ZXJ5IGNvbXBvbmVudCIs +ajoiQ2Fubm90IGV4dHJhY3QgYSBub24tV2luZG93cyBmaWxlIHBhdGggZnJvbSBhIGZpbGUgVVJJIHdp +dGggYW4gYXV0aG9yaXR5IixjOiJFcnJvciBoYW5kbGVyIG11c3QgYWNjZXB0IG9uZSBPYmplY3Qgb3Ig +b25lIE9iamVjdCBhbmQgYSBTdGFja1RyYWNlIGFzIGFyZ3VtZW50cywgYW5kIHJldHVybiBhIHZhbHVl +IG9mIHRoZSByZXR1cm5lZCBmdXR1cmUncyB0eXBlIixkOiJhcmVhLWFuYWx5emVyLGFuYWx5emVyLW5u +YmQtbWlncmF0aW9uLHR5cGUtYnVnIn0KdmFyIHQ9KGZ1bmN0aW9uIHJ0aWkoKXt2YXIgcz1BLk4wCnJl +dHVybnticTpzKCJHaCIpLG46cygiQ3ciKSxjUjpzKCJyWiIpLHc6cygiQXoiKSxyOnMoIlFQIiksZ0Y6 +cygiUEQ8R0QsQD4iKSxVOnMoImJRPEA+IiksaDpzKCJjdiIpLHU6cygiWFMiKSxCOnMoImVhIiksZzg6 +cygiUnoiKSxjODpzKCJoSCIpLFk6cygiRUgiKSxpOnMoImI4PEA+IiksSjpzKCJMTCIpLGdwOnMoIkg3 +IikseDpzKCJTZyIpLG86cygidlEiKSxlaDpzKCJjWDxLVj4iKSxPOnMoImNYPHFVPiIpLGs6cygiY1g8 +QD4iKSxmQTpzKCJqZDxTZT4iKSxnaTpzKCJqZDxqOD4iKSxkOnMoImpkPFowPHFVLE1oPz4+IiksZmg6 +cygiamQ8RDg+IiksRDpzKCJqZDxrRj4iKSxzOnMoImpkPHFVPiIpLGhoOnMoImpkPHlEPiIpLGFKOnMo +ImpkPHdiPiIpLGdOOnMoImpkPG42PiIpLGI6cygiamQ8QD4iKSx0OnMoImpkPElqPiIpLGQ0OnMoImpk +PHFVPz4iKSxUOnMoIndlIiksZUg6cygidm0iKSxFOnMoImM1IiksYVU6cygiWGo8QD4iKSxhbTpzKCJU +ejxAPiIpLGVvOnMoIk41PEdELEA+IiksZHo6cygiaEYiKSxmNDpzKCJ6TTxqOD4iKSxhUzpzKCJ6TTxa +MDxxVSxNaD8+PiIpLGV3OnMoInpNPE1oPiIpLGE6cygiek08cVU+IiksajpzKCJ6TTxAPiIpLEw6cygi +ek08SWo+IiksVzpzKCJ6TTxNaD8+IiksRjpzKCJ1OCIpLGVlOnMoIk4zPHFVLHpNPGo4Pj4iKSxoNjpz +KCJaMDxxVSxNaD4iKSxJOnMoIlowPHFVLHFVPiIpLGY6cygiWjA8QCxAPiIpLEc6cygiWjA8cVUsTWg/ +PiIpLGR2OnMoImxKPHFVLHFVPiIpLGRvOnMoImxKPHFVLEA+IiksVjpzKCJBaiIpLGRFOnMoIkVUIiks +QTpzKCJLViIpLGY2OnMoImtGIiksUDpzKCJjOCIpLEs6cygiTWgiKSxwOnMoImV3IikscTpzKCJ0bjxa +Wj4iKSxmdjpzKCJ3TCIpLGN6OnMoImliIiksYU86cygibmQiKSxDOnMoIk9sPHFVPiIpLGw6cygiR3oi +KSxOOnMoInFVIiksZEc6cygicVUocVUpIiksZzc6cygiaGkiKSxmbzpzKCJHRCIpLGFXOnMoInlZIiks +ZUs6cygiRXoiKSxhazpzKCJBUyIpLGdjOnMoIm42IiksYkk6cygia2QiKSxkdzpzKCJHajxxVSxxVT4i +KSxkRDpzKCJpRCIpLGVKOnMoInU2PHFVPiIpLGc0OnMoIks1IiksY2k6cygidjYiKSxnMjpzKCJDbSIp +LGJqOnMoIlpmPGZKPiIpLGg5OnMoIkNRIiksYWM6cygiZTciKSxROnMoIkNxPEFqPiIpLFI6cygid3o8 +Y3Y+IiksYW86cygidnM8Zko+IiksYzpzKCJ2czxAPiIpLGZKOnMoInZzPElqPiIpLGNyOnMoIkpRIiks +eTpzKCJhMiIpLGFsOnMoImEyKE1oKSIpLGdSOnMoIkNQIiksejpzKCJAIiksZk86cygiQCgpIiksdjpz +KCJAKE1oKSIpLG06cygiQChNaCxHeikiKSxiVTpzKCJAKE9sPHFVPikiKSxkTzpzKCJAKHFVKSIpLGI4 +OnMoIkAoQCxAKSIpLFM6cygiSWoiKSxhdzpzKCIwJioiKSxfOnMoIk1oKiIpLGNoOnMoIkQwPyIpLGJH +OnMoImI4PGM4Pj8iKSxlczpzKCJFND8iKSxiTTpzKCJ6TTxAPj8iKSxncTpzKCJ6TTxNaD8+PyIpLGM5 +OnMoIlowPHFVLEA+PyIpLGZuOnMoIlowPHFVLE1oPz4/IiksWDpzKCJNaD8iKSxkazpzKCJxVT8iKSxl +OnMoIkZlPEAsQD4/IiksZzpzKCJibj8iKSxiNzpzKCJhMihNaCk/IiksYnc6cygiQChlYSk/IiksZlY6 +cygiTWg/KE1oPyxNaD8pPyIpLGRBOnMoIk1oPyhAKT8iKSxaOnMoIn4oKT8iKSxneDpzKCJ+KGV3KT8i +KSxkaTpzKCJaWiIpLEg6cygifiIpLE06cygifigpIiksZUE6cygifihxVSxxVSkiKSxjQTpzKCJ+KHFV +LEApIil9fSkoKTsoZnVuY3Rpb24gY29uc3RhbnRzKCl7dmFyIHM9aHVua0hlbHBlcnMubWFrZUNvbnN0 +TGlzdApCLnhuPUEuR2gucHJvdG90eXBlCkIuUlk9QS5RUC5wcm90b3R5cGUKQi5tSD1BLmFlLnByb3Rv +dHlwZQpCLkJaPUEuVmIucHJvdG90eXBlCkIuRHQ9QS5mSi5wcm90b3R5cGUKQi5Paz1KLkd2LnByb3Rv +dHlwZQpCLk5tPUouamQucHJvdG90eXBlCkIuam49Si5MNy5wcm90b3R5cGUKQi5DRD1KLnFJLnByb3Rv +dHlwZQpCLnhCPUouRHIucHJvdG90eXBlCkIuREc9Si5jNS5wcm90b3R5cGUKQi5VYj1KLk1GLnByb3Rv +dHlwZQpCLkV4PUEudTgucHJvdG90eXBlCkIuTkE9QS5WNi5wcm90b3R5cGUKQi50NT1BLkJILnByb3Rv +dHlwZQpCLkx0PUEuU04ucHJvdG90eXBlCkIuWlE9Si5pQy5wcm90b3R5cGUKQi5JZT1BLlRiLnByb3Rv +dHlwZQpCLnZCPUoua2QucHJvdG90eXBlCkIub2w9QS5LNS5wcm90b3R5cGUKQi55OD1uZXcgQS5VOCgp +CkIuaDk9bmV3IEEuQ1YoKQpCLkd3PW5ldyBBLkZ1KEEuTjAoIkZ1PDAmPiIpKQpCLk80PWZ1bmN0aW9u +IGdldFRhZ0ZhbGxiYWNrKG8pIHsKICB2YXIgcyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2Fs +bChvKTsKICByZXR1cm4gcy5zdWJzdHJpbmcoOCwgcy5sZW5ndGggLSAxKTsKfQpCLllxPWZ1bmN0aW9u +KCkgewogIHZhciB0b1N0cmluZ0Z1bmN0aW9uID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzsKICBm +dW5jdGlvbiBnZXRUYWcobykgewogICAgdmFyIHMgPSB0b1N0cmluZ0Z1bmN0aW9uLmNhbGwobyk7CiAg +ICByZXR1cm4gcy5zdWJzdHJpbmcoOCwgcy5sZW5ndGggLSAxKTsKICB9CiAgZnVuY3Rpb24gZ2V0VW5r +bm93blRhZyhvYmplY3QsIHRhZykgewogICAgaWYgKC9eSFRNTFtBLVpdLipFbGVtZW50JC8udGVzdCh0 +YWcpKSB7CiAgICAgIHZhciBuYW1lID0gdG9TdHJpbmdGdW5jdGlvbi5jYWxsKG9iamVjdCk7CiAgICAg +IGlmIChuYW1lID09ICJbb2JqZWN0IE9iamVjdF0iKSByZXR1cm4gbnVsbDsKICAgICAgcmV0dXJuICJI +VE1MRWxlbWVudCI7CiAgICB9CiAgfQogIGZ1bmN0aW9uIGdldFVua25vd25UYWdHZW5lcmljQnJvd3Nl +cihvYmplY3QsIHRhZykgewogICAgaWYgKHNlbGYuSFRNTEVsZW1lbnQgJiYgb2JqZWN0IGluc3RhbmNl +b2YgSFRNTEVsZW1lbnQpIHJldHVybiAiSFRNTEVsZW1lbnQiOwogICAgcmV0dXJuIGdldFVua25vd25U +YWcob2JqZWN0LCB0YWcpOwogIH0KICBmdW5jdGlvbiBwcm90b3R5cGVGb3JUYWcodGFnKSB7CiAgICBp +ZiAodHlwZW9mIHdpbmRvdyA9PSAidW5kZWZpbmVkIikgcmV0dXJuIG51bGw7CiAgICBpZiAodHlwZW9m +IHdpbmRvd1t0YWddID09ICJ1bmRlZmluZWQiKSByZXR1cm4gbnVsbDsKICAgIHZhciBjb25zdHJ1Y3Rv +ciA9IHdpbmRvd1t0YWddOwogICAgaWYgKHR5cGVvZiBjb25zdHJ1Y3RvciAhPSAiZnVuY3Rpb24iKSBy +ZXR1cm4gbnVsbDsKICAgIHJldHVybiBjb25zdHJ1Y3Rvci5wcm90b3R5cGU7CiAgfQogIGZ1bmN0aW9u +IGRpc2NyaW1pbmF0b3IodGFnKSB7IHJldHVybiBudWxsOyB9CiAgdmFyIGlzQnJvd3NlciA9IHR5cGVv +ZiBuYXZpZ2F0b3IgPT0gIm9iamVjdCI7CiAgcmV0dXJuIHsKICAgIGdldFRhZzogZ2V0VGFnLAogICAg +Z2V0VW5rbm93blRhZzogaXNCcm93c2VyID8gZ2V0VW5rbm93blRhZ0dlbmVyaWNCcm93c2VyIDogZ2V0 +VW5rbm93blRhZywKICAgIHByb3RvdHlwZUZvclRhZzogcHJvdG90eXBlRm9yVGFnLAogICAgZGlzY3Jp +bWluYXRvcjogZGlzY3JpbWluYXRvciB9Owp9CkIud2I9ZnVuY3Rpb24oZ2V0VGFnRmFsbGJhY2spIHsK +ICByZXR1cm4gZnVuY3Rpb24oaG9va3MpIHsKICAgIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9ICJvYmpl +Y3QiKSByZXR1cm4gaG9va3M7CiAgICB2YXIgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50OwogICAgaWYg +KHVhLmluZGV4T2YoIkR1bXBSZW5kZXJUcmVlIikgPj0gMCkgcmV0dXJuIGhvb2tzOwogICAgaWYgKHVh +LmluZGV4T2YoIkNocm9tZSIpID49IDApIHsKICAgICAgZnVuY3Rpb24gY29uZmlybShwKSB7CiAgICAg +ICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgPT0gIm9iamVjdCIgJiYgd2luZG93W3BdICYmIHdpbmRvd1tw +XS5uYW1lID09IHA7CiAgICAgIH0KICAgICAgaWYgKGNvbmZpcm0oIldpbmRvdyIpICYmIGNvbmZpcm0o +IkhUTUxFbGVtZW50IikpIHJldHVybiBob29rczsKICAgIH0KICAgIGhvb2tzLmdldFRhZyA9IGdldFRh +Z0ZhbGxiYWNrOwogIH07Cn0KQi5LVT1mdW5jdGlvbihob29rcykgewogIGlmICh0eXBlb2YgZGFydEV4 +cGVyaW1lbnRhbEZpeHVwR2V0VGFnICE9ICJmdW5jdGlvbiIpIHJldHVybiBob29rczsKICBob29rcy5n +ZXRUYWcgPSBkYXJ0RXhwZXJpbWVudGFsRml4dXBHZXRUYWcoaG9va3MuZ2V0VGFnKTsKfQpCLmZRPWZ1 +bmN0aW9uKGhvb2tzKSB7CiAgdmFyIGdldFRhZyA9IGhvb2tzLmdldFRhZzsKICB2YXIgcHJvdG90eXBl +Rm9yVGFnID0gaG9va3MucHJvdG90eXBlRm9yVGFnOwogIGZ1bmN0aW9uIGdldFRhZ0ZpeGVkKG8pIHsK +ICAgIHZhciB0YWcgPSBnZXRUYWcobyk7CiAgICBpZiAodGFnID09ICJEb2N1bWVudCIpIHsKICAgICAg +aWYgKCEhby54bWxWZXJzaW9uKSByZXR1cm4gIiFEb2N1bWVudCI7CiAgICAgIHJldHVybiAiIUhUTUxE +b2N1bWVudCI7CiAgICB9CiAgICByZXR1cm4gdGFnOwogIH0KICBmdW5jdGlvbiBwcm90b3R5cGVGb3JU +YWdGaXhlZCh0YWcpIHsKICAgIGlmICh0YWcgPT0gIkRvY3VtZW50IikgcmV0dXJuIG51bGw7CiAgICBy +ZXR1cm4gcHJvdG90eXBlRm9yVGFnKHRhZyk7CiAgfQogIGhvb2tzLmdldFRhZyA9IGdldFRhZ0ZpeGVk +OwogIGhvb2tzLnByb3RvdHlwZUZvclRhZyA9IHByb3RvdHlwZUZvclRhZ0ZpeGVkOwp9CkIuZGs9ZnVu +Y3Rpb24oaG9va3MpIHsKICB2YXIgdXNlckFnZW50ID0gdHlwZW9mIG5hdmlnYXRvciA9PSAib2JqZWN0 +IiA/IG5hdmlnYXRvci51c2VyQWdlbnQgOiAiIjsKICBpZiAodXNlckFnZW50LmluZGV4T2YoIkZpcmVm +b3giKSA9PSAtMSkgcmV0dXJuIGhvb2tzOwogIHZhciBnZXRUYWcgPSBob29rcy5nZXRUYWc7CiAgdmFy +IHF1aWNrTWFwID0gewogICAgIkJlZm9yZVVubG9hZEV2ZW50IjogIkV2ZW50IiwKICAgICJEYXRhVHJh +bnNmZXIiOiAiQ2xpcGJvYXJkIiwKICAgICJHZW9HZW9sb2NhdGlvbiI6ICJHZW9sb2NhdGlvbiIsCiAg +ICAiTG9jYXRpb24iOiAiIUxvY2F0aW9uIiwKICAgICJXb3JrZXJNZXNzYWdlRXZlbnQiOiAiTWVzc2Fn +ZUV2ZW50IiwKICAgICJYTUxEb2N1bWVudCI6ICIhRG9jdW1lbnQifTsKICBmdW5jdGlvbiBnZXRUYWdG +aXJlZm94KG8pIHsKICAgIHZhciB0YWcgPSBnZXRUYWcobyk7CiAgICByZXR1cm4gcXVpY2tNYXBbdGFn +XSB8fCB0YWc7CiAgfQogIGhvb2tzLmdldFRhZyA9IGdldFRhZ0ZpcmVmb3g7Cn0KQi54aT1mdW5jdGlv +bihob29rcykgewogIHZhciB1c2VyQWdlbnQgPSB0eXBlb2YgbmF2aWdhdG9yID09ICJvYmplY3QiID8g +bmF2aWdhdG9yLnVzZXJBZ2VudCA6ICIiOwogIGlmICh1c2VyQWdlbnQuaW5kZXhPZigiVHJpZGVudC8i +KSA9PSAtMSkgcmV0dXJuIGhvb2tzOwogIHZhciBnZXRUYWcgPSBob29rcy5nZXRUYWc7CiAgdmFyIHF1 +aWNrTWFwID0gewogICAgIkJlZm9yZVVubG9hZEV2ZW50IjogIkV2ZW50IiwKICAgICJEYXRhVHJhbnNm +ZXIiOiAiQ2xpcGJvYXJkIiwKICAgICJIVE1MRERFbGVtZW50IjogIkhUTUxFbGVtZW50IiwKICAgICJI +VE1MRFRFbGVtZW50IjogIkhUTUxFbGVtZW50IiwKICAgICJIVE1MUGhyYXNlRWxlbWVudCI6ICJIVE1M +RWxlbWVudCIsCiAgICAiUG9zaXRpb24iOiAiR2VvcG9zaXRpb24iCiAgfTsKICBmdW5jdGlvbiBnZXRU +YWdJRShvKSB7CiAgICB2YXIgdGFnID0gZ2V0VGFnKG8pOwogICAgdmFyIG5ld1RhZyA9IHF1aWNrTWFw +W3RhZ107CiAgICBpZiAobmV3VGFnKSByZXR1cm4gbmV3VGFnOwogICAgaWYgKHRhZyA9PSAiT2JqZWN0 +IikgewogICAgICBpZiAod2luZG93LkRhdGFWaWV3ICYmIChvIGluc3RhbmNlb2Ygd2luZG93LkRhdGFW +aWV3KSkgcmV0dXJuICJEYXRhVmlldyI7CiAgICB9CiAgICByZXR1cm4gdGFnOwogIH0KICBmdW5jdGlv +biBwcm90b3R5cGVGb3JUYWdJRSh0YWcpIHsKICAgIHZhciBjb25zdHJ1Y3RvciA9IHdpbmRvd1t0YWdd +OwogICAgaWYgKGNvbnN0cnVjdG9yID09IG51bGwpIHJldHVybiBudWxsOwogICAgcmV0dXJuIGNvbnN0 +cnVjdG9yLnByb3RvdHlwZTsKICB9CiAgaG9va3MuZ2V0VGFnID0gZ2V0VGFnSUU7CiAgaG9va3MucHJv +dG90eXBlRm9yVGFnID0gcHJvdG90eXBlRm9yVGFnSUU7Cn0KQi5pNz1mdW5jdGlvbihob29rcykgeyBy +ZXR1cm4gaG9va3M7IH0KCkIuQ3Q9bmV3IEEuYnkoKQpCLkVxPW5ldyBBLms1KCkKQi56dD1uZXcgQS5I +YigpCkIueE09bmV3IEEudTUoKQpCLlFrPW5ldyBBLkUzKCkKQi5Odj1uZXcgQS5rcigpCkIuTlU9bmV3 +IEEuSmkoKQpCLnBkPW5ldyBBLlpkKCkKQi5BMz1uZXcgQS5NeChudWxsKQpCLm5YPW5ldyBBLm9qKG51 +bGwpCkIuYWs9QS5RSShzKFswLDAsMzI3NzYsMzM3OTIsMSwxMDI0MCwwLDBdKSx0LnQpCkIuY209QS5R +SShzKFsiKjo6Y2xhc3MiLCIqOjpkaXIiLCIqOjpkcmFnZ2FibGUiLCIqOjpoaWRkZW4iLCIqOjppZCIs +Iio6OmluZXJ0IiwiKjo6aXRlbXByb3AiLCIqOjppdGVtcmVmIiwiKjo6aXRlbXNjb3BlIiwiKjo6bGFu +ZyIsIio6OnNwZWxsY2hlY2siLCIqOjp0aXRsZSIsIio6OnRyYW5zbGF0ZSIsIkE6OmFjY2Vzc2tleSIs +IkE6OmNvb3JkcyIsIkE6OmhyZWZsYW5nIiwiQTo6bmFtZSIsIkE6OnNoYXBlIiwiQTo6dGFiaW5kZXgi +LCJBOjp0YXJnZXQiLCJBOjp0eXBlIiwiQVJFQTo6YWNjZXNza2V5IiwiQVJFQTo6YWx0IiwiQVJFQTo6 +Y29vcmRzIiwiQVJFQTo6bm9ocmVmIiwiQVJFQTo6c2hhcGUiLCJBUkVBOjp0YWJpbmRleCIsIkFSRUE6 +OnRhcmdldCIsIkFVRElPOjpjb250cm9scyIsIkFVRElPOjpsb29wIiwiQVVESU86Om1lZGlhZ3JvdXAi +LCJBVURJTzo6bXV0ZWQiLCJBVURJTzo6cHJlbG9hZCIsIkJETzo6ZGlyIiwiQk9EWTo6YWxpbmsiLCJC +T0RZOjpiZ2NvbG9yIiwiQk9EWTo6bGluayIsIkJPRFk6OnRleHQiLCJCT0RZOjp2bGluayIsIkJSOjpj +bGVhciIsIkJVVFRPTjo6YWNjZXNza2V5IiwiQlVUVE9OOjpkaXNhYmxlZCIsIkJVVFRPTjo6bmFtZSIs +IkJVVFRPTjo6dGFiaW5kZXgiLCJCVVRUT046OnR5cGUiLCJCVVRUT046OnZhbHVlIiwiQ0FOVkFTOjpo +ZWlnaHQiLCJDQU5WQVM6OndpZHRoIiwiQ0FQVElPTjo6YWxpZ24iLCJDT0w6OmFsaWduIiwiQ09MOjpj +aGFyIiwiQ09MOjpjaGFyb2ZmIiwiQ09MOjpzcGFuIiwiQ09MOjp2YWxpZ24iLCJDT0w6OndpZHRoIiwi +Q09MR1JPVVA6OmFsaWduIiwiQ09MR1JPVVA6OmNoYXIiLCJDT0xHUk9VUDo6Y2hhcm9mZiIsIkNPTEdS +T1VQOjpzcGFuIiwiQ09MR1JPVVA6OnZhbGlnbiIsIkNPTEdST1VQOjp3aWR0aCIsIkNPTU1BTkQ6OmNo +ZWNrZWQiLCJDT01NQU5EOjpjb21tYW5kIiwiQ09NTUFORDo6ZGlzYWJsZWQiLCJDT01NQU5EOjpsYWJl +bCIsIkNPTU1BTkQ6OnJhZGlvZ3JvdXAiLCJDT01NQU5EOjp0eXBlIiwiREFUQTo6dmFsdWUiLCJERUw6 +OmRhdGV0aW1lIiwiREVUQUlMUzo6b3BlbiIsIkRJUjo6Y29tcGFjdCIsIkRJVjo6YWxpZ24iLCJETDo6 +Y29tcGFjdCIsIkZJRUxEU0VUOjpkaXNhYmxlZCIsIkZPTlQ6OmNvbG9yIiwiRk9OVDo6ZmFjZSIsIkZP +TlQ6OnNpemUiLCJGT1JNOjphY2NlcHQiLCJGT1JNOjphdXRvY29tcGxldGUiLCJGT1JNOjplbmN0eXBl +IiwiRk9STTo6bWV0aG9kIiwiRk9STTo6bmFtZSIsIkZPUk06Om5vdmFsaWRhdGUiLCJGT1JNOjp0YXJn +ZXQiLCJGUkFNRTo6bmFtZSIsIkgxOjphbGlnbiIsIkgyOjphbGlnbiIsIkgzOjphbGlnbiIsIkg0Ojph +bGlnbiIsIkg1OjphbGlnbiIsIkg2OjphbGlnbiIsIkhSOjphbGlnbiIsIkhSOjpub3NoYWRlIiwiSFI6 +OnNpemUiLCJIUjo6d2lkdGgiLCJIVE1MOjp2ZXJzaW9uIiwiSUZSQU1FOjphbGlnbiIsIklGUkFNRTo6 +ZnJhbWVib3JkZXIiLCJJRlJBTUU6OmhlaWdodCIsIklGUkFNRTo6bWFyZ2luaGVpZ2h0IiwiSUZSQU1F +OjptYXJnaW53aWR0aCIsIklGUkFNRTo6d2lkdGgiLCJJTUc6OmFsaWduIiwiSU1HOjphbHQiLCJJTUc6 +OmJvcmRlciIsIklNRzo6aGVpZ2h0IiwiSU1HOjpoc3BhY2UiLCJJTUc6OmlzbWFwIiwiSU1HOjpuYW1l +IiwiSU1HOjp1c2VtYXAiLCJJTUc6OnZzcGFjZSIsIklNRzo6d2lkdGgiLCJJTlBVVDo6YWNjZXB0Iiwi +SU5QVVQ6OmFjY2Vzc2tleSIsIklOUFVUOjphbGlnbiIsIklOUFVUOjphbHQiLCJJTlBVVDo6YXV0b2Nv +bXBsZXRlIiwiSU5QVVQ6OmF1dG9mb2N1cyIsIklOUFVUOjpjaGVja2VkIiwiSU5QVVQ6OmRpc2FibGVk +IiwiSU5QVVQ6OmlucHV0bW9kZSIsIklOUFVUOjppc21hcCIsIklOUFVUOjpsaXN0IiwiSU5QVVQ6Om1h +eCIsIklOUFVUOjptYXhsZW5ndGgiLCJJTlBVVDo6bWluIiwiSU5QVVQ6Om11bHRpcGxlIiwiSU5QVVQ6 +Om5hbWUiLCJJTlBVVDo6cGxhY2Vob2xkZXIiLCJJTlBVVDo6cmVhZG9ubHkiLCJJTlBVVDo6cmVxdWly +ZWQiLCJJTlBVVDo6c2l6ZSIsIklOUFVUOjpzdGVwIiwiSU5QVVQ6OnRhYmluZGV4IiwiSU5QVVQ6OnR5 +cGUiLCJJTlBVVDo6dXNlbWFwIiwiSU5QVVQ6OnZhbHVlIiwiSU5TOjpkYXRldGltZSIsIktFWUdFTjo6 +ZGlzYWJsZWQiLCJLRVlHRU46OmtleXR5cGUiLCJLRVlHRU46Om5hbWUiLCJMQUJFTDo6YWNjZXNza2V5 +IiwiTEFCRUw6OmZvciIsIkxFR0VORDo6YWNjZXNza2V5IiwiTEVHRU5EOjphbGlnbiIsIkxJOjp0eXBl +IiwiTEk6OnZhbHVlIiwiTElOSzo6c2l6ZXMiLCJNQVA6Om5hbWUiLCJNRU5VOjpjb21wYWN0IiwiTUVO +VTo6bGFiZWwiLCJNRU5VOjp0eXBlIiwiTUVURVI6OmhpZ2giLCJNRVRFUjo6bG93IiwiTUVURVI6Om1h +eCIsIk1FVEVSOjptaW4iLCJNRVRFUjo6dmFsdWUiLCJPQkpFQ1Q6OnR5cGVtdXN0bWF0Y2giLCJPTDo6 +Y29tcGFjdCIsIk9MOjpyZXZlcnNlZCIsIk9MOjpzdGFydCIsIk9MOjp0eXBlIiwiT1BUR1JPVVA6OmRp +c2FibGVkIiwiT1BUR1JPVVA6OmxhYmVsIiwiT1BUSU9OOjpkaXNhYmxlZCIsIk9QVElPTjo6bGFiZWwi +LCJPUFRJT046OnNlbGVjdGVkIiwiT1BUSU9OOjp2YWx1ZSIsIk9VVFBVVDo6Zm9yIiwiT1VUUFVUOjpu +YW1lIiwiUDo6YWxpZ24iLCJQUkU6OndpZHRoIiwiUFJPR1JFU1M6Om1heCIsIlBST0dSRVNTOjptaW4i +LCJQUk9HUkVTUzo6dmFsdWUiLCJTRUxFQ1Q6OmF1dG9jb21wbGV0ZSIsIlNFTEVDVDo6ZGlzYWJsZWQi +LCJTRUxFQ1Q6Om11bHRpcGxlIiwiU0VMRUNUOjpuYW1lIiwiU0VMRUNUOjpyZXF1aXJlZCIsIlNFTEVD +VDo6c2l6ZSIsIlNFTEVDVDo6dGFiaW5kZXgiLCJTT1VSQ0U6OnR5cGUiLCJUQUJMRTo6YWxpZ24iLCJU +QUJMRTo6Ymdjb2xvciIsIlRBQkxFOjpib3JkZXIiLCJUQUJMRTo6Y2VsbHBhZGRpbmciLCJUQUJMRTo6 +Y2VsbHNwYWNpbmciLCJUQUJMRTo6ZnJhbWUiLCJUQUJMRTo6cnVsZXMiLCJUQUJMRTo6c3VtbWFyeSIs +IlRBQkxFOjp3aWR0aCIsIlRCT0RZOjphbGlnbiIsIlRCT0RZOjpjaGFyIiwiVEJPRFk6OmNoYXJvZmYi +LCJUQk9EWTo6dmFsaWduIiwiVEQ6OmFiYnIiLCJURDo6YWxpZ24iLCJURDo6YXhpcyIsIlREOjpiZ2Nv +bG9yIiwiVEQ6OmNoYXIiLCJURDo6Y2hhcm9mZiIsIlREOjpjb2xzcGFuIiwiVEQ6OmhlYWRlcnMiLCJU +RDo6aGVpZ2h0IiwiVEQ6Om5vd3JhcCIsIlREOjpyb3dzcGFuIiwiVEQ6OnNjb3BlIiwiVEQ6OnZhbGln +biIsIlREOjp3aWR0aCIsIlRFWFRBUkVBOjphY2Nlc3NrZXkiLCJURVhUQVJFQTo6YXV0b2NvbXBsZXRl +IiwiVEVYVEFSRUE6OmNvbHMiLCJURVhUQVJFQTo6ZGlzYWJsZWQiLCJURVhUQVJFQTo6aW5wdXRtb2Rl +IiwiVEVYVEFSRUE6Om5hbWUiLCJURVhUQVJFQTo6cGxhY2Vob2xkZXIiLCJURVhUQVJFQTo6cmVhZG9u +bHkiLCJURVhUQVJFQTo6cmVxdWlyZWQiLCJURVhUQVJFQTo6cm93cyIsIlRFWFRBUkVBOjp0YWJpbmRl +eCIsIlRFWFRBUkVBOjp3cmFwIiwiVEZPT1Q6OmFsaWduIiwiVEZPT1Q6OmNoYXIiLCJURk9PVDo6Y2hh +cm9mZiIsIlRGT09UOjp2YWxpZ24iLCJUSDo6YWJiciIsIlRIOjphbGlnbiIsIlRIOjpheGlzIiwiVEg6 +OmJnY29sb3IiLCJUSDo6Y2hhciIsIlRIOjpjaGFyb2ZmIiwiVEg6OmNvbHNwYW4iLCJUSDo6aGVhZGVy +cyIsIlRIOjpoZWlnaHQiLCJUSDo6bm93cmFwIiwiVEg6OnJvd3NwYW4iLCJUSDo6c2NvcGUiLCJUSDo6 +dmFsaWduIiwiVEg6OndpZHRoIiwiVEhFQUQ6OmFsaWduIiwiVEhFQUQ6OmNoYXIiLCJUSEVBRDo6Y2hh +cm9mZiIsIlRIRUFEOjp2YWxpZ24iLCJUUjo6YWxpZ24iLCJUUjo6Ymdjb2xvciIsIlRSOjpjaGFyIiwi +VFI6OmNoYXJvZmYiLCJUUjo6dmFsaWduIiwiVFJBQ0s6OmRlZmF1bHQiLCJUUkFDSzo6a2luZCIsIlRS +QUNLOjpsYWJlbCIsIlRSQUNLOjpzcmNsYW5nIiwiVUw6OmNvbXBhY3QiLCJVTDo6dHlwZSIsIlZJREVP +Ojpjb250cm9scyIsIlZJREVPOjpoZWlnaHQiLCJWSURFTzo6bG9vcCIsIlZJREVPOjptZWRpYWdyb3Vw +IiwiVklERU86Om11dGVkIiwiVklERU86OnByZWxvYWQiLCJWSURFTzo6d2lkdGgiXSksdC5zKQpCLlZD +PUEuUUkocyhbMCwwLDY1NDkwLDQ1MDU1LDY1NTM1LDM0ODE1LDY1NTM0LDE4NDMxXSksdC50KQpCLm1L +PUEuUUkocyhbMCwwLDI2NjI0LDEwMjMsNjU1MzQsMjA0Nyw2NTUzNCwyMDQ3XSksdC50KQpCLmN3PW5l +dyBBLkdiKDAsImFscmVhZHlNaWdyYXRlZCIpCkIuZGM9bmV3IEEuR2IoMSwiaW5kZXRlcm1pbmF0ZSIp +CkIuV0Q9bmV3IEEuR2IoMiwibWlncmF0aW5nIikKQi5Yaj1uZXcgQS5HYigzLCJvcHRpbmdPdXQiKQpC +LldHPUEuUUkocyhbQi5jdyxCLmRjLEIuV0QsQi5Yal0pLEEuTjAoImpkPEdiPiIpKQpCLlNxPUEuUUko +cyhbIkhFQUQiLCJBUkVBIiwiQkFTRSIsIkJBU0VGT05UIiwiQlIiLCJDT0wiLCJDT0xHUk9VUCIsIkVN +QkVEIiwiRlJBTUUiLCJGUkFNRVNFVCIsIkhSIiwiSU1BR0UiLCJJTUciLCJJTlBVVCIsIklTSU5ERVgi +LCJMSU5LIiwiTUVUQSIsIlBBUkFNIiwiU09VUkNFIiwiU1RZTEUiLCJUSVRMRSIsIldCUiJdKSx0LnMp +CkIuZG49QS5RSShzKFtdKSxBLk4wKCJqZDxMTD4iKSkKQi54RD1BLlFJKHMoW10pLHQucykKQi5oVT1B +LlFJKHMoW10pLHQuYikKQi5BZD1uZXcgQS5INygwLCJhZGROdWxsYWJsZUhpbnQiKQpCLm5lPW5ldyBB +Lkg3KDEsImFkZE5vbk51bGxhYmxlSGludCIpCkIubXk9bmV3IEEuSDcoMiwiY2hhbmdlVG9OdWxsYWJs +ZUhpbnQiKQpCLnJ4PW5ldyBBLkg3KDMsImNoYW5nZVRvTm9uTnVsbGFibGVIaW50IikKQi53Vj1uZXcg +QS5INyg0LCJyZW1vdmVOdWxsYWJsZUhpbnQiKQpCLmZSPW5ldyBBLkg3KDUsInJlbW92ZU5vbk51bGxh +YmxlSGludCIpCkIuTW09QS5RSShzKFtCLkFkLEIubmUsQi5teSxCLnJ4LEIud1YsQi5mUl0pLEEuTjAo +ImpkPEg3PiIpKQpCLnRvPUEuUUkocyhbMCwwLDMyNzIyLDEyMjg3LDY1NTM0LDM0ODE1LDY1NTM0LDE4 +NDMxXSksdC50KQpCLkYzPUEuUUkocyhbMCwwLDI0NTc2LDEwMjMsNjU1MzQsMzQ4MTUsNjU1MzQsMTg0 +MzFdKSx0LnQpCkIuZWE9QS5RSShzKFswLDAsMzI3NTQsMTEyNjMsNjU1MzQsMzQ4MTUsNjU1MzQsMTg0 +MzFdKSx0LnQpCkIuWko9QS5RSShzKFswLDAsMzI3MjIsMTIyODcsNjU1MzUsMzQ4MTUsNjU1MzQsMTg0 +MzFdKSx0LnQpCkIuV2Q9QS5RSShzKFswLDAsNjU0OTAsMTIyODcsNjU1MzUsMzQ4MTUsNjU1MzQsMTg0 +MzFdKSx0LnQpCkIuUXg9QS5RSShzKFsiYmluZCIsImlmIiwicmVmIiwicmVwZWF0Iiwic3ludGF4Il0p +LHQucykKQi5CST1BLlFJKHMoWyJBOjpocmVmIiwiQVJFQTo6aHJlZiIsIkJMT0NLUVVPVEU6OmNpdGUi +LCJCT0RZOjpiYWNrZ3JvdW5kIiwiQ09NTUFORDo6aWNvbiIsIkRFTDo6Y2l0ZSIsIkZPUk06OmFjdGlv +biIsIklNRzo6c3JjIiwiSU5QVVQ6OnNyYyIsIklOUzo6Y2l0ZSIsIlE6OmNpdGUiLCJWSURFTzo6cG9z +dGVyIl0pLHQucykKQi5EeD1uZXcgQS5MUCgwLHt9LEIueEQsQS5OMCgiTFA8cVUsek08ajg+PiIpKQpC +LkNNPW5ldyBBLkxQKDAse30sQi54RCxBLk4wKCJMUDxxVSxxVT4iKSkKQi5pSD1BLlFJKHMoW10pLEEu +TjAoImpkPEdEPiIpKQpCLldPPW5ldyBBLkxQKDAse30sQi5pSCxBLk4wKCJMUDxHRCxAPiIpKQpCLlky +PW5ldyBBLk85KDAsImRpcmVjdG9yeSIpCkIucmY9bmV3IEEuTzkoMSwiZmlsZSIpCkIuVGU9bmV3IEEu +d3YoImNhbGwiKQpCLkx5PUEueHEoIk1oIikKQi5vRT1uZXcgQS5HWSghMSkKQi53UT1uZXcgQS5GeShu +dWxsLDIpfSkoKTsoZnVuY3Rpb24gc3RhdGljRmllbGRzKCl7JC56bT1udWxsCiQueHU9bnVsbAokLmkw +PW51bGwKJC5BbD1udWxsCiQuTkY9bnVsbAokLlRYPW51bGwKJC54Nz1udWxsCiQubnc9bnVsbAokLnZ2 +PW51bGwKJC5Cdj1udWxsCiQuUzY9bnVsbAokLms4PW51bGwKJC5tZz1udWxsCiQuVUQ9ITEKJC5YMz1C +Lk5VCiQuej1BLlFJKFtdLEEuTjAoImpkPE1oPiIpKQokLnhvPW51bGwKJC5CTz1udWxsCiQubHQ9bnVs +bAokLkVVPW51bGwKJC5vcj1BLkZsKHQuTix0LlkpCiQuSVI9bnVsbAokLkk2PW51bGwKJC5GZj1udWxs +fSkoKTsoZnVuY3Rpb24gbGF6eUluaXRpYWxpemVycygpe3ZhciBzPWh1bmtIZWxwZXJzLmxhenlGaW5h +bCxyPWh1bmtIZWxwZXJzLmxhenkKcygkLCJmYSIsInciLCgpPT5BLllnKCJfJGRhcnRfZGFydENsb3N1 +cmUiKSkKcygkLCJLcSIsIlNuIiwoKT0+QS5jTShBLlM3KHsKdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1 +cm4iJHJlY2VpdmVyJCJ9fSkpKQpzKCQsIlluIiwibHEiLCgpPT5BLmNNKEEuUzcoeyRtZXRob2QkOm51 +bGwsCnRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIiRyZWNlaXZlciQifX0pKSkKcygkLCJSMSIsIk45 +IiwoKT0+QS5jTShBLlM3KG51bGwpKSkKcygkLCJmTiIsImlJIiwoKT0+QS5jTShmdW5jdGlvbigpe3Zh +ciAkYXJndW1lbnRzRXhwciQ9IiRhcmd1bWVudHMkIgp0cnl7bnVsbC4kbWV0aG9kJCgkYXJndW1lbnRz +RXhwciQpfWNhdGNoKHEpe3JldHVybiBxLm1lc3NhZ2V9fSgpKSkKcygkLCJxaSIsIlVOIiwoKT0+QS5j +TShBLlM3KHZvaWQgMCkpKQpzKCQsInB2IiwiWmgiLCgpPT5BLmNNKGZ1bmN0aW9uKCl7dmFyICRhcmd1 +bWVudHNFeHByJD0iJGFyZ3VtZW50cyQiCnRyeXsodm9pZCAwKS4kbWV0aG9kJCgkYXJndW1lbnRzRXhw +ciQpfWNhdGNoKHEpe3JldHVybiBxLm1lc3NhZ2V9fSgpKSkKcygkLCJrcSIsInJOIiwoKT0+QS5jTShB +Lk1qKG51bGwpKSkKcygkLCJ0dCIsImMzIiwoKT0+QS5jTShmdW5jdGlvbigpe3RyeXtudWxsLiRtZXRo +b2QkfWNhdGNoKHEpe3JldHVybiBxLm1lc3NhZ2V9fSgpKSkKcygkLCJkdCIsIkhLIiwoKT0+QS5jTShB +Lk1qKHZvaWQgMCkpKQpzKCQsIkE3IiwicjEiLCgpPT5BLmNNKGZ1bmN0aW9uKCl7dHJ5eyh2b2lkIDAp +LiRtZXRob2QkfWNhdGNoKHEpe3JldHVybiBxLm1lc3NhZ2V9fSgpKSkKcygkLCJXYyIsInV0IiwoKT0+ +QS54ZygpKQpzKCQsImtoIiwicmYiLCgpPT5uZXcgQS54cigpLiQwKCkpCnMoJCwiZEgiLCJIRyIsKCk9 +Pm5ldyBBLk56KCkuJDAoKSkKcygkLCJoaiIsIlY3IiwoKT0+bmV3IEludDhBcnJheShBLlhGKEEuUUko +Wy0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0y +LC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0yLC0xLC0yLC0y +LC0yLC0yLC0yLDYyLC0yLDYyLC0yLDYzLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLC0yLC0y +LC0yLC0xLC0yLC0yLC0yLDAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTcs +MTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsLTIsLTIsLTIsLTIsNjMsLTIsMjYsMjcsMjgsMjksMzAsMzEs +MzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEs +LTIsLTIsLTIsLTIsLTJdLHQudCkpKSkKcygkLCJZZSIsIndRIiwoKT0+dHlwZW9mIHByb2Nlc3MhPSJ1 +bmRlZmluZWQiJiZPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocHJvY2Vzcyk9PSJbb2JqZWN0 +IHByb2Nlc3NdIiYmcHJvY2Vzcy5wbGF0Zm9ybT09IndpbjMyIikKcygkLCJtZiIsIno0IiwoKT0+QS5u +dSgiXltcXC1cXC4wLTlBLVpfYS16fl0qJCIpKQpzKCQsIlgwIiwidDgiLCgpPT5BLkNVKEIuTHkpKQpz +KCQsIk9RIiwidloiLCgpPT5BLktOKCkpCnMoJCwiU0MiLCJBTiIsKCk9PkEudE0oWyJBIiwiQUJCUiIs +IkFDUk9OWU0iLCJBRERSRVNTIiwiQVJFQSIsIkFSVElDTEUiLCJBU0lERSIsIkFVRElPIiwiQiIsIkJE +SSIsIkJETyIsIkJJRyIsIkJMT0NLUVVPVEUiLCJCUiIsIkJVVFRPTiIsIkNBTlZBUyIsIkNBUFRJT04i +LCJDRU5URVIiLCJDSVRFIiwiQ09ERSIsIkNPTCIsIkNPTEdST1VQIiwiQ09NTUFORCIsIkRBVEEiLCJE +QVRBTElTVCIsIkREIiwiREVMIiwiREVUQUlMUyIsIkRGTiIsIkRJUiIsIkRJViIsIkRMIiwiRFQiLCJF +TSIsIkZJRUxEU0VUIiwiRklHQ0FQVElPTiIsIkZJR1VSRSIsIkZPTlQiLCJGT09URVIiLCJGT1JNIiwi +SDEiLCJIMiIsIkgzIiwiSDQiLCJINSIsIkg2IiwiSEVBREVSIiwiSEdST1VQIiwiSFIiLCJJIiwiSUZS +QU1FIiwiSU1HIiwiSU5QVVQiLCJJTlMiLCJLQkQiLCJMQUJFTCIsIkxFR0VORCIsIkxJIiwiTUFQIiwi +TUFSSyIsIk1FTlUiLCJNRVRFUiIsIk5BViIsIk5PQlIiLCJPTCIsIk9QVEdST1VQIiwiT1BUSU9OIiwi +T1VUUFVUIiwiUCIsIlBSRSIsIlBST0dSRVNTIiwiUSIsIlMiLCJTQU1QIiwiU0VDVElPTiIsIlNFTEVD +VCIsIlNNQUxMIiwiU09VUkNFIiwiU1BBTiIsIlNUUklLRSIsIlNUUk9ORyIsIlNVQiIsIlNVTU1BUlki +LCJTVVAiLCJUQUJMRSIsIlRCT0RZIiwiVEQiLCJURVhUQVJFQSIsIlRGT09UIiwiVEgiLCJUSEVBRCIs +IlRJTUUiLCJUUiIsIlRSQUNLIiwiVFQiLCJVIiwiVUwiLCJWQVIiLCJWSURFTyIsIldCUiJdLHQuTikp +CnMoJCwiWDQiLCJoRyIsKCk9PkEubnUoIl5cXFMrJCIpKQpzKCQsIndPIiwib3ciLCgpPT5BLk5EKHNl +bGYpKQpzKCQsImt0IiwiUjgiLCgpPT5BLllnKCJfJGRhcnRfZGFydE9iamVjdCIpKQpzKCQsImZLIiwi +a0kiLCgpPT5mdW5jdGlvbiBEYXJ0T2JqZWN0KGEpe3RoaXMubz1hfSkKcygkLCJxdCIsInpCIiwoKT0+ +bmV3IEEubVEoKSkKcygkLCJDayIsIlVFIiwoKT0+QS5oSyhCLm9sLmdtVyhBLngzKCkpLmhyZWYpLmdo +WSgpLnEoMCwiYXV0aFRva2VuIikpCnMoJCwiaFQiLCJ5UCIsKCk9PkEuWnIoKS5xdWVyeVNlbGVjdG9y +KCIuZWRpdC1saXN0IC5wYW5lbC1jb250ZW50IikpCnMoJCwiYVUiLCJEWiIsKCk9PkEuWnIoKS5xdWVy +eVNlbGVjdG9yKCIuZWRpdC1saXN0IC5wYW5lbC1oZWFkaW5nIikpCnMoJCwiVzYiLCJoTCIsKCk9PkEu +WnIoKS5xdWVyeVNlbGVjdG9yKCIuZWRpdC1wYW5lbCAucGFuZWwtY29udGVudCIpKQpzKCQsIlRSIiwi +RFciLCgpPT5BLlpyKCkucXVlcnlTZWxlY3RvcigiZm9vdGVyIikpCnMoJCwiRVkiLCJmaSIsKCk9PkEu +WnIoKS5xdWVyeVNlbGVjdG9yKCJoZWFkZXIiKSkKcygkLCJiQSIsImMwIiwoKT0+QS5acigpLnF1ZXJ5 +U2VsZWN0b3IoIiNtaWdyYXRlLXVuaXQtc3RhdHVzLWljb24iKSkKcygkLCJ0MCIsImJOIiwoKT0+QS5a +cigpLnF1ZXJ5U2VsZWN0b3IoIiNtaWdyYXRlLXVuaXQtc3RhdHVzLWljb24tbGFiZWwiKSkKcygkLCJh +diIsIkQ5IiwoKT0+QS5acigpLnF1ZXJ5U2VsZWN0b3IoIiN1bml0LW5hbWUiKSkKcigkLCJmZSIsIktH +IiwoKT0+bmV3IEEuWEEoKSkKcygkLCJlbyIsIm5VIiwoKT0+bmV3IEEubEkoQS5OMCgiZnYiKS5hKCQu +SGsoKSkpKQpzKCQsInlyIiwiYkQiLCgpPT5uZXcgQS5PRihBLm51KCIvIiksQS5udSgiW14vXSQiKSxB +Lm51KCJeLyIpKSkKcygkLCJNayIsIktrIiwoKT0+bmV3IEEuSVYoQS5udSgiWy9cXFxcXSIpLEEubnUo +IlteL1xcXFxdJCIpLEEubnUoIl4oXFxcXFxcXFxbXlxcXFxdK1xcXFxbXlxcXFwvXSt8W2EtekEtWl06 +Wy9cXFxcXSkiKSxBLm51KCJeWy9cXFxcXSg/IVsvXFxcXF0pIikpKQpzKCQsImFrIiwiRWIiLCgpPT5u +ZXcgQS5ydShBLm51KCIvIiksQS5udSgiKF5bYS16QS1aXVstKy5hLXpBLVpcXGRdKjovL3xbXi9dKSQi +KSxBLm51KCJbYS16QS1aXVstKy5hLXpBLVpcXGRdKjovL1teL10qIiksQS5udSgiXi8iKSkpCnMoJCwi +bHMiLCJIayIsKCk9PkEuUmgoKSl9KSgpOyhmdW5jdGlvbiBuYXRpdmVTdXBwb3J0KCl7IWZ1bmN0aW9u +KCl7dmFyIHM9ZnVuY3Rpb24oYSl7dmFyIG09e30KbVthXT0xCnJldHVybiBPYmplY3Qua2V5cyhodW5r +SGVscGVycy5jb252ZXJ0VG9GYXN0T2JqZWN0KG0pKVswXX0Kdi5nZXRJc29sYXRlVGFnPWZ1bmN0aW9u +KGEpe3JldHVybiBzKCJfX19kYXJ0XyIrYSt2Lmlzb2xhdGVUYWcpfQp2YXIgcj0iX19fZGFydF9pc29s +YXRlX3RhZ3NfIgp2YXIgcT1PYmplY3Rbcl18fChPYmplY3Rbcl09T2JqZWN0LmNyZWF0ZShudWxsKSkK +dmFyIHA9Il9aeFl4WCIKZm9yKHZhciBvPTA7O28rKyl7dmFyIG49cyhwKyJfIitvKyJfIikKaWYoIShu +IGluIHEpKXtxW25dPTEKdi5pc29sYXRlVGFnPW4KYnJlYWt9fXYuZGlzcGF0Y2hQcm9wZXJ0eU5hbWU9 +di5nZXRJc29sYXRlVGFnKCJkaXNwYXRjaF9yZWNvcmQiKX0oKQpodW5rSGVscGVycy5zZXRPclVwZGF0 +ZUludGVyY2VwdG9yc0J5VGFnKHtET01FcnJvcjpKLk1GLE1lZGlhRXJyb3I6Si5NRixOYXZpZ2F0b3I6 +Si5NRixOYXZpZ2F0b3JDb25jdXJyZW50SGFyZHdhcmU6Si5NRixOYXZpZ2F0b3JVc2VyTWVkaWFFcnJv +cjpKLk1GLE92ZXJjb25zdHJhaW5lZEVycm9yOkouTUYsUG9zaXRpb25FcnJvcjpKLk1GLEdlb2xvY2F0 +aW9uUG9zaXRpb25FcnJvcjpKLk1GLFJhbmdlOkouTUYsRGF0YVZpZXc6QS5FVCxBcnJheUJ1ZmZlclZp +ZXc6QS5FVCxGbG9hdDMyQXJyYXk6QS5EZyxGbG9hdDY0QXJyYXk6QS5EZyxJbnQxNkFycmF5OkEueGos +SW50MzJBcnJheTpBLmRFLEludDhBcnJheTpBLlpBLFVpbnQxNkFycmF5OkEuZFQsVWludDMyQXJyYXk6 +QS5QcSxVaW50OENsYW1wZWRBcnJheTpBLmVFLENhbnZhc1BpeGVsQXJyYXk6QS5lRSxVaW50OEFycmF5 +OkEuVjYsSFRNTEF1ZGlvRWxlbWVudDpBLnFFLEhUTUxCUkVsZW1lbnQ6QS5xRSxIVE1MQnV0dG9uRWxl +bWVudDpBLnFFLEhUTUxDYW52YXNFbGVtZW50OkEucUUsSFRNTENvbnRlbnRFbGVtZW50OkEucUUsSFRN +TERMaXN0RWxlbWVudDpBLnFFLEhUTUxEYXRhRWxlbWVudDpBLnFFLEhUTUxEYXRhTGlzdEVsZW1lbnQ6 +QS5xRSxIVE1MRGV0YWlsc0VsZW1lbnQ6QS5xRSxIVE1MRGlhbG9nRWxlbWVudDpBLnFFLEhUTUxEaXZF +bGVtZW50OkEucUUsSFRNTEVtYmVkRWxlbWVudDpBLnFFLEhUTUxGaWVsZFNldEVsZW1lbnQ6QS5xRSxI +VE1MSFJFbGVtZW50OkEucUUsSFRNTEhlYWRFbGVtZW50OkEucUUsSFRNTEhlYWRpbmdFbGVtZW50OkEu +cUUsSFRNTEh0bWxFbGVtZW50OkEucUUsSFRNTElGcmFtZUVsZW1lbnQ6QS5xRSxIVE1MSW1hZ2VFbGVt +ZW50OkEucUUsSFRNTElucHV0RWxlbWVudDpBLnFFLEhUTUxMSUVsZW1lbnQ6QS5xRSxIVE1MTGFiZWxF +bGVtZW50OkEucUUsSFRNTExlZ2VuZEVsZW1lbnQ6QS5xRSxIVE1MTGlua0VsZW1lbnQ6QS5xRSxIVE1M +TWFwRWxlbWVudDpBLnFFLEhUTUxNZWRpYUVsZW1lbnQ6QS5xRSxIVE1MTWVudUVsZW1lbnQ6QS5xRSxI +VE1MTWV0YUVsZW1lbnQ6QS5xRSxIVE1MTWV0ZXJFbGVtZW50OkEucUUsSFRNTE1vZEVsZW1lbnQ6QS5x +RSxIVE1MT0xpc3RFbGVtZW50OkEucUUsSFRNTE9iamVjdEVsZW1lbnQ6QS5xRSxIVE1MT3B0R3JvdXBF +bGVtZW50OkEucUUsSFRNTE9wdGlvbkVsZW1lbnQ6QS5xRSxIVE1MT3V0cHV0RWxlbWVudDpBLnFFLEhU +TUxQYXJhbUVsZW1lbnQ6QS5xRSxIVE1MUGljdHVyZUVsZW1lbnQ6QS5xRSxIVE1MUHJlRWxlbWVudDpB +LnFFLEhUTUxQcm9ncmVzc0VsZW1lbnQ6QS5xRSxIVE1MUXVvdGVFbGVtZW50OkEucUUsSFRNTFNjcmlw +dEVsZW1lbnQ6QS5xRSxIVE1MU2hhZG93RWxlbWVudDpBLnFFLEhUTUxTbG90RWxlbWVudDpBLnFFLEhU +TUxTb3VyY2VFbGVtZW50OkEucUUsSFRNTFNwYW5FbGVtZW50OkEucUUsSFRNTFN0eWxlRWxlbWVudDpB +LnFFLEhUTUxUYWJsZUNhcHRpb25FbGVtZW50OkEucUUsSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6QS5xRSxI +VE1MVGFibGVEYXRhQ2VsbEVsZW1lbnQ6QS5xRSxIVE1MVGFibGVIZWFkZXJDZWxsRWxlbWVudDpBLnFF +LEhUTUxUYWJsZUNvbEVsZW1lbnQ6QS5xRSxIVE1MVGV4dEFyZWFFbGVtZW50OkEucUUsSFRNTFRpbWVF +bGVtZW50OkEucUUsSFRNTFRpdGxlRWxlbWVudDpBLnFFLEhUTUxUcmFja0VsZW1lbnQ6QS5xRSxIVE1M +VUxpc3RFbGVtZW50OkEucUUsSFRNTFVua25vd25FbGVtZW50OkEucUUsSFRNTFZpZGVvRWxlbWVudDpB +LnFFLEhUTUxEaXJlY3RvcnlFbGVtZW50OkEucUUsSFRNTEZvbnRFbGVtZW50OkEucUUsSFRNTEZyYW1l +RWxlbWVudDpBLnFFLEhUTUxGcmFtZVNldEVsZW1lbnQ6QS5xRSxIVE1MTWFycXVlZUVsZW1lbnQ6QS5x +RSxIVE1MRWxlbWVudDpBLnFFLEhUTUxBbmNob3JFbGVtZW50OkEuR2gsSFRNTEFyZWFFbGVtZW50OkEu +ZlksSFRNTEJhc2VFbGVtZW50OkEuclosQmxvYjpBLkF6LEhUTUxCb2R5RWxlbWVudDpBLlFQLENEQVRB +U2VjdGlvbjpBLm54LENoYXJhY3RlckRhdGE6QS5ueCxDb21tZW50OkEubngsUHJvY2Vzc2luZ0luc3Ry +dWN0aW9uOkEubngsVGV4dDpBLm54LENTU1N0eWxlRGVjbGFyYXRpb246QS5vSixNU1N0eWxlQ1NTUHJv +cGVydGllczpBLm9KLENTUzJQcm9wZXJ0aWVzOkEub0osWE1MRG9jdW1lbnQ6QS5RRixEb2N1bWVudDpB +LlFGLERPTUV4Y2VwdGlvbjpBLk5oLERPTUltcGxlbWVudGF0aW9uOkEuYWUsRE9NUmVjdFJlYWRPbmx5 +OkEuSUIsRE9NVG9rZW5MaXN0OkEubjcsRWxlbWVudDpBLmN2LEFib3J0UGF5bWVudEV2ZW50OkEuZWEs +QW5pbWF0aW9uRXZlbnQ6QS5lYSxBbmltYXRpb25QbGF5YmFja0V2ZW50OkEuZWEsQXBwbGljYXRpb25D +YWNoZUVycm9yRXZlbnQ6QS5lYSxCYWNrZ3JvdW5kRmV0Y2hDbGlja0V2ZW50OkEuZWEsQmFja2dyb3Vu +ZEZldGNoRXZlbnQ6QS5lYSxCYWNrZ3JvdW5kRmV0Y2hGYWlsRXZlbnQ6QS5lYSxCYWNrZ3JvdW5kRmV0 +Y2hlZEV2ZW50OkEuZWEsQmVmb3JlSW5zdGFsbFByb21wdEV2ZW50OkEuZWEsQmVmb3JlVW5sb2FkRXZl +bnQ6QS5lYSxCbG9iRXZlbnQ6QS5lYSxDYW5NYWtlUGF5bWVudEV2ZW50OkEuZWEsQ2xpcGJvYXJkRXZl +bnQ6QS5lYSxDbG9zZUV2ZW50OkEuZWEsQ3VzdG9tRXZlbnQ6QS5lYSxEZXZpY2VNb3Rpb25FdmVudDpB +LmVhLERldmljZU9yaWVudGF0aW9uRXZlbnQ6QS5lYSxFcnJvckV2ZW50OkEuZWEsRXh0ZW5kYWJsZUV2 +ZW50OkEuZWEsRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudDpBLmVhLEZldGNoRXZlbnQ6QS5lYSxGb250RmFj +ZVNldExvYWRFdmVudDpBLmVhLEZvcmVpZ25GZXRjaEV2ZW50OkEuZWEsR2FtZXBhZEV2ZW50OkEuZWEs +SGFzaENoYW5nZUV2ZW50OkEuZWEsSW5zdGFsbEV2ZW50OkEuZWEsTWVkaWFFbmNyeXB0ZWRFdmVudDpB +LmVhLE1lZGlhS2V5TWVzc2FnZUV2ZW50OkEuZWEsTWVkaWFRdWVyeUxpc3RFdmVudDpBLmVhLE1lZGlh +U3RyZWFtRXZlbnQ6QS5lYSxNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6QS5lYSxNZXNzYWdlRXZlbnQ6QS5l +YSxNSURJQ29ubmVjdGlvbkV2ZW50OkEuZWEsTUlESU1lc3NhZ2VFdmVudDpBLmVhLE11dGF0aW9uRXZl +bnQ6QS5lYSxOb3RpZmljYXRpb25FdmVudDpBLmVhLFBhZ2VUcmFuc2l0aW9uRXZlbnQ6QS5lYSxQYXlt +ZW50UmVxdWVzdEV2ZW50OkEuZWEsUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudDpBLmVhLFBvcFN0YXRl +RXZlbnQ6QS5lYSxQcmVzZW50YXRpb25Db25uZWN0aW9uQXZhaWxhYmxlRXZlbnQ6QS5lYSxQcmVzZW50 +YXRpb25Db25uZWN0aW9uQ2xvc2VFdmVudDpBLmVhLFByb21pc2VSZWplY3Rpb25FdmVudDpBLmVhLFB1 +c2hFdmVudDpBLmVhLFJUQ0RhdGFDaGFubmVsRXZlbnQ6QS5lYSxSVENEVE1GVG9uZUNoYW5nZUV2ZW50 +OkEuZWEsUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudDpBLmVhLFJUQ1RyYWNrRXZlbnQ6QS5lYSxTZWN1 +cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OkEuZWEsU2Vuc29yRXJyb3JFdmVudDpBLmVhLFNwZWVjaFJl +Y29nbml0aW9uRXJyb3I6QS5lYSxTcGVlY2hSZWNvZ25pdGlvbkV2ZW50OkEuZWEsU3BlZWNoU3ludGhl +c2lzRXZlbnQ6QS5lYSxTdG9yYWdlRXZlbnQ6QS5lYSxTeW5jRXZlbnQ6QS5lYSxUcmFja0V2ZW50OkEu +ZWEsVHJhbnNpdGlvbkV2ZW50OkEuZWEsV2ViS2l0VHJhbnNpdGlvbkV2ZW50OkEuZWEsVlJEZXZpY2VF +dmVudDpBLmVhLFZSRGlzcGxheUV2ZW50OkEuZWEsVlJTZXNzaW9uRXZlbnQ6QS5lYSxNb2pvSW50ZXJm +YWNlUmVxdWVzdEV2ZW50OkEuZWEsVVNCQ29ubmVjdGlvbkV2ZW50OkEuZWEsSURCVmVyc2lvbkNoYW5n +ZUV2ZW50OkEuZWEsQXVkaW9Qcm9jZXNzaW5nRXZlbnQ6QS5lYSxPZmZsaW5lQXVkaW9Db21wbGV0aW9u +RXZlbnQ6QS5lYSxXZWJHTENvbnRleHRFdmVudDpBLmVhLEV2ZW50OkEuZWEsSW5wdXRFdmVudDpBLmVh +LFN1Ym1pdEV2ZW50OkEuZWEsRXZlbnRUYXJnZXQ6QS5EMCxGaWxlOkEuaEgsSFRNTEZvcm1FbGVtZW50 +OkEuaDQsSGlzdG9yeTpBLmJyLEhUTUxEb2N1bWVudDpBLlZiLFhNTEh0dHBSZXF1ZXN0OkEuZkosWE1M +SHR0cFJlcXVlc3RFdmVudFRhcmdldDpBLndhLEltYWdlRGF0YTpBLlNnLExvY2F0aW9uOkEudTgsTW91 +c2VFdmVudDpBLkFqLERyYWdFdmVudDpBLkFqLFBvaW50ZXJFdmVudDpBLkFqLFdoZWVsRXZlbnQ6QS5B +aixEb2N1bWVudEZyYWdtZW50OkEuS1YsU2hhZG93Um9vdDpBLktWLERvY3VtZW50VHlwZTpBLktWLE5v +ZGU6QS5LVixOb2RlTGlzdDpBLkJILFJhZGlvTm9kZUxpc3Q6QS5CSCxIVE1MUGFyYWdyYXBoRWxlbWVu +dDpBLlNOLFByb2dyZXNzRXZlbnQ6QS5ldyxSZXNvdXJjZVByb2dyZXNzRXZlbnQ6QS5ldyxIVE1MU2Vs +ZWN0RWxlbWVudDpBLmxwLEhUTUxUYWJsZUVsZW1lbnQ6QS5UYixIVE1MVGFibGVSb3dFbGVtZW50OkEu +SXYsSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6QS5XUCxIVE1MVGVtcGxhdGVFbGVtZW50OkEueVksQ29t +cG9zaXRpb25FdmVudDpBLnc2LEZvY3VzRXZlbnQ6QS53NixLZXlib2FyZEV2ZW50OkEudzYsVGV4dEV2 +ZW50OkEudzYsVG91Y2hFdmVudDpBLnc2LFVJRXZlbnQ6QS53NixXaW5kb3c6QS5LNSxET01XaW5kb3c6 +QS5LNSxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTpBLkNtLFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w +ZTpBLkNtLFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOkEuQ20sV29ya2VyR2xvYmFsU2NvcGU6QS5DbSxB +dHRyOkEuQ1EsQ2xpZW50UmVjdDpBLnc0LERPTVJlY3Q6QS53NCxOYW1lZE5vZGVNYXA6QS5yaCxNb3pO +YW1lZEF0dHJNYXA6QS5yaCxJREJLZXlSYW5nZTpBLmhGLFNWR1NjcmlwdEVsZW1lbnQ6QS5uZCxTVkdB +RWxlbWVudDpBLmhpLFNWR0FuaW1hdGVFbGVtZW50OkEuaGksU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6 +QS5oaSxTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDpBLmhpLFNWR0FuaW1hdGlvbkVsZW1lbnQ6QS5o +aSxTVkdDaXJjbGVFbGVtZW50OkEuaGksU1ZHQ2xpcFBhdGhFbGVtZW50OkEuaGksU1ZHRGVmc0VsZW1l +bnQ6QS5oaSxTVkdEZXNjRWxlbWVudDpBLmhpLFNWR0Rpc2NhcmRFbGVtZW50OkEuaGksU1ZHRWxsaXBz +ZUVsZW1lbnQ6QS5oaSxTVkdGRUJsZW5kRWxlbWVudDpBLmhpLFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50 +OkEuaGksU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6QS5oaSxTVkdGRUNvbXBvc2l0ZUVsZW1l +bnQ6QS5oaSxTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDpBLmhpLFNWR0ZFRGlmZnVzZUxpZ2h0aW5n +RWxlbWVudDpBLmhpLFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDpBLmhpLFNWR0ZFRGlzdGFudExp +Z2h0RWxlbWVudDpBLmhpLFNWR0ZFRmxvb2RFbGVtZW50OkEuaGksU1ZHRkVGdW5jQUVsZW1lbnQ6QS5o +aSxTVkdGRUZ1bmNCRWxlbWVudDpBLmhpLFNWR0ZFRnVuY0dFbGVtZW50OkEuaGksU1ZHRkVGdW5jUkVs +ZW1lbnQ6QS5oaSxTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6QS5oaSxTVkdGRUltYWdlRWxlbWVudDpB +LmhpLFNWR0ZFTWVyZ2VFbGVtZW50OkEuaGksU1ZHRkVNZXJnZU5vZGVFbGVtZW50OkEuaGksU1ZHRkVN +b3JwaG9sb2d5RWxlbWVudDpBLmhpLFNWR0ZFT2Zmc2V0RWxlbWVudDpBLmhpLFNWR0ZFUG9pbnRMaWdo +dEVsZW1lbnQ6QS5oaSxTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OkEuaGksU1ZHRkVTcG90TGln +aHRFbGVtZW50OkEuaGksU1ZHRkVUaWxlRWxlbWVudDpBLmhpLFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6 +QS5oaSxTVkdGaWx0ZXJFbGVtZW50OkEuaGksU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6QS5oaSxTVkdH +RWxlbWVudDpBLmhpLFNWR0dlb21ldHJ5RWxlbWVudDpBLmhpLFNWR0dyYXBoaWNzRWxlbWVudDpBLmhp +LFNWR0ltYWdlRWxlbWVudDpBLmhpLFNWR0xpbmVFbGVtZW50OkEuaGksU1ZHTGluZWFyR3JhZGllbnRF +bGVtZW50OkEuaGksU1ZHTWFya2VyRWxlbWVudDpBLmhpLFNWR01hc2tFbGVtZW50OkEuaGksU1ZHTWV0 +YWRhdGFFbGVtZW50OkEuaGksU1ZHUGF0aEVsZW1lbnQ6QS5oaSxTVkdQYXR0ZXJuRWxlbWVudDpBLmhp +LFNWR1BvbHlnb25FbGVtZW50OkEuaGksU1ZHUG9seWxpbmVFbGVtZW50OkEuaGksU1ZHUmFkaWFsR3Jh +ZGllbnRFbGVtZW50OkEuaGksU1ZHUmVjdEVsZW1lbnQ6QS5oaSxTVkdTZXRFbGVtZW50OkEuaGksU1ZH +U3RvcEVsZW1lbnQ6QS5oaSxTVkdTdHlsZUVsZW1lbnQ6QS5oaSxTVkdTVkdFbGVtZW50OkEuaGksU1ZH +U3dpdGNoRWxlbWVudDpBLmhpLFNWR1N5bWJvbEVsZW1lbnQ6QS5oaSxTVkdUU3BhbkVsZW1lbnQ6QS5o +aSxTVkdUZXh0Q29udGVudEVsZW1lbnQ6QS5oaSxTVkdUZXh0RWxlbWVudDpBLmhpLFNWR1RleHRQYXRo +RWxlbWVudDpBLmhpLFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6QS5oaSxTVkdUaXRsZUVsZW1lbnQ6 +QS5oaSxTVkdVc2VFbGVtZW50OkEuaGksU1ZHVmlld0VsZW1lbnQ6QS5oaSxTVkdHcmFkaWVudEVsZW1l +bnQ6QS5oaSxTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDpBLmhpLFNWR0ZFRHJvcFNo +YWRvd0VsZW1lbnQ6QS5oaSxTVkdNUGF0aEVsZW1lbnQ6QS5oaSxTVkdFbGVtZW50OkEuaGl9KQpodW5r +SGVscGVycy5zZXRPclVwZGF0ZUxlYWZUYWdzKHtET01FcnJvcjp0cnVlLE1lZGlhRXJyb3I6dHJ1ZSxO +YXZpZ2F0b3I6dHJ1ZSxOYXZpZ2F0b3JDb25jdXJyZW50SGFyZHdhcmU6dHJ1ZSxOYXZpZ2F0b3JVc2Vy +TWVkaWFFcnJvcjp0cnVlLE92ZXJjb25zdHJhaW5lZEVycm9yOnRydWUsUG9zaXRpb25FcnJvcjp0cnVl +LEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjp0cnVlLFJhbmdlOnRydWUsRGF0YVZpZXc6dHJ1ZSxBcnJh +eUJ1ZmZlclZpZXc6ZmFsc2UsRmxvYXQzMkFycmF5OnRydWUsRmxvYXQ2NEFycmF5OnRydWUsSW50MTZB +cnJheTp0cnVlLEludDMyQXJyYXk6dHJ1ZSxJbnQ4QXJyYXk6dHJ1ZSxVaW50MTZBcnJheTp0cnVlLFVp +bnQzMkFycmF5OnRydWUsVWludDhDbGFtcGVkQXJyYXk6dHJ1ZSxDYW52YXNQaXhlbEFycmF5OnRydWUs +VWludDhBcnJheTpmYWxzZSxIVE1MQXVkaW9FbGVtZW50OnRydWUsSFRNTEJSRWxlbWVudDp0cnVlLEhU +TUxCdXR0b25FbGVtZW50OnRydWUsSFRNTENhbnZhc0VsZW1lbnQ6dHJ1ZSxIVE1MQ29udGVudEVsZW1l +bnQ6dHJ1ZSxIVE1MRExpc3RFbGVtZW50OnRydWUsSFRNTERhdGFFbGVtZW50OnRydWUsSFRNTERhdGFM +aXN0RWxlbWVudDp0cnVlLEhUTUxEZXRhaWxzRWxlbWVudDp0cnVlLEhUTUxEaWFsb2dFbGVtZW50OnRy +dWUsSFRNTERpdkVsZW1lbnQ6dHJ1ZSxIVE1MRW1iZWRFbGVtZW50OnRydWUsSFRNTEZpZWxkU2V0RWxl +bWVudDp0cnVlLEhUTUxIUkVsZW1lbnQ6dHJ1ZSxIVE1MSGVhZEVsZW1lbnQ6dHJ1ZSxIVE1MSGVhZGlu +Z0VsZW1lbnQ6dHJ1ZSxIVE1MSHRtbEVsZW1lbnQ6dHJ1ZSxIVE1MSUZyYW1lRWxlbWVudDp0cnVlLEhU +TUxJbWFnZUVsZW1lbnQ6dHJ1ZSxIVE1MSW5wdXRFbGVtZW50OnRydWUsSFRNTExJRWxlbWVudDp0cnVl +LEhUTUxMYWJlbEVsZW1lbnQ6dHJ1ZSxIVE1MTGVnZW5kRWxlbWVudDp0cnVlLEhUTUxMaW5rRWxlbWVu +dDp0cnVlLEhUTUxNYXBFbGVtZW50OnRydWUsSFRNTE1lZGlhRWxlbWVudDp0cnVlLEhUTUxNZW51RWxl +bWVudDp0cnVlLEhUTUxNZXRhRWxlbWVudDp0cnVlLEhUTUxNZXRlckVsZW1lbnQ6dHJ1ZSxIVE1MTW9k +RWxlbWVudDp0cnVlLEhUTUxPTGlzdEVsZW1lbnQ6dHJ1ZSxIVE1MT2JqZWN0RWxlbWVudDp0cnVlLEhU +TUxPcHRHcm91cEVsZW1lbnQ6dHJ1ZSxIVE1MT3B0aW9uRWxlbWVudDp0cnVlLEhUTUxPdXRwdXRFbGVt +ZW50OnRydWUsSFRNTFBhcmFtRWxlbWVudDp0cnVlLEhUTUxQaWN0dXJlRWxlbWVudDp0cnVlLEhUTUxQ +cmVFbGVtZW50OnRydWUsSFRNTFByb2dyZXNzRWxlbWVudDp0cnVlLEhUTUxRdW90ZUVsZW1lbnQ6dHJ1 +ZSxIVE1MU2NyaXB0RWxlbWVudDp0cnVlLEhUTUxTaGFkb3dFbGVtZW50OnRydWUsSFRNTFNsb3RFbGVt +ZW50OnRydWUsSFRNTFNvdXJjZUVsZW1lbnQ6dHJ1ZSxIVE1MU3BhbkVsZW1lbnQ6dHJ1ZSxIVE1MU3R5 +bGVFbGVtZW50OnRydWUsSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6dHJ1ZSxIVE1MVGFibGVDZWxsRWxl +bWVudDp0cnVlLEhUTUxUYWJsZURhdGFDZWxsRWxlbWVudDp0cnVlLEhUTUxUYWJsZUhlYWRlckNlbGxF +bGVtZW50OnRydWUsSFRNTFRhYmxlQ29sRWxlbWVudDp0cnVlLEhUTUxUZXh0QXJlYUVsZW1lbnQ6dHJ1 +ZSxIVE1MVGltZUVsZW1lbnQ6dHJ1ZSxIVE1MVGl0bGVFbGVtZW50OnRydWUsSFRNTFRyYWNrRWxlbWVu +dDp0cnVlLEhUTUxVTGlzdEVsZW1lbnQ6dHJ1ZSxIVE1MVW5rbm93bkVsZW1lbnQ6dHJ1ZSxIVE1MVmlk +ZW9FbGVtZW50OnRydWUsSFRNTERpcmVjdG9yeUVsZW1lbnQ6dHJ1ZSxIVE1MRm9udEVsZW1lbnQ6dHJ1 +ZSxIVE1MRnJhbWVFbGVtZW50OnRydWUsSFRNTEZyYW1lU2V0RWxlbWVudDp0cnVlLEhUTUxNYXJxdWVl +RWxlbWVudDp0cnVlLEhUTUxFbGVtZW50OmZhbHNlLEhUTUxBbmNob3JFbGVtZW50OnRydWUsSFRNTEFy +ZWFFbGVtZW50OnRydWUsSFRNTEJhc2VFbGVtZW50OnRydWUsQmxvYjpmYWxzZSxIVE1MQm9keUVsZW1l +bnQ6dHJ1ZSxDREFUQVNlY3Rpb246dHJ1ZSxDaGFyYWN0ZXJEYXRhOnRydWUsQ29tbWVudDp0cnVlLFBy +b2Nlc3NpbmdJbnN0cnVjdGlvbjp0cnVlLFRleHQ6dHJ1ZSxDU1NTdHlsZURlY2xhcmF0aW9uOnRydWUs +TVNTdHlsZUNTU1Byb3BlcnRpZXM6dHJ1ZSxDU1MyUHJvcGVydGllczp0cnVlLFhNTERvY3VtZW50OnRy +dWUsRG9jdW1lbnQ6ZmFsc2UsRE9NRXhjZXB0aW9uOnRydWUsRE9NSW1wbGVtZW50YXRpb246dHJ1ZSxE +T01SZWN0UmVhZE9ubHk6ZmFsc2UsRE9NVG9rZW5MaXN0OnRydWUsRWxlbWVudDpmYWxzZSxBYm9ydFBh +eW1lbnRFdmVudDp0cnVlLEFuaW1hdGlvbkV2ZW50OnRydWUsQW5pbWF0aW9uUGxheWJhY2tFdmVudDp0 +cnVlLEFwcGxpY2F0aW9uQ2FjaGVFcnJvckV2ZW50OnRydWUsQmFja2dyb3VuZEZldGNoQ2xpY2tFdmVu +dDp0cnVlLEJhY2tncm91bmRGZXRjaEV2ZW50OnRydWUsQmFja2dyb3VuZEZldGNoRmFpbEV2ZW50OnRy +dWUsQmFja2dyb3VuZEZldGNoZWRFdmVudDp0cnVlLEJlZm9yZUluc3RhbGxQcm9tcHRFdmVudDp0cnVl +LEJlZm9yZVVubG9hZEV2ZW50OnRydWUsQmxvYkV2ZW50OnRydWUsQ2FuTWFrZVBheW1lbnRFdmVudDp0 +cnVlLENsaXBib2FyZEV2ZW50OnRydWUsQ2xvc2VFdmVudDp0cnVlLEN1c3RvbUV2ZW50OnRydWUsRGV2 +aWNlTW90aW9uRXZlbnQ6dHJ1ZSxEZXZpY2VPcmllbnRhdGlvbkV2ZW50OnRydWUsRXJyb3JFdmVudDp0 +cnVlLEV4dGVuZGFibGVFdmVudDp0cnVlLEV4dGVuZGFibGVNZXNzYWdlRXZlbnQ6dHJ1ZSxGZXRjaEV2 +ZW50OnRydWUsRm9udEZhY2VTZXRMb2FkRXZlbnQ6dHJ1ZSxGb3JlaWduRmV0Y2hFdmVudDp0cnVlLEdh +bWVwYWRFdmVudDp0cnVlLEhhc2hDaGFuZ2VFdmVudDp0cnVlLEluc3RhbGxFdmVudDp0cnVlLE1lZGlh +RW5jcnlwdGVkRXZlbnQ6dHJ1ZSxNZWRpYUtleU1lc3NhZ2VFdmVudDp0cnVlLE1lZGlhUXVlcnlMaXN0 +RXZlbnQ6dHJ1ZSxNZWRpYVN0cmVhbUV2ZW50OnRydWUsTWVkaWFTdHJlYW1UcmFja0V2ZW50OnRydWUs +TWVzc2FnZUV2ZW50OnRydWUsTUlESUNvbm5lY3Rpb25FdmVudDp0cnVlLE1JRElNZXNzYWdlRXZlbnQ6 +dHJ1ZSxNdXRhdGlvbkV2ZW50OnRydWUsTm90aWZpY2F0aW9uRXZlbnQ6dHJ1ZSxQYWdlVHJhbnNpdGlv +bkV2ZW50OnRydWUsUGF5bWVudFJlcXVlc3RFdmVudDp0cnVlLFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZl +bnQ6dHJ1ZSxQb3BTdGF0ZUV2ZW50OnRydWUsUHJlc2VudGF0aW9uQ29ubmVjdGlvbkF2YWlsYWJsZUV2 +ZW50OnRydWUsUHJlc2VudGF0aW9uQ29ubmVjdGlvbkNsb3NlRXZlbnQ6dHJ1ZSxQcm9taXNlUmVqZWN0 +aW9uRXZlbnQ6dHJ1ZSxQdXNoRXZlbnQ6dHJ1ZSxSVENEYXRhQ2hhbm5lbEV2ZW50OnRydWUsUlRDRFRN +RlRvbmVDaGFuZ2VFdmVudDp0cnVlLFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQ6dHJ1ZSxSVENUcmFj +a0V2ZW50OnRydWUsU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDp0cnVlLFNlbnNvckVycm9yRXZl +bnQ6dHJ1ZSxTcGVlY2hSZWNvZ25pdGlvbkVycm9yOnRydWUsU3BlZWNoUmVjb2duaXRpb25FdmVudDp0 +cnVlLFNwZWVjaFN5bnRoZXNpc0V2ZW50OnRydWUsU3RvcmFnZUV2ZW50OnRydWUsU3luY0V2ZW50OnRy +dWUsVHJhY2tFdmVudDp0cnVlLFRyYW5zaXRpb25FdmVudDp0cnVlLFdlYktpdFRyYW5zaXRpb25FdmVu +dDp0cnVlLFZSRGV2aWNlRXZlbnQ6dHJ1ZSxWUkRpc3BsYXlFdmVudDp0cnVlLFZSU2Vzc2lvbkV2ZW50 +OnRydWUsTW9qb0ludGVyZmFjZVJlcXVlc3RFdmVudDp0cnVlLFVTQkNvbm5lY3Rpb25FdmVudDp0cnVl +LElEQlZlcnNpb25DaGFuZ2VFdmVudDp0cnVlLEF1ZGlvUHJvY2Vzc2luZ0V2ZW50OnRydWUsT2ZmbGlu +ZUF1ZGlvQ29tcGxldGlvbkV2ZW50OnRydWUsV2ViR0xDb250ZXh0RXZlbnQ6dHJ1ZSxFdmVudDpmYWxz +ZSxJbnB1dEV2ZW50OmZhbHNlLFN1Ym1pdEV2ZW50OmZhbHNlLEV2ZW50VGFyZ2V0OmZhbHNlLEZpbGU6 +dHJ1ZSxIVE1MRm9ybUVsZW1lbnQ6dHJ1ZSxIaXN0b3J5OnRydWUsSFRNTERvY3VtZW50OnRydWUsWE1M +SHR0cFJlcXVlc3Q6dHJ1ZSxYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0OmZhbHNlLEltYWdlRGF0YTp0 +cnVlLExvY2F0aW9uOnRydWUsTW91c2VFdmVudDp0cnVlLERyYWdFdmVudDp0cnVlLFBvaW50ZXJFdmVu +dDp0cnVlLFdoZWVsRXZlbnQ6dHJ1ZSxEb2N1bWVudEZyYWdtZW50OnRydWUsU2hhZG93Um9vdDp0cnVl +LERvY3VtZW50VHlwZTp0cnVlLE5vZGU6ZmFsc2UsTm9kZUxpc3Q6dHJ1ZSxSYWRpb05vZGVMaXN0OnRy +dWUsSFRNTFBhcmFncmFwaEVsZW1lbnQ6dHJ1ZSxQcm9ncmVzc0V2ZW50OnRydWUsUmVzb3VyY2VQcm9n +cmVzc0V2ZW50OnRydWUsSFRNTFNlbGVjdEVsZW1lbnQ6dHJ1ZSxIVE1MVGFibGVFbGVtZW50OnRydWUs +SFRNTFRhYmxlUm93RWxlbWVudDp0cnVlLEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OnRydWUsSFRNTFRl +bXBsYXRlRWxlbWVudDp0cnVlLENvbXBvc2l0aW9uRXZlbnQ6dHJ1ZSxGb2N1c0V2ZW50OnRydWUsS2V5 +Ym9hcmRFdmVudDp0cnVlLFRleHRFdmVudDp0cnVlLFRvdWNoRXZlbnQ6dHJ1ZSxVSUV2ZW50OmZhbHNl +LFdpbmRvdzp0cnVlLERPTVdpbmRvdzp0cnVlLERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOnRydWUs +U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOnRydWUsU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6dHJ1ZSxX +b3JrZXJHbG9iYWxTY29wZTp0cnVlLEF0dHI6dHJ1ZSxDbGllbnRSZWN0OnRydWUsRE9NUmVjdDp0cnVl +LE5hbWVkTm9kZU1hcDp0cnVlLE1vek5hbWVkQXR0ck1hcDp0cnVlLElEQktleVJhbmdlOnRydWUsU1ZH +U2NyaXB0RWxlbWVudDp0cnVlLFNWR0FFbGVtZW50OnRydWUsU1ZHQW5pbWF0ZUVsZW1lbnQ6dHJ1ZSxT +VkdBbmltYXRlTW90aW9uRWxlbWVudDp0cnVlLFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OnRydWUs +U1ZHQW5pbWF0aW9uRWxlbWVudDp0cnVlLFNWR0NpcmNsZUVsZW1lbnQ6dHJ1ZSxTVkdDbGlwUGF0aEVs +ZW1lbnQ6dHJ1ZSxTVkdEZWZzRWxlbWVudDp0cnVlLFNWR0Rlc2NFbGVtZW50OnRydWUsU1ZHRGlzY2Fy +ZEVsZW1lbnQ6dHJ1ZSxTVkdFbGxpcHNlRWxlbWVudDp0cnVlLFNWR0ZFQmxlbmRFbGVtZW50OnRydWUs +U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6dHJ1ZSxTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDp0 +cnVlLFNWR0ZFQ29tcG9zaXRlRWxlbWVudDp0cnVlLFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OnRy +dWUsU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OnRydWUsU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt +ZW50OnRydWUsU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50OnRydWUsU1ZHRkVGbG9vZEVsZW1lbnQ6dHJ1 +ZSxTVkdGRUZ1bmNBRWxlbWVudDp0cnVlLFNWR0ZFRnVuY0JFbGVtZW50OnRydWUsU1ZHRkVGdW5jR0Vs +ZW1lbnQ6dHJ1ZSxTVkdGRUZ1bmNSRWxlbWVudDp0cnVlLFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDp0 +cnVlLFNWR0ZFSW1hZ2VFbGVtZW50OnRydWUsU1ZHRkVNZXJnZUVsZW1lbnQ6dHJ1ZSxTVkdGRU1lcmdl +Tm9kZUVsZW1lbnQ6dHJ1ZSxTVkdGRU1vcnBob2xvZ3lFbGVtZW50OnRydWUsU1ZHRkVPZmZzZXRFbGVt +ZW50OnRydWUsU1ZHRkVQb2ludExpZ2h0RWxlbWVudDp0cnVlLFNWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs +ZW1lbnQ6dHJ1ZSxTVkdGRVNwb3RMaWdodEVsZW1lbnQ6dHJ1ZSxTVkdGRVRpbGVFbGVtZW50OnRydWUs +U1ZHRkVUdXJidWxlbmNlRWxlbWVudDp0cnVlLFNWR0ZpbHRlckVsZW1lbnQ6dHJ1ZSxTVkdGb3JlaWdu +T2JqZWN0RWxlbWVudDp0cnVlLFNWR0dFbGVtZW50OnRydWUsU1ZHR2VvbWV0cnlFbGVtZW50OnRydWUs +U1ZHR3JhcGhpY3NFbGVtZW50OnRydWUsU1ZHSW1hZ2VFbGVtZW50OnRydWUsU1ZHTGluZUVsZW1lbnQ6 +dHJ1ZSxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6dHJ1ZSxTVkdNYXJrZXJFbGVtZW50OnRydWUsU1ZH +TWFza0VsZW1lbnQ6dHJ1ZSxTVkdNZXRhZGF0YUVsZW1lbnQ6dHJ1ZSxTVkdQYXRoRWxlbWVudDp0cnVl +LFNWR1BhdHRlcm5FbGVtZW50OnRydWUsU1ZHUG9seWdvbkVsZW1lbnQ6dHJ1ZSxTVkdQb2x5bGluZUVs +ZW1lbnQ6dHJ1ZSxTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6dHJ1ZSxTVkdSZWN0RWxlbWVudDp0cnVl +LFNWR1NldEVsZW1lbnQ6dHJ1ZSxTVkdTdG9wRWxlbWVudDp0cnVlLFNWR1N0eWxlRWxlbWVudDp0cnVl +LFNWR1NWR0VsZW1lbnQ6dHJ1ZSxTVkdTd2l0Y2hFbGVtZW50OnRydWUsU1ZHU3ltYm9sRWxlbWVudDp0 +cnVlLFNWR1RTcGFuRWxlbWVudDp0cnVlLFNWR1RleHRDb250ZW50RWxlbWVudDp0cnVlLFNWR1RleHRF +bGVtZW50OnRydWUsU1ZHVGV4dFBhdGhFbGVtZW50OnRydWUsU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu +dDp0cnVlLFNWR1RpdGxlRWxlbWVudDp0cnVlLFNWR1VzZUVsZW1lbnQ6dHJ1ZSxTVkdWaWV3RWxlbWVu +dDp0cnVlLFNWR0dyYWRpZW50RWxlbWVudDp0cnVlLFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25F +bGVtZW50OnRydWUsU1ZHRkVEcm9wU2hhZG93RWxlbWVudDp0cnVlLFNWR01QYXRoRWxlbWVudDp0cnVl +LFNWR0VsZW1lbnQ6ZmFsc2V9KQpBLkxaLiRuYXRpdmVTdXBlcmNsYXNzVGFnPSJBcnJheUJ1ZmZlclZp +ZXciCkEuUkcuJG5hdGl2ZVN1cGVyY2xhc3NUYWc9IkFycmF5QnVmZmVyVmlldyIKQS5WUC4kbmF0aXZl +U3VwZXJjbGFzc1RhZz0iQXJyYXlCdWZmZXJWaWV3IgpBLkRnLiRuYXRpdmVTdXBlcmNsYXNzVGFnPSJB +cnJheUJ1ZmZlclZpZXciCkEuV0IuJG5hdGl2ZVN1cGVyY2xhc3NUYWc9IkFycmF5QnVmZmVyVmlldyIK +QS5aRy4kbmF0aXZlU3VwZXJjbGFzc1RhZz0iQXJyYXlCdWZmZXJWaWV3IgpBLlBnLiRuYXRpdmVTdXBl +cmNsYXNzVGFnPSJBcnJheUJ1ZmZlclZpZXcifSkoKQpjb252ZXJ0QWxsVG9GYXN0T2JqZWN0KHcpCmNv +bnZlcnRUb0Zhc3RPYmplY3QoJCk7KGZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBkb2N1bWVudD09PSJ1bmRl +ZmluZWQiKXthKG51bGwpCnJldHVybn1pZih0eXBlb2YgZG9jdW1lbnQuY3VycmVudFNjcmlwdCE9InVu +ZGVmaW5lZCIpe2EoZG9jdW1lbnQuY3VycmVudFNjcmlwdCkKcmV0dXJufXZhciBzPWRvY3VtZW50LnNj +cmlwdHMKZnVuY3Rpb24gb25Mb2FkKGIpe2Zvcih2YXIgcT0wO3E8cy5sZW5ndGg7KytxKXNbcV0ucmVt +b3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsb25Mb2FkLGZhbHNlKQphKGIudGFyZ2V0KX1mb3IodmFyIHI9 +MDtyPHMubGVuZ3RoOysrcilzW3JdLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLG9uTG9hZCxmYWxzZSl9 +KShmdW5jdGlvbihhKXt2LmN1cnJlbnRTY3JpcHQ9YQp2YXIgcz1BLklxCmlmKHR5cGVvZiBkYXJ0TWFp +blJ1bm5lcj09PSJmdW5jdGlvbiIpZGFydE1haW5SdW5uZXIocyxbXSkKZWxzZSBzKFtdKX0pfSkoKQov +LyMgc291cmNlTWFwcGluZ1VSTD1taWdyYXRpb24uanMubWFwCg== '''; diff --git a/pkg/nnbd_migration/lib/src/front_end/web/migration.dart b/pkg/nnbd_migration/lib/src/front_end/web/migration.dart index ae8511e9605..340062c02dc 100644 --- a/pkg/nnbd_migration/lib/src/front_end/web/migration.dart +++ b/pkg/nnbd_migration/lib/src/front_end/web/migration.dart @@ -289,7 +289,8 @@ check its output for a fresh URL, and use that URL to perform your migration. Uri getGitHubErrorUri( String description, Object? exception, Object? stackTrace) => Uri.https('github.com', 'dart-lang/sdk/issues/new', { - 'title': 'Customer-reported issue with NNBD migration tool: $description', + 'title': 'Customer-reported issue with null safety migration tool: ' + '$description', 'labels': 'area-analyzer,analyzer-nnbd-migration,type-bug', 'body': ''' $description @@ -319,7 +320,7 @@ $stackTrace /// pre-populating some labels and a body template. Uri getGitHubProblemUri() => Uri.https('github.com', 'dart-lang/sdk/issues/new', { - 'title': 'Customer-reported issue with NNBD migration tool', + 'title': 'Customer-reported issue with null safety migration tool', 'labels': 'area-analyzer,analyzer-nnbd-migration,type-bug', 'body': ''' #### Steps to reproduce diff --git a/pkg/nnbd_migration/lib/src/messages.dart b/pkg/nnbd_migration/lib/src/messages.dart index 4202a477144..065d8f89407 100644 --- a/pkg/nnbd_migration/lib/src/messages.dart +++ b/pkg/nnbd_migration/lib/src/messages.dart @@ -7,8 +7,9 @@ import 'package:nnbd_migration/migration_cli.dart'; const String migratedAlready = 'All sources appear to be already migrated. Nothing to do.'; const String nnbdExperimentOff = - 'Analyzer seems to need the nnbd experiment on in the SDK.'; -const String sdkNnbdOff = 'Analysis seems to have an SDK without NNBD enabled.'; + 'Analyzer seems to need the null safety experiment on in the SDK.'; +const String sdkNnbdOff = + 'Analysis seems to have an SDK without null safety enabled.'; const String sdkPathEnvironmentVariableSet = r'Note: $SDK_PATH environment variable is set and may point to outdated ' 'dart:core sources'; diff --git a/pkg/nnbd_migration/lib/src/preview/preview_site.dart b/pkg/nnbd_migration/lib/src/preview/preview_site.dart index 6ac9ec8c293..1ac4052e57b 100644 --- a/pkg/nnbd_migration/lib/src/preview/preview_site.dart +++ b/pkg/nnbd_migration/lib/src/preview/preview_site.dart @@ -320,7 +320,7 @@ class PreviewSite extends Site /// NNBD migration. PreviewSite( this.migrationState, this.rerunFunction, this.applyHook, this.logger) - : super('NNBD Migration Preview') { + : super('Null Safety Migration Preview') { reset(); }